| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- export * as SessionSchema from "./schema"
- import { Schema } from "effect"
- import { Location } from "../location"
- import { ModelV2 } from "../model"
- import { ProjectV2 } from "../project"
- import { externalID, type ExternalID, RelativePath, optionalOmitUndefined, withStatics } from "../schema"
- import { Identifier } from "../util/identifier"
- import { V2Schema } from "../v2-schema"
- import { AgentV2 } from "../agent"
- export const ID = Schema.String.check(Schema.isStartsWith("ses")).pipe(
- Schema.brand("SessionID"),
- withStatics((schema) => {
- const create = () => schema.make("ses_" + Identifier.descending())
- return {
- create,
- descending: (id?: string) => (id === undefined ? create() : schema.make(id)),
- fromExternal: (input: ExternalID) => schema.make(externalID("ses", input)),
- }
- }),
- )
- export type ID = typeof ID.Type
- export class Info extends Schema.Class<Info>("SessionV2.Info")({
- id: ID,
- parentID: ID.pipe(optionalOmitUndefined),
- projectID: ProjectV2.ID,
- agent: AgentV2.ID.pipe(Schema.optional),
- model: ModelV2.Ref.pipe(Schema.optional),
- cost: Schema.Finite,
- tokens: Schema.Struct({
- input: Schema.Finite,
- output: Schema.Finite,
- reasoning: Schema.Finite,
- cache: Schema.Struct({
- read: Schema.Finite,
- write: Schema.Finite,
- }),
- }),
- time: Schema.Struct({
- created: V2Schema.DateTimeUtcFromMillis,
- updated: V2Schema.DateTimeUtcFromMillis,
- archived: V2Schema.DateTimeUtcFromMillis.pipe(Schema.optional),
- }),
- title: Schema.String,
- location: Location.Ref,
- subpath: RelativePath.pipe(Schema.optional),
- }) {}
|