SharedOS API v0.1.0-alpha.0


SharedOS API / @aicoo/sharedos-testkit

@aicoo/sharedos-testkit

Deterministic in-memory fixtures and recording providers for SharedOS tests.

npm install --save-dev @aicoo/sharedos-testkit@next

This package is for tests, examples, and isolated experimental worlds. Its in-memory stores are not durable or multi-instance-safe production storage. InMemoryToolNamespaceSettingsStore can exercise the namespace control plane without becoming a production settings backend.

SharedOS is currently an 0.x prerelease.

Classes

InMemoryAuditSink

Defined in: testkit/src/index.ts:26

Implements

Constructors

Constructor

new InMemoryAuditSink(): InMemoryAuditSink

Returns

InMemoryAuditSink

Properties

PropertyModifierTypeDefault valueDefined in
<a id="property-events"></a> eventsreadonlyAuditEvent[][]testkit/src/index.ts:27

Methods

record()

record(event): Promise<void>>

Defined in: testkit/src/index.ts:29

Parameters
ParameterType
eventAuditEvent
Returns

Promise<void>

Implementation of

AuditSink.record


InMemoryMessageTransport

Defined in: testkit/src/index.ts:34

Implements

Constructors

Constructor

new InMemoryMessageTransport(): InMemoryMessageTransport

Returns

InMemoryMessageTransport

Properties

PropertyModifierTypeDefault valueDefined in
<a id="property-deliveries"></a> deliveriesreadonlyobject[][]testkit/src/index.ts:35

Methods

deliver()

deliver(context, envelope): Promise<{ messageId: string; metadata?: JsonObject; status: "accepted"; timestamp: string; } | { messageId: string; metadata?: JsonObject; status: "delivered"; timestamp: string; } | { error: { code: string; details?: JsonObject; message: string; retryable?: boolean; }; messageId: string; metadata?: JsonObject; status: "denied"; timestamp: string; } | { error: { code: string; details?: JsonObject; message: string; retryable?: boolean; }; messageId: string; metadata?: JsonObject; status: "failed"; timestamp: string; }>

Defined in: testkit/src/index.ts:37

Parameters
ParameterType
context{ actor: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; authority: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; enabledToolNamespaces: string[]; grants: object[]; namespaceId: string; now: string; owner: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; purpose: string; traceId: string; }
context.actor{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }
context.authority{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }
context.enabledToolNamespacesstring[]
context.grantsobject[]
context.namespaceIdstring
context.nowstring
context.owner{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }
context.purposestring
context.traceIdstring
envelope{ createdAt: string; id: string; intent: string; payload: JsonValue; provenance?: { metadata?: JsonObject; parentIds: string[]; source: string; }; purpose: string; receiver: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; replyTo?: string; sender: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; traceId: string; version: "1"; }
envelope.createdAtstring
envelope.idstring
envelope.intentstring
envelope.payloadJsonValue
envelope.provenance?{ metadata?: JsonObject; parentIds: string[]; source: string; }
envelope.provenance.metadata?JsonObject
envelope.provenance.parentIdsstring[]
envelope.provenance.sourcestring
envelope.purposestring
envelope.receiver{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }
envelope.replyTo?string
envelope.sender{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }
envelope.traceIdstring
envelope.version"1"
Returns

Promise<{ messageId: string; metadata?: JsonObject; status: "accepted"; timestamp: string; } | { messageId: string; metadata?: JsonObject; status: "delivered"; timestamp: string; } | { error: { code: string; details?: JsonObject; message: string; retryable?: boolean; }; messageId: string; metadata?: JsonObject; status: "denied"; timestamp: string; } | { error: { code: string; details?: JsonObject; message: string; retryable?: boolean; }; messageId: string; metadata?: JsonObject; status: "failed"; timestamp: string; }>

Implementation of

MessageTransport.deliver


InMemoryResourceProvider

Defined in: testkit/src/index.ts:80

A host-neutral recording provider for examples, conformance tests, and isolated experiment worlds.

Implements

Constructors

Constructor

new InMemoryResourceProvider(namespace, handler?): InMemoryResourceProvider

Defined in: testkit/src/index.ts:85

Parameters
ParameterTypeDefault value
namespacestringundefined
handlerResourceHandlerechoResourceOperation
Returns

InMemoryResourceProvider

Properties

PropertyModifierTypeDefault valueDefined in
<a id="property-namespace"></a> namespacereadonlystringundefinedtestkit/src/index.ts:81
<a id="property-operations"></a> operationsreadonlyobject[][]testkit/src/index.ts:82

Methods

invoke()

invoke(operation): Promise<{ completedAt: string; metadata?: JsonObject; operationId: string; output: JsonValue; status: "succeeded"; } | { completedAt: string; error: { code: string; details?: JsonObject; message: string; retryable?: boolean; }; metadata?: JsonObject; operationId: string; status: "denied"; } | { completedAt: string; error: { code: string; details?: JsonObject; message: string; retryable?: boolean; }; metadata?: JsonObject; operationId: string; status: "failed"; }>

Defined in: testkit/src/index.ts:90

Parameters
ParameterType
operation{ action: string; context: { actor: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; authority: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; enabledToolNamespaces: string[]; grants: object[]; namespaceId: string; now: string; owner: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; purpose: string; traceId: string; }; input?: JsonValue; metadata?: JsonObject; operationId: string; resource: { namespace: string; owner?: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; path: string[]; }; }
operation.actionstring
operation.context{ actor: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; authority: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; enabledToolNamespaces: string[]; grants: object[]; namespaceId: string; now: string; owner: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; purpose: string; traceId: string; }
operation.context.actor{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }
operation.context.authority{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }
operation.context.enabledToolNamespacesstring[]
operation.context.grantsobject[]
operation.context.namespaceIdstring
operation.context.nowstring
operation.context.owner{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }
operation.context.purposestring
operation.context.traceIdstring
operation.input?JsonValue
operation.metadata?JsonObject
operation.operationIdstring
operation.resource{ namespace: string; owner?: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; path: string[]; }
operation.resource.namespacestring
operation.resource.owner?{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }
operation.resource.pathstring[]
Returns

Promise<{ completedAt: string; metadata?: JsonObject; operationId: string; output: JsonValue; status: "succeeded"; } | { completedAt: string; error: { code: string; details?: JsonObject; message: string; retryable?: boolean; }; metadata?: JsonObject; operationId: string; status: "denied"; } | { completedAt: string; error: { code: string; details?: JsonObject; message: string; retryable?: boolean; }; metadata?: JsonObject; operationId: string; status: "failed"; }>

Implementation of

ResourceProvider.invoke


InMemoryToolNamespaceSettingsStore

Defined in: testkit/src/index.ts:51

Namespace settings fixture keyed by the access-context namespace/world.

Implements

Constructors

Constructor

new InMemoryToolNamespaceSettingsStore(initial?): InMemoryToolNamespaceSettingsStore

Defined in: testkit/src/index.ts:54

Parameters
ParameterType
initialReadonly<Record<string, readonly ToolNamespace[]>>
Returns

InMemoryToolNamespaceSettingsStore

Methods

applyUpdate()

applyUpdate(context, update): Promise<readonly string[]>

Defined in: testkit/src/index.ts:60

Parameters
ParameterType
context{ actor: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; authority: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; enabledToolNamespaces: string[]; grants: object[]; namespaceId: string; now: string; owner: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }; purpose: string; traceId: string; }
context.actor{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }
context.authority{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }
context.enabledToolNamespacesstring[]
context.grantsobject[]
context.namespaceIdstring
context.nowstring
context.owner{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }
context.purposestring
context.traceIdstring
update{ disable?: string[]; enable?: string[]; }
update.disable?string[]
update.enable?string[]
Returns

Promise<readonly string[]>

Implementation of

ToolNamespaceSettingsStore.applyUpdate

get()

get(namespaceId): readonly string[]

Defined in: testkit/src/index.ts:72

Parameters
ParameterType
namespaceIdstring
Returns

readonly string[]

Interfaces

TestContextOptions

Defined in: testkit/src/index.ts:116

Properties

PropertyModifierTypeDefined in
<a id="property-actor"></a> actor?readonly{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }testkit/src/index.ts:117
<a id="property-authority"></a> authority?readonly{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }testkit/src/index.ts:118
<a id="property-enabledtoolnamespaces"></a> enabledToolNamespaces?readonlyreadonly string[]testkit/src/index.ts:121
<a id="property-grants"></a> grants?readonlyreadonly object[]testkit/src/index.ts:124
<a id="property-namespaceid"></a> namespaceId?readonlystringtestkit/src/index.ts:120
<a id="property-now"></a> now?readonlystringtestkit/src/index.ts:125
<a id="property-owner"></a> owner?readonly{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }testkit/src/index.ts:119
<a id="property-purpose"></a> purpose?readonlystringtestkit/src/index.ts:122
<a id="property-traceid"></a> traceId?readonlystringtestkit/src/index.ts:123

TestGrantOptions

Defined in: testkit/src/index.ts:143

Properties

PropertyModifierTypeDefined in
<a id="property-capabilities"></a> capabilitiesreadonlyreadonly object[]testkit/src/index.ts:148
<a id="property-expiresat"></a> expiresAt?readonlystringtestkit/src/index.ts:151
<a id="property-id"></a> id?readonlystringtestkit/src/index.ts:144
<a id="property-issuedat"></a> issuedAt?readonlystringtestkit/src/index.ts:150
<a id="property-issuer"></a> issuer?readonly{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }testkit/src/index.ts:147
<a id="property-namespaceid-1"></a> namespaceId?readonlystringtestkit/src/index.ts:145
<a id="property-purposes"></a> purposes?readonlyreadonly string[]testkit/src/index.ts:149
<a id="property-subject"></a> subject?readonly{ kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }testkit/src/index.ts:146

TestKernel

Defined in: testkit/src/index.ts:96

Properties

PropertyModifierTypeDefined in
<a id="property-audit"></a> auditreadonlyInMemoryAuditSinktestkit/src/index.ts:98
<a id="property-kernel"></a> kernelreadonlySharedOSKerneltestkit/src/index.ts:97
<a id="property-messages"></a> messagesreadonlyInMemoryMessageTransporttestkit/src/index.ts:99

Type Aliases

ResourceHandler

ResourceHandler = (operation) => Promise<ResourceResult>>

Defined in: testkit/src/index.ts:77

Parameters

ParameterType
operationResourceOperation

Returns

Promise<ResourceResult>

Functions

createTestContext()

createTestContext(options?): object

Defined in: testkit/src/index.ts:128

Parameters

ParameterType
optionsTestContextOptions

Returns

object

actor

actor: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }

authority

authority: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }

enabledToolNamespaces

enabledToolNamespaces: string[]

grants

grants: object[]

namespaceId

namespaceId: string

now

now: string

owner

owner: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }

purpose

purpose: string

traceId

traceId: string


createTestGrant()

createTestGrant(options): object

Defined in: testkit/src/index.ts:154

Parameters

ParameterType
optionsTestGrantOptions

Returns

object

capabilities

capabilities: object[]

constraints

constraints: object

constraints.delegationDepth?

optional delegationDepth?: number

constraints.expiresAt?

optional expiresAt?: string

constraints.maxUses?

optional maxUses?: number

constraints.notBefore?

optional notBefore?: string

constraints.purposes?

optional purposes?: string[]

id

id: string

issuedAt

issuedAt: string

issuer

issuer: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }

metadata?

optional metadata?: JsonObject

namespaceId

namespaceId: string

revokedAt?

optional revokedAt?: string

subject

subject: { kind: "human"; userId: string; } | { agentId: string; kind: "agent"; } | { conversationId: string; kind: "group"; } | { kind: "service"; serviceId: string; }


createTestKernel()

createTestKernel(): TestKernel

Defined in: testkit/src/index.ts:102

Returns

TestKernel