NylorunDocsBeta
BuildRunDeployReferenceMore

Errors and contracts

Shared JSON contracts, manifests, diagnostics, and machine-readable errors.

@nylorun/agents/define · beta
import { isHarnessError } from "@nylorun/agents/define";
import { run, bindingFromAgent } from "@nylorun/harness/run";

try {
  await run({
    binding: bindingFromAgent(agent.build()),
    input: "Run the task",
    onModelCall: adapter,
  });
} catch (error) {
  if (isHarnessError(error)) console.error(error.code, error.details);
}

HarnessError and JSON contracts are exported from @nylorun/agents/define. They are not @nylorun/harness root exports. Recording failures reject run(). They do not emit a session-only observation path. SDK HTTP failures use RuntimeError from @nylorun/agents.

Shared JSON contracts

Access: @nylorun/agents/defineJsonPrimitive, JsonValue, JsonObject, DeferredOutcome, ContextItem, Tripwire

TypeShape or fieldsDescription
JsonPrimitivestring, number, boolean, or nullJSON scalar.
JsonValuePrimitive, object, or readonly JSON-value arrayJSON-only boundary.
JsonObjectString-keyed JSON valuesConfiguration, context, metadata.
DeferredOutcomekind: "deferred", optional tokenDefers a tool operation for host-managed settlement.
Patchinstructions?, capabilities?, tools?, state?, block?, active?Closed-world before-hook result. No model.
Decisiontext?, deny?, approve?, retry?, block?After-step result.
TurnDecisiontext?, output?, retry?, block?After-turn result.

Diagnostics and manifests

Access: @nylorun/agentsAgentManifest

Access: @nylorun/agents/defineBuildDiagnostic, CapabilityManifest

TypeNameRequiredDescription
BuildDiagnosticcodeYesProgrammatic invalid-build code.
BuildDiagnosticmessageYesHuman-readable diagnostic.
AgentManifestmanifestSchemaVersionYesPublished value is 4.
AgentManifestidYesPublic built-agent identity.
AgentManifestname, description, outputSchemaNoCatalog and output contract.
CapabilityManifestid, typeYestype is "agent" or "agent-plugin".
CapabilityManifesthooksNo{ at, scope }[] (before/after × turn/step).

Two different version numbers exist: manifest 4 versus core DEFINITION_SCHEMA_VERSION 2 (definition-hash metadata). Do not document the latter as the public manifest field.

Observability contracts

Access: @nylorun/agents/defineObserver, ObserveEvent

run({ onEvent }) wraps those observations in ExecutionEvent (@nylorun/harness). They are not Runtime SSE types. See Events.

HarnessError

Access: @nylorun/agents/defineHarnessError, HarnessErrorCode, isHarnessError

NameTypeRequiredDescription
codeHarnessErrorCodeYesStable machine-readable error code.
messagestringYesHuman-readable explanation.
detailsHarnessErrorDetailsYesFrozen scalar details map.
isHarnessError(error)unknownYesNarrows an unknown error to HarnessError.

Use code rather than matching an error message.

Error familyCodes
Agentagent.build-failed, agent.lifecycle-sealed
Executionexecution.invalid-state, execution.invalid-input, execution.incompatible, execution.record-failed
Contextcontext.invalid-item, context.invalid-item-type, context.invalid-order, context.invalid-reason, context.invalid-slot
Configurationconfiguration.duplicate-tool-name, configuration.invalid, configuration.invalid-instructions, configuration.invalid-order, configuration.invalid-reason, configuration.invalid-slot, configuration.invalid-tools, configuration.model-selection-conflict
Interactioninteraction.invalid, interaction.missing-resume, interaction.uncorrelated-resume
Input and outputinput.invalid-content, output.invalid, output.invalid-schema
JSONjson.invalid-data, json.invalid-object
Modelmodel.candidate-missing, model.adapter-invalid-options, model.adapter-invalid-response, model.invalid-candidate, model.invalid-directive, model.unsupported-content, model.unsupported-output-schema
Responseresponse.invalid-replacement
Tooltool.invalid, tool.invalid-arguments, tool.invalid-output, tool.invalid-name, tool.invalid-schema, tool.invalid-tool-result, tool.unregistered, tool.invalid-binding
Sandboxsandbox.runtime-only (stub execute), sandbox.unsupported, sandbox.unknown-option (SandboxError)

Connected execution also uses tool.invalid-input on failed argument validation. That code is an executor outcome, not this HarnessError table.

A delegated agent's ctx.ask, ctx.approve, ctx.sleep, or ctx.waitFor fails as a tool result with delegation.interaction-unsupported. Nested delegation fails the parent build with a named diagnostic. See Subagents.

On this page