{"version":3,"file":"server.mjs","names":["commandMajorMode","resourceDoompiAuthorMajorMode"],"sources":["../../src/extensions/workspaces/sessions/(backend)/_lib/majorModeServerCommand.ts","../../src/extensions/workspaces/sessions/(backend)/command/majorMode.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorMajorMode.server.ts","../../generated/server.ts"],"sourcesContent":["import { loadMajorModesConfig, resolveLayers } from '@agimon-ai/doompi-config/majorModes';\nimport { type DoomHeadlessCommand, type DoomHeadlessHostService } from '@agimon-ai/doompi-core/headless';\n\nimport { MAJOR_MODE_COMMAND, majorModeOptionLabel } from '../../../../../services/majorModeText';\n\nexport function createMajorModeServerCommand(host: DoomHeadlessHostService): DoomHeadlessCommand {\n  return {\n    name: MAJOR_MODE_COMMAND,\n    description: 'Show or change the active DoomPi major mode.',\n    async execute(args, execution) {\n      const config = loadMajorModesConfig(execution.repoRoot);\n      let requested = args.trim();\n      if (!requested) {\n        const selected = await execution.client.request({\n          kind: 'select',\n          title: `Major mode (current: ${execution.selection.majorMode})`,\n          options: Object.keys(config.majorMode).map((name) => ({\n            label: majorModeOptionLabel(name, config.majorMode[name]?.layers ?? [], execution.selection.majorMode),\n            value: name,\n          })),\n        });\n        if (typeof selected !== 'string' || !selected) return;\n        requested = selected;\n      }\n      // Reject invalid command input before requesting a capability transition.\n      resolveLayers(config, requested);\n      if (requested === execution.selection.majorMode) return;\n      await host.changeSelection({ axis: 'majorMode', majorMode: requested });\n    },\n  };\n}\n","import { defineRoutedContribution } from '@agimon-ai/doompi-core/extensionFile';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/serverFacet';\n\nimport { createMajorModeServerCommand } from '../_lib/majorModeServerCommand';\nexport default defineRoutedContribution(\n  ({ agent }: DoomServerPluginContext) => (agent ? createMajorModeServerCommand(agent) : undefined),\n  { cardinality: 'optional' },\n);\n","import { defineResource } from '@agimon-ai/doompi-core/extensionFile';\nimport { packageResourcePath, readPackageResource } from '@agimon-ai/doompi-core/serverFacet';\n\nexport default defineResource({\n  name: 'doompi-author-major-mode',\n  description:\n    \"Configure DoomPi default packages, layers, extensions, hook groups, and named major modes. Use when creating or editing ~/.pi/.doom/modes.yaml or a repository's .doom/modes.yaml, choosing a default mode, or diagnosing which behavior a mode activates.\",\n  when: { state: { 'minor-mode': 'help' }, attribution: { kind: 'minor' as const, mode: 'help' } },\n  kind: 'skill' as const,\n  path: packageResourcePath(import.meta.url, 'src/prompts/doompi-author-major-mode/SKILL.md'),\n  read: () => readPackageResource(import.meta.url, 'src/prompts/doompi-author-major-mode/SKILL.md'),\n});\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineServerPlugin, type DoomServerSessionPlugin } from '@agimon-ai/doompi-core/serverFacet';\n\nimport commandMajorMode from '../src/extensions/workspaces/sessions/(backend)/command/majorMode.server';\nimport resourceDoompiAuthorMajorMode from '../src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorMajorMode.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n  typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n/* v8 ignore next -- generated normalization branch */\nconst defined = <T>(values: readonly (T | undefined)[]): T[] =>\n  values.filter((value): value is T => value !== undefined);\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n  (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const facet = defineServerPlugin({\n  name: '@agimon-ai/doompi-major-mode',\n  session: (context) => ({\n    get commands(): DoomServerSessionPlugin['commands'] { return defined([via({ name: 'major-mode' }, at(commandMajorMode, context))]); },\n    get resources(): DoomServerSessionPlugin['resources'] { return [at(resourceDoompiAuthorMajorMode, context)]; },\n  }),\n});\n\nexport default facet;\n"],"mappings":";;;;;AAKA,SAAgB,6BAA6B,MAAoD;CAC/F,OAAO;EACL,MAAM;EACN,aAAa;EACb,MAAM,QAAQ,MAAM,WAAW;GAC7B,MAAM,SAAS,qBAAqB,UAAU,QAAQ;GACtD,IAAI,YAAY,KAAK,KAAK;GAC1B,IAAI,CAAC,WAAW;IACd,MAAM,WAAW,MAAM,UAAU,OAAO,QAAQ;KAC9C,MAAM;KACN,OAAO,wBAAwB,UAAU,UAAU,UAAU;KAC7D,SAAS,OAAO,KAAK,OAAO,SAAS,CAAC,CAAC,KAAK,UAAU;MACpD,OAAO,qBAAqB,MAAM,OAAO,UAAU,KAAK,EAAE,UAAU,CAAC,GAAG,UAAU,UAAU,SAAS;MACrG,OAAO;KACT,EAAE;IACJ,CAAC;IACD,IAAI,OAAO,aAAa,YAAY,CAAC,UAAU;IAC/C,YAAY;GACd;GAEA,cAAc,QAAQ,SAAS;GAC/B,IAAI,cAAc,UAAU,UAAU,WAAW;GACjD,MAAM,KAAK,gBAAgB;IAAE,MAAM;IAAa,WAAW;GAAU,CAAC;EACxE;CACF;AACF;;;AC1BA,IAAA,2BAAe,0BACZ,EAAE,YAAsC,QAAQ,6BAA6B,KAAK,IAAI,KAAA,GACvF,EAAE,aAAa,WAAW,CAC5B;;;ACJA,IAAA,uCAAe,eAAe;CAC5B,MAAM;CACN,aACE;CACF,MAAM;EAAE,OAAO,EAAE,cAAc,OAAO;EAAG,aAAa;GAAE,MAAM;GAAkB,MAAM;EAAO;CAAE;CAC/F,MAAM;CACN,MAAM,oBAAoB,YAAY,KAAK,+CAA+C;CAC1F,YAAY,oBAAoB,YAAY,KAAK,+CAA+C;AAClG,CAAC;;;ACJD,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;;AAEpE,MAAM,WAAc,WAClB,OAAO,QAAQ,UAAsB,UAAU,KAAA,CAAS;AAC1D,MAAM,OAAU,UAAmC,UAChD,UAAU,KAAA,IAAY,KAAA,IAAY;CAAE,GAAG;CAAU,GAAI;AAAiB;AAEzE,MAAa,QAAQ,mBAAmB;CACtC,MAAM;CACN,UAAU,aAAa;EACrB,IAAI,WAAgD;GAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,aAAa,GAAG,GAAGA,0BAAkB,OAAO,CAAC,CAAC,CAAC;EAAG;EACpI,IAAI,YAAkD;GAAE,OAAO,CAAC,GAAGC,sCAA+B,OAAO,CAAC;EAAG;CAC/G;AACF,CAAC"}