mirror of
https://github.com/anomalyco/opencode.git
synced 2026-07-24 20:25:36 -04:00
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
export * as InstructionEntry from "./instruction-entry.js"
|
|
|
|
import { Schema } from "effect"
|
|
|
|
/**
|
|
* Slash-free client-facing key for one API-managed instruction entry. The server
|
|
* derives the namespaced Instructions key as `api/<key>`, keeping the
|
|
* `api/*` namespace enforced by construction.
|
|
*/
|
|
export const Key = Schema.String.check(Schema.isPattern(/^[a-z0-9][a-z0-9._-]*$/)).annotate({
|
|
identifier: "InstructionEntry.Key",
|
|
description: "Instruction entry key (lowercase alphanumerics plus . _ -)",
|
|
})
|
|
export type Key = typeof Key.Type
|
|
|
|
export const Info = Schema.Struct({
|
|
key: Key,
|
|
value: Schema.Json.annotate({ description: "JSON value attached to the session's instructions" }),
|
|
}).annotate({ identifier: "InstructionEntry.Info" })
|
|
export interface Info extends Schema.Schema.Type<typeof Info> {}
|
|
|
|
export const MaxValueBytes = 8 * 1024
|
|
|
|
export class ValueTooLargeError extends Schema.TaggedErrorClass<ValueTooLargeError>()(
|
|
"InstructionEntryValueTooLargeError",
|
|
{
|
|
actualBytes: Schema.Int,
|
|
maxBytes: Schema.Int,
|
|
message: Schema.String,
|
|
},
|
|
{ httpApiStatus: 413 },
|
|
) {}
|