{"version":3,"file":"mode.mjs","names":[],"sources":["../../src/schemas/mode.ts"],"sourcesContent":["import type { Context } from '@deepseek-ai/cordis';\nimport { type Static, Type } from 'typebox';\nimport type { DoomExtensionContext } from './config.ts';\n\nexport const MINOR_MODE_CATALOG_SOURCE = '@agimon-ai/doompi/mode-catalog';\nexport const DOOM_MINOR_MODE_CATALOG_SERVICE = 'doom/minor-mode-catalog';\nexport const MINOR_MODE_TOOL_NAME = 'minor_mode';\nexport const MINOR_MODE_ACTION_TIMEOUT_MS = 30_000;\nexport const MINOR_MODE_MAX_RECORDS = 128;\nexport const MINOR_MODE_MAX_ACTIONS = 16;\nexport const MINOR_MODE_MAX_PARAMETERS = 16;\nexport const MINOR_MODE_MAX_ENUM_CHOICES = 32;\nexport const MINOR_MODE_MAX_ARGUMENT_LENGTH = 4_096;\n\nconst MAX_SOURCE_LENGTH = 128;\nconst MAX_ID_LENGTH = 128;\nconst MAX_GENERATION_LENGTH = 256;\nconst MAX_LABEL_LENGTH = 48;\nconst MAX_DESCRIPTION_LENGTH = 240;\nconst MAX_DETAIL_LENGTH = 160;\n\nexport const MINOR_MODE_ERROR_CODE = {\n  actionAborted: 'MINOR_MODE_ACTION_ABORTED',\n  actionDisabled: 'MINOR_MODE_ACTION_DISABLED',\n  actionNotFound: 'MINOR_MODE_ACTION_NOT_FOUND',\n  actionTimeout: 'MINOR_MODE_ACTION_TIMEOUT',\n  invalidArguments: 'MINOR_MODE_INVALID_ARGUMENTS',\n  modeBusy: 'MINOR_MODE_BUSY',\n  modeNotFound: 'MINOR_MODE_NOT_FOUND',\n  ownerFailed: 'MINOR_MODE_OWNER_FAILED',\n  registrationConflict: 'MINOR_MODE_REGISTRATION_CONFLICT',\n  sessionReplaced: 'MINOR_MODE_SESSION_REPLACED',\n  staleRegistration: 'MINOR_MODE_STALE_REGISTRATION',\n  unsupportedContext: 'MINOR_MODE_UNSUPPORTED_CONTEXT',\n} as const;\n\nexport const MinorModeSourceSchema = Type.String({\n  minLength: 1,\n  maxLength: MAX_SOURCE_LENGTH,\n  pattern: '^[A-Za-z0-9@][A-Za-z0-9@/._:-]*$',\n});\nexport const MinorModeIdSchema = Type.String({\n  minLength: 1,\n  maxLength: MAX_ID_LENGTH,\n  pattern: '^[a-z0-9][a-z0-9._:-]*$',\n});\nexport const MinorModeParameterNameSchema = Type.String({\n  minLength: 1,\n  maxLength: MAX_ID_LENGTH,\n  pattern: '^[a-z][A-Za-z0-9._:-]*$',\n});\nconst GenerationSchema = Type.String({ minLength: 1, maxLength: MAX_GENERATION_LENGTH });\nconst LabelSchema = Type.String({ minLength: 1, maxLength: MAX_LABEL_LENGTH });\nconst DescriptionSchema = Type.String({ minLength: 1, maxLength: MAX_DESCRIPTION_LENGTH });\nconst OperationIdSchema = Type.String({ minLength: 1, maxLength: MAX_GENERATION_LENGTH });\n\nexport const ModeTextColorSchema = Type.Union([\n  Type.Literal('accent'),\n  Type.Literal('warning'),\n  Type.Literal('mdHeading'),\n  Type.Literal('muted'),\n  Type.Literal('dim'),\n]);\nexport type ModeTextColor = Static<typeof ModeTextColorSchema>;\n\nexport const MinorModeSessionKindSchema = Type.Union([Type.Literal('tui'), Type.Literal('headless')]);\nexport type MinorModeSessionKind = Static<typeof MinorModeSessionKindSchema>;\n\nexport const MinorModeActivationSchema = Type.Union([\n  Type.Literal('inactive'),\n  Type.Literal('activating'),\n  Type.Literal('active'),\n  Type.Literal('deactivating'),\n]);\nexport type MinorModeActivation = Static<typeof MinorModeActivationSchema>;\n\nexport const MinorModeConditionSchema = Type.Union([\n  Type.Literal('ready'),\n  Type.Literal('paused'),\n  Type.Literal('blocked'),\n  Type.Literal('limited'),\n  Type.Literal('queued'),\n  Type.Literal('degraded'),\n  Type.Literal('failed'),\n]);\nexport type MinorModeCondition = Static<typeof MinorModeConditionSchema>;\n\nexport const MinorModeScalarSchema = Type.Union([\n  Type.String({ maxLength: MINOR_MODE_MAX_ARGUMENT_LENGTH }),\n  Type.Number(),\n  Type.Boolean(),\n]);\nexport type MinorModeScalar = Static<typeof MinorModeScalarSchema>;\n\nconst ParameterBase = {\n  name: MinorModeParameterNameSchema,\n  label: LabelSchema,\n  description: Type.Optional(DescriptionSchema),\n  required: Type.Boolean(),\n};\n\nexport const MinorModeActionParameterSchema = Type.Union([\n  Type.Object(\n    {\n      ...ParameterBase,\n      kind: Type.Literal('string'),\n      minLength: Type.Optional(Type.Integer({ minimum: 0, maximum: MINOR_MODE_MAX_ARGUMENT_LENGTH })),\n      maxLength: Type.Optional(Type.Integer({ minimum: 1, maximum: MINOR_MODE_MAX_ARGUMENT_LENGTH })),\n    },\n    { additionalProperties: false },\n  ),\n  Type.Object(\n    {\n      ...ParameterBase,\n      kind: Type.Literal('number'),\n      integer: Type.Optional(Type.Boolean()),\n      minimum: Type.Optional(Type.Number()),\n      maximum: Type.Optional(Type.Number()),\n    },\n    { additionalProperties: false },\n  ),\n  Type.Object({ ...ParameterBase, kind: Type.Literal('boolean') }, { additionalProperties: false }),\n  Type.Object(\n    {\n      ...ParameterBase,\n      kind: Type.Literal('enum'),\n      choices: Type.Array(\n        Type.Object(\n          {\n            value: Type.String({ minLength: 1, maxLength: MAX_ID_LENGTH }),\n            label: LabelSchema,\n          },\n          { additionalProperties: false },\n        ),\n        { minItems: 1, maxItems: MINOR_MODE_MAX_ENUM_CHOICES },\n      ),\n    },\n    { additionalProperties: false },\n  ),\n]);\nexport type MinorModeActionParameter = Static<typeof MinorModeActionParameterSchema>;\n\nexport const MinorModeActionDescriptorSchema = Type.Object(\n  {\n    id: MinorModeIdSchema,\n    label: LabelSchema,\n    description: DescriptionSchema,\n    contexts: Type.Array(MinorModeSessionKindSchema, { minItems: 1, maxItems: 2, uniqueItems: true }),\n    parameters: Type.Array(MinorModeActionParameterSchema, { maxItems: MINOR_MODE_MAX_PARAMETERS }),\n  },\n  { additionalProperties: false },\n);\nexport type MinorModeActionDescriptor = Static<typeof MinorModeActionDescriptorSchema>;\n\nexport const MinorModeDescriptorSchema = Type.Object(\n  {\n    source: MinorModeSourceSchema,\n    id: MinorModeIdSchema,\n    label: LabelSchema,\n    description: DescriptionSchema,\n    order: Type.Integer({ minimum: 0, maximum: 1_000 }),\n    actions: Type.Array(MinorModeActionDescriptorSchema, { maxItems: MINOR_MODE_MAX_ACTIONS }),\n  },\n  { additionalProperties: false },\n);\nexport type MinorModeDescriptor = Static<typeof MinorModeDescriptorSchema>;\n\nexport const MinorModeActionAvailabilitySchema = Type.Object(\n  {\n    id: MinorModeIdSchema,\n    enabled: Type.Boolean(),\n    disabledReason: Type.Optional(Type.String({ minLength: 1, maxLength: MAX_DETAIL_LENGTH })),\n  },\n  { additionalProperties: false },\n);\nexport type MinorModeActionAvailability = Static<typeof MinorModeActionAvailabilitySchema>;\n\nexport const MinorModeStateSchema = Type.Object(\n  {\n    activation: MinorModeActivationSchema,\n    condition: MinorModeConditionSchema,\n    detail: Type.Optional(Type.String({ minLength: 1, maxLength: MAX_DETAIL_LENGTH })),\n    color: Type.Optional(ModeTextColorSchema),\n    modelContextVariant: Type.Optional(Type.String({ minLength: 1, maxLength: MAX_ID_LENGTH })),\n    actions: Type.Array(MinorModeActionAvailabilitySchema, { maxItems: MINOR_MODE_MAX_ACTIONS }),\n  },\n  { additionalProperties: false },\n);\nexport type MinorModeState = Static<typeof MinorModeStateSchema>;\n\nexport const MinorModeRegistrationRefSchema = Type.Object(\n  {\n    source: MinorModeSourceSchema,\n    id: MinorModeIdSchema,\n    ownerGeneration: GenerationSchema,\n    registrationId: GenerationSchema,\n  },\n  { additionalProperties: false },\n);\nexport type MinorModeRegistrationRef = Static<typeof MinorModeRegistrationRefSchema>;\n\nexport const MinorModeRecordSchema = Type.Object(\n  {\n    descriptor: MinorModeDescriptorSchema,\n    state: MinorModeStateSchema,\n    ownerGeneration: GenerationSchema,\n    registrationId: GenerationSchema,\n    stateRevision: Type.Integer({ minimum: 0 }),\n  },\n  { additionalProperties: false },\n);\nexport type MinorModeRecord = Static<typeof MinorModeRecordSchema>;\n\nexport const MinorModeCatalogSnapshotSchema = Type.Object(\n  {\n    hostGeneration: GenerationSchema,\n    revision: Type.Integer({ minimum: 0 }),\n    modes: Type.Array(MinorModeRecordSchema, { maxItems: MINOR_MODE_MAX_RECORDS }),\n  },\n  { additionalProperties: false },\n);\nexport type MinorModeCatalogSnapshot = Static<typeof MinorModeCatalogSnapshotSchema>;\n\nexport const MinorModeArgumentsSchema = Type.Record(MinorModeParameterNameSchema, MinorModeScalarSchema, {\n  maxProperties: MINOR_MODE_MAX_PARAMETERS,\n});\nexport type MinorModeArguments = Static<typeof MinorModeArgumentsSchema>;\n\nexport const MinorModeToolInputSchema = Type.Object(\n  {\n    action: Type.Union([Type.Literal('list'), Type.Literal('invoke')]),\n    source: Type.Optional(MinorModeSourceSchema),\n    id: Type.Optional(MinorModeIdSchema),\n    ownerGeneration: Type.Optional(GenerationSchema),\n    registrationId: Type.Optional(GenerationSchema),\n    modeAction: Type.Optional(MinorModeIdSchema),\n    arguments: Type.Optional(MinorModeArgumentsSchema),\n  },\n  { additionalProperties: false },\n);\nexport type MinorModeToolInput = Static<typeof MinorModeToolInputSchema>;\nexport const MinorModeToolResultSchema = Type.Unknown();\n\nexport const MinorModeActionRequestSchema = Type.Object(\n  {\n    operationId: OperationIdSchema,\n    mode: MinorModeRegistrationRefSchema,\n    actionId: MinorModeIdSchema,\n    arguments: MinorModeArgumentsSchema,\n  },\n  { additionalProperties: false },\n);\nexport type MinorModeActionRequest = Static<typeof MinorModeActionRequestSchema>;\n\nexport const MinorModeActionResponseSchema = Type.Object(\n  {\n    operationId: OperationIdSchema,\n    catalogRevision: Type.Integer({ minimum: 0 }),\n    mode: MinorModeRecordSchema,\n    message: Type.Optional(Type.String({ minLength: 1, maxLength: MAX_DETAIL_LENGTH })),\n  },\n  { additionalProperties: false },\n);\nexport type MinorModeActionResponse = Static<typeof MinorModeActionResponseSchema>;\n\n/**\n * The custom session entry the catalog host journals whenever its projection\n * changes. It rides Pi's entry_appended frames, so any RPC client (the web\n * cockpit) sees minor-mode state live and on replay without a new protocol.\n */\nexport const DOOM_MINOR_MODE_ENTRY_TYPE = 'doom-minor-modes';\n\nexport interface MinorModeActionProjection {\n  readonly id: string;\n  readonly label: string;\n  readonly description: string;\n  readonly enabled: boolean;\n  readonly disabledReason?: string;\n  /** Whether invoking it needs arguments a client must ask for first. */\n  readonly needsInput: boolean;\n}\n\nexport interface MinorModeRecordProjection {\n  readonly id: string;\n  readonly label: string;\n  readonly description: string;\n  readonly order: number;\n  readonly activation: MinorModeActivation;\n  readonly condition: MinorModeCondition;\n  readonly detail?: string;\n  readonly actions: readonly MinorModeActionProjection[];\n}\n\nexport interface MinorModeProjection {\n  readonly version: 1;\n  readonly revision: number;\n  readonly modes: readonly MinorModeRecordProjection[];\n}\n\nexport interface MinorModeOwnerActionResult {\n  message?: string;\n}\n\nexport interface MinorModeOwnerActionContext<ExtensionContext extends DoomExtensionContext> {\n  context: ExtensionContext;\n  operationId: string;\n  sessionKind: MinorModeSessionKind;\n  signal: AbortSignal;\n}\n\nexport interface MinorModeOwnerDefinition<ExtensionContext extends DoomExtensionContext> {\n  descriptor: MinorModeDescriptor;\n  initialState: MinorModeState;\n  handleAction(\n    actionId: string,\n    argumentsValue: MinorModeArguments,\n    execution: MinorModeOwnerActionContext<ExtensionContext>,\n  ): MinorModeOwnerActionResult | void | Promise<MinorModeOwnerActionResult | void>;\n  onError?(error: unknown): void;\n}\n\nexport interface MinorModeOwnerHandle {\n  getState(): MinorModeState;\n  publish(state: MinorModeState): void;\n  dispose(): void;\n}\n\nexport interface MinorModeInvokeOptions {\n  readonly signal?: AbortSignal;\n}\n\n/** Direct session-local catalog shared through Cordis. */\nexport interface MinorModeCatalogService {\n  readonly generation: string;\n  getSnapshot(): MinorModeCatalogSnapshot;\n  list(): MinorModeRecord[];\n  subscribe(listener: () => void): () => void;\n  registerOwner<ExtensionContext extends DoomExtensionContext>(\n    definition: MinorModeOwnerDefinition<ExtensionContext>,\n  ): MinorModeOwnerHandle;\n  invoke(\n    request: MinorModeActionRequest,\n    requesterSource: string,\n    signal?: AbortSignal,\n  ): Promise<MinorModeActionResponse>;\n  dispose(): void;\n}\n\ndeclare module '@deepseek-ai/cordis' {\n  interface Context {\n    'doom/minor-mode-catalog': MinorModeCatalogService;\n  }\n}\n\nexport function readMinorModeCatalog(context: Context): MinorModeCatalogService | undefined {\n  return context.get(DOOM_MINOR_MODE_CATALOG_SERVICE) as MinorModeCatalogService | undefined;\n}\n\nexport function requireMinorModeCatalog(context: Context): MinorModeCatalogService {\n  const catalog = readMinorModeCatalog(context);\n  if (!catalog) throw new Error('Doom minor-mode catalog is unavailable.');\n  return catalog;\n}\n"],"mappings":"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"}