@agimon-ai/doompi-minor-mode 0.0.1-alpha.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/api-contracts.cjs +7 -0
  4. package/dist/api-contracts.d.cts +2 -0
  5. package/dist/api-contracts.d.mts +2 -0
  6. package/dist/api-contracts.mjs +2 -0
  7. package/dist/catalog.cjs +223 -0
  8. package/dist/catalog.cjs.map +1 -0
  9. package/dist/catalog.d.cts +14 -0
  10. package/dist/catalog.d.cts.map +1 -0
  11. package/dist/catalog.d.mts +14 -0
  12. package/dist/catalog.d.mts.map +1 -0
  13. package/dist/catalog.mjs +222 -0
  14. package/dist/catalog.mjs.map +1 -0
  15. package/dist/command.cjs +134 -0
  16. package/dist/command.cjs.map +1 -0
  17. package/dist/command.d.cts +25 -0
  18. package/dist/command.d.cts.map +1 -0
  19. package/dist/command.d.mts +25 -0
  20. package/dist/command.d.mts.map +1 -0
  21. package/dist/command.mjs +129 -0
  22. package/dist/command.mjs.map +1 -0
  23. package/dist/constants/command.cjs +6 -0
  24. package/dist/constants/command.cjs.map +1 -0
  25. package/dist/constants/command.d.cts +4 -0
  26. package/dist/constants/command.d.cts.map +1 -0
  27. package/dist/constants/command.d.mts +4 -0
  28. package/dist/constants/command.d.mts.map +1 -0
  29. package/dist/constants/command.mjs +6 -0
  30. package/dist/constants/command.mjs.map +1 -0
  31. package/dist/controllers/catalogRuntime.cjs +123 -0
  32. package/dist/controllers/catalogRuntime.cjs.map +1 -0
  33. package/dist/controllers/catalogRuntime.mjs +123 -0
  34. package/dist/controllers/catalogRuntime.mjs.map +1 -0
  35. package/dist/extensions/pi.cjs +7 -0
  36. package/dist/extensions/pi.cjs.map +1 -0
  37. package/dist/extensions/pi.d.cts +4 -0
  38. package/dist/extensions/pi.d.cts.map +1 -0
  39. package/dist/extensions/pi.d.mts +5 -0
  40. package/dist/extensions/pi.d.mts.map +1 -0
  41. package/dist/extensions/pi.mjs +8 -0
  42. package/dist/extensions/pi.mjs.map +1 -0
  43. package/dist/extensions/server.cjs +85 -0
  44. package/dist/extensions/server.cjs.map +1 -0
  45. package/dist/extensions/server.d.cts +4 -0
  46. package/dist/extensions/server.d.cts.map +1 -0
  47. package/dist/extensions/server.d.mts +5 -0
  48. package/dist/extensions/server.d.mts.map +1 -0
  49. package/dist/extensions/server.mjs +86 -0
  50. package/dist/extensions/server.mjs.map +1 -0
  51. package/dist/index.cjs +53 -0
  52. package/dist/index.d.cts +10 -0
  53. package/dist/index.d.mts +10 -0
  54. package/dist/index.mjs +9 -0
  55. package/dist/minor-mode-command.cjs +37 -0
  56. package/dist/minor-mode-command.cjs.map +1 -0
  57. package/dist/minor-mode-command.d.cts +9 -0
  58. package/dist/minor-mode-command.d.cts.map +1 -0
  59. package/dist/minor-mode-command.d.mts +9 -0
  60. package/dist/minor-mode-command.d.mts.map +1 -0
  61. package/dist/minor-mode-command.mjs +33 -0
  62. package/dist/minor-mode-command.mjs.map +1 -0
  63. package/dist/mode-definition.cjs +47 -0
  64. package/dist/mode-definition.cjs.map +1 -0
  65. package/dist/mode-definition.d.cts +30 -0
  66. package/dist/mode-definition.d.cts.map +1 -0
  67. package/dist/mode-definition.d.mts +30 -0
  68. package/dist/mode-definition.d.mts.map +1 -0
  69. package/dist/mode-definition.mjs +46 -0
  70. package/dist/mode-definition.mjs.map +1 -0
  71. package/dist/mode.cjs +275 -0
  72. package/dist/mode.cjs.map +1 -0
  73. package/dist/mode.d.cts +491 -0
  74. package/dist/mode.d.cts.map +1 -0
  75. package/dist/mode.d.mts +491 -0
  76. package/dist/mode.d.mts.map +1 -0
  77. package/dist/mode.mjs +241 -0
  78. package/dist/mode.mjs.map +1 -0
  79. package/dist/owner.cjs +10 -0
  80. package/dist/owner.cjs.map +1 -0
  81. package/dist/owner.d.cts +7 -0
  82. package/dist/owner.d.cts.map +1 -0
  83. package/dist/owner.d.mts +7 -0
  84. package/dist/owner.d.mts.map +1 -0
  85. package/dist/owner.mjs +9 -0
  86. package/dist/owner.mjs.map +1 -0
  87. package/dist/projection.cjs +49 -0
  88. package/dist/projection.cjs.map +1 -0
  89. package/dist/projection.d.cts +12 -0
  90. package/dist/projection.d.cts.map +1 -0
  91. package/dist/projection.d.mts +12 -0
  92. package/dist/projection.d.mts.map +1 -0
  93. package/dist/projection.mjs +47 -0
  94. package/dist/projection.mjs.map +1 -0
  95. package/dist/reload-handoff.cjs +57 -0
  96. package/dist/reload-handoff.cjs.map +1 -0
  97. package/dist/reload-handoff.d.cts +11 -0
  98. package/dist/reload-handoff.d.cts.map +1 -0
  99. package/dist/reload-handoff.d.mts +11 -0
  100. package/dist/reload-handoff.d.mts.map +1 -0
  101. package/dist/reload-handoff.mjs +54 -0
  102. package/dist/reload-handoff.mjs.map +1 -0
  103. package/dist/schemas/apiContracts.cjs +13 -0
  104. package/dist/schemas/apiContracts.cjs.map +1 -0
  105. package/dist/schemas/apiContracts.d.cts +53 -0
  106. package/dist/schemas/apiContracts.d.cts.map +1 -0
  107. package/dist/schemas/apiContracts.d.mts +53 -0
  108. package/dist/schemas/apiContracts.d.mts.map +1 -0
  109. package/dist/schemas/apiContracts.mjs +13 -0
  110. package/dist/schemas/apiContracts.mjs.map +1 -0
  111. package/dist/schemas/headless.d.cts +16 -0
  112. package/dist/schemas/headless.d.cts.map +1 -0
  113. package/dist/schemas/headless.d.mts +16 -0
  114. package/dist/schemas/headless.d.mts.map +1 -0
  115. package/dist/services/client/index.cjs +18 -0
  116. package/dist/services/client/index.cjs.map +1 -0
  117. package/dist/services/client/index.d.cts +12 -0
  118. package/dist/services/client/index.d.cts.map +1 -0
  119. package/dist/services/client/index.d.mts +12 -0
  120. package/dist/services/client/index.d.mts.map +1 -0
  121. package/dist/services/client/index.mjs +18 -0
  122. package/dist/services/client/index.mjs.map +1 -0
  123. package/dist/services/headlessCommand/index.cjs +53 -0
  124. package/dist/services/headlessCommand/index.cjs.map +1 -0
  125. package/dist/services/headlessCommand/index.d.cts +6 -0
  126. package/dist/services/headlessCommand/index.d.cts.map +1 -0
  127. package/dist/services/headlessCommand/index.d.mts +6 -0
  128. package/dist/services/headlessCommand/index.d.mts.map +1 -0
  129. package/dist/services/headlessCommand/index.mjs +53 -0
  130. package/dist/services/headlessCommand/index.mjs.map +1 -0
  131. package/dist/services/piRegistration/index.cjs +86 -0
  132. package/dist/services/piRegistration/index.cjs.map +1 -0
  133. package/dist/services/piRegistration/index.d.cts +15 -0
  134. package/dist/services/piRegistration/index.d.cts.map +1 -0
  135. package/dist/services/piRegistration/index.d.mts +15 -0
  136. package/dist/services/piRegistration/index.d.mts.map +1 -0
  137. package/dist/services/piRegistration/index.mjs +86 -0
  138. package/dist/services/piRegistration/index.mjs.map +1 -0
  139. package/dist/services/serverRegistration/index.cjs +35 -0
  140. package/dist/services/serverRegistration/index.cjs.map +1 -0
  141. package/dist/services/serverRegistration/index.d.cts +7 -0
  142. package/dist/services/serverRegistration/index.d.cts.map +1 -0
  143. package/dist/services/serverRegistration/index.d.mts +7 -0
  144. package/dist/services/serverRegistration/index.d.mts.map +1 -0
  145. package/dist/services/serverRegistration/index.mjs +35 -0
  146. package/dist/services/serverRegistration/index.mjs.map +1 -0
  147. package/dist/services/validation/index.cjs +84 -0
  148. package/dist/services/validation/index.cjs.map +1 -0
  149. package/dist/services/validation/index.d.cts +8 -0
  150. package/dist/services/validation/index.d.cts.map +1 -0
  151. package/dist/services/validation/index.d.mts +8 -0
  152. package/dist/services/validation/index.d.mts.map +1 -0
  153. package/dist/services/validation/index.mjs +81 -0
  154. package/dist/services/validation/index.mjs.map +1 -0
  155. package/package.json +157 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minor-mode-command.mjs","names":[],"sources":["../src/controllers/minorModeCommand.ts"],"sourcesContent":["import type { ExtensionAPI, ExtensionContext } from '@earendil-works/pi-coding-agent';\n\nimport type { MinorModeCatalogService, MinorModeSessionKind } from '../schemas/mode';\nimport { executeMinorModeCommand, MINOR_MODE_COMMAND, MINOR_MODE_COMMAND_DESCRIPTION } from '../services/command';\n\nexport { actionsFor, matchMinorMode, MINOR_MODE_COMMAND } from '../services/command';\n\nfunction sessionKindOf(ctx: ExtensionContext): MinorModeSessionKind {\n return ctx.hasUI && ctx.mode === 'tui' ? 'tui' : 'headless';\n}\n\n/** Register the Pi prompt adapter for the shared minor-mode command behavior. */\nexport function registerMinorModeCommand(\n pi: ExtensionAPI,\n currentCatalog: () => MinorModeCatalogService | undefined,\n): void {\n pi.registerCommand(MINOR_MODE_COMMAND, {\n description: MINOR_MODE_COMMAND_DESCRIPTION,\n getArgumentCompletions: (prefix) => {\n const query = prefix.trim().toLowerCase();\n const records = currentCatalog()?.list() ?? [];\n return records\n .map((record) => record.descriptor.label.toLowerCase())\n .filter((label) => label.startsWith(query))\n .map((label) => ({ value: label, label }));\n },\n handler: (args, ctx) =>\n executeMinorModeCommand(args, {\n catalog: currentCatalog(),\n kind: sessionKindOf(ctx),\n ui: {\n select: (title, options) => ctx.ui.select(title, [...options]),\n input: (title, message) => ctx.ui.input(title, message),\n confirm: (title, message) => ctx.ui.confirm(title, message),\n notify: (message, level) => ctx.ui.notify(message, level),\n },\n }),\n });\n}\n"],"mappings":";;;AAOA,SAAS,cAAc,KAA6C;CAClE,OAAO,IAAI,SAAS,IAAI,SAAS,QAAQ,QAAQ;AACnD;;AAGA,SAAgB,yBACd,IACA,gBACM;CACN,GAAG,gBAAgB,oBAAoB;EACrC,aAAa;EACb,yBAAyB,WAAW;GAClC,MAAM,QAAQ,OAAO,KAAK,CAAC,CAAC,YAAY;GAExC,QADgB,eAAe,CAAC,EAAE,KAAK,KAAK,CAAC,EAAA,CAE1C,KAAK,WAAW,OAAO,WAAW,MAAM,YAAY,CAAC,CAAC,CACtD,QAAQ,UAAU,MAAM,WAAW,KAAK,CAAC,CAAC,CAC1C,KAAK,WAAW;IAAE,OAAO;IAAO;GAAM,EAAE;EAC7C;EACA,UAAU,MAAM,QACd,wBAAwB,MAAM;GAC5B,SAAS,eAAe;GACxB,MAAM,cAAc,GAAG;GACvB,IAAI;IACF,SAAS,OAAO,YAAY,IAAI,GAAG,OAAO,OAAO,CAAC,GAAG,OAAO,CAAC;IAC7D,QAAQ,OAAO,YAAY,IAAI,GAAG,MAAM,OAAO,OAAO;IACtD,UAAU,OAAO,YAAY,IAAI,GAAG,QAAQ,OAAO,OAAO;IAC1D,SAAS,SAAS,UAAU,IAAI,GAAG,OAAO,SAAS,KAAK;GAC1D;EACF,CAAC;CACL,CAAC;AACH"}
@@ -0,0 +1,47 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/services/modeDefinition/index.ts
3
+ /** Shares one typed mode definition across Pi and session-server owners. */
4
+ function defineMinorMode(mode) {
5
+ return {
6
+ descriptor: mode.descriptor,
7
+ createOwner(runtime) {
8
+ let handle;
9
+ const listeners = /* @__PURE__ */ new Set();
10
+ const state = () => mode.state(runtime);
11
+ const publish = () => {
12
+ handle?.publish(state());
13
+ listeners.forEach((listener) => listener());
14
+ };
15
+ return {
16
+ definition: {
17
+ descriptor: mode.descriptor,
18
+ initialState: state(),
19
+ async handleAction(actionId, args, execution) {
20
+ execution.signal.throwIfAborted();
21
+ const result = await mode.handleAction(runtime, actionId, args, execution);
22
+ publish();
23
+ return result;
24
+ }
25
+ },
26
+ state,
27
+ publish,
28
+ attach: (owner) => {
29
+ handle = owner;
30
+ },
31
+ detach: () => {
32
+ handle = void 0;
33
+ },
34
+ subscribe(listener) {
35
+ listeners.add(listener);
36
+ return () => {
37
+ listeners.delete(listener);
38
+ };
39
+ }
40
+ };
41
+ }
42
+ };
43
+ }
44
+ //#endregion
45
+ exports.defineMinorMode = defineMinorMode;
46
+
47
+ //# sourceMappingURL=mode-definition.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode-definition.cjs","names":[],"sources":["../src/services/modeDefinition/index.ts"],"sourcesContent":["import type {\n MinorModeArguments,\n MinorModeDescriptor,\n MinorModeOwnerActionResult,\n MinorModeOwnerHandle,\n MinorModeState,\n} from '../../schemas/mode';\n\nexport interface MinorModeExecution {\n readonly signal: AbortSignal;\n}\n\nexport interface MinorModeDefinition<TRuntime, TExecution extends MinorModeExecution = MinorModeExecution> {\n readonly descriptor: MinorModeDescriptor;\n state(runtime: TRuntime): MinorModeState;\n handleAction(\n runtime: TRuntime,\n actionId: string,\n argumentsValue: MinorModeArguments,\n execution: TExecution,\n ): MinorModeOwnerActionResult | void | Promise<MinorModeOwnerActionResult | void>;\n}\n\nexport interface MinorModeOwner<TExecution extends MinorModeExecution = MinorModeExecution> {\n readonly definition: {\n readonly descriptor: MinorModeDescriptor;\n readonly initialState: MinorModeState;\n handleAction(\n actionId: string,\n argumentsValue: MinorModeArguments,\n execution: TExecution,\n ): Promise<MinorModeOwnerActionResult | void>;\n };\n state(): MinorModeState;\n publish(): void;\n attach(handle: MinorModeOwnerHandle): void;\n detach(): void;\n subscribe(listener: () => void): () => void;\n}\n\nexport interface DefinedMinorMode<TRuntime, TExecution extends MinorModeExecution = MinorModeExecution> {\n readonly descriptor: MinorModeDescriptor;\n createOwner(runtime: TRuntime): MinorModeOwner<TExecution>;\n}\n\n/** Shares one typed mode definition across Pi and session-server owners. */\nexport function defineMinorMode<TRuntime, TExecution extends MinorModeExecution = MinorModeExecution>(\n mode: MinorModeDefinition<TRuntime, TExecution>,\n): DefinedMinorMode<TRuntime, TExecution> {\n return {\n descriptor: mode.descriptor,\n createOwner(runtime: TRuntime): MinorModeOwner<TExecution> {\n let handle: MinorModeOwnerHandle | undefined;\n const listeners = new Set<() => void>();\n const state = (): MinorModeState => mode.state(runtime);\n const publish = (): void => {\n handle?.publish(state());\n listeners.forEach((listener) => listener());\n };\n return {\n definition: {\n descriptor: mode.descriptor,\n initialState: state(),\n async handleAction(actionId: string, args: MinorModeArguments, execution: TExecution) {\n execution.signal.throwIfAborted();\n const result = await mode.handleAction(runtime, actionId, args, execution);\n publish();\n return result;\n },\n },\n state,\n publish,\n attach: (owner: MinorModeOwnerHandle) => {\n handle = owner;\n },\n detach: () => {\n handle = undefined;\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n },\n };\n}\n"],"mappings":";;;AA8CA,SAAgB,gBACd,MACwC;CACxC,OAAO;EACL,YAAY,KAAK;EACjB,YAAY,SAA+C;GACzD,IAAI;GACJ,MAAM,4BAAY,IAAI,IAAgB;GACtC,MAAM,cAA8B,KAAK,MAAM,OAAO;GACtD,MAAM,gBAAsB;IAC1B,QAAQ,QAAQ,MAAM,CAAC;IACvB,UAAU,SAAS,aAAa,SAAS,CAAC;GAC5C;GACA,OAAO;IACL,YAAY;KACV,YAAY,KAAK;KACjB,cAAc,MAAM;KACpB,MAAM,aAAa,UAAkB,MAA0B,WAAuB;MACpF,UAAU,OAAO,eAAe;MAChC,MAAM,SAAS,MAAM,KAAK,aAAa,SAAS,UAAU,MAAM,SAAS;MACzE,QAAQ;MACR,OAAO;KACT;IACF;IACA;IACA;IACA,SAAS,UAAgC;KACvC,SAAS;IACX;IACA,cAAc;KACZ,SAAS,KAAA;IACX;IACA,UAAU,UAAU;KAClB,UAAU,IAAI,QAAQ;KACtB,aAAa;MACX,UAAU,OAAO,QAAQ;KAC3B;IACF;GACF;EACF;CACF;AACF"}
@@ -0,0 +1,30 @@
1
+ import { MinorModeArguments, MinorModeDescriptor, MinorModeOwnerActionResult, MinorModeOwnerHandle, MinorModeState } from "./mode.cjs";
2
+ //#region src/services/modeDefinition/index.d.ts
3
+ export interface MinorModeExecution {
4
+ readonly signal: AbortSignal;
5
+ }
6
+ export interface MinorModeDefinition<TRuntime, TExecution extends MinorModeExecution = MinorModeExecution> {
7
+ readonly descriptor: MinorModeDescriptor;
8
+ state(runtime: TRuntime): MinorModeState;
9
+ handleAction(runtime: TRuntime, actionId: string, argumentsValue: MinorModeArguments, execution: TExecution): MinorModeOwnerActionResult | void | Promise<MinorModeOwnerActionResult | void>;
10
+ }
11
+ export interface MinorModeOwner<TExecution extends MinorModeExecution = MinorModeExecution> {
12
+ readonly definition: {
13
+ readonly descriptor: MinorModeDescriptor;
14
+ readonly initialState: MinorModeState;
15
+ handleAction(actionId: string, argumentsValue: MinorModeArguments, execution: TExecution): Promise<MinorModeOwnerActionResult | void>;
16
+ };
17
+ state(): MinorModeState;
18
+ publish(): void;
19
+ attach(handle: MinorModeOwnerHandle): void;
20
+ detach(): void;
21
+ subscribe(listener: () => void): () => void;
22
+ }
23
+ export interface DefinedMinorMode<TRuntime, TExecution extends MinorModeExecution = MinorModeExecution> {
24
+ readonly descriptor: MinorModeDescriptor;
25
+ createOwner(runtime: TRuntime): MinorModeOwner<TExecution>;
26
+ }
27
+ /** Shares one typed mode definition across Pi and session-server owners. */
28
+ export declare function defineMinorMode<TRuntime, TExecution extends MinorModeExecution = MinorModeExecution>(mode: MinorModeDefinition<TRuntime, TExecution>): DefinedMinorMode<TRuntime, TExecution>;
29
+ //#endregion
30
+ //# sourceMappingURL=mode-definition.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode-definition.d.cts","names":[],"sources":["../src/services/modeDefinition/index.ts"],"mappings":";;iBAQiB;WACN,QAAQ;;iBAGF,oBAAoB,UAAU,mBAAmB,qBAAqB;WAC5E,YAAY;EACrB,MAAM,SAAS,WAAW;EAC1B,aACE,SAAS,UACT,kBACA,gBAAgB,oBAChB,WAAW,aACV,oCAAoC,QAAQ;;iBAGhC,eAAe,mBAAmB,qBAAqB;WAC7D;aACE,YAAY;aACZ,cAAc;IACvB,aACE,kBACA,gBAAgB,oBAChB,WAAW,aACV,QAAQ;;EAEb,SAAS;EACT;EACA,OAAO,QAAQ;EACf;EACA,UAAU;;iBAGK,iBAAiB,UAAU,mBAAmB,qBAAqB;WACzE,YAAY;EACrB,YAAY,SAAS,WAAW,eAAe;;;wBAIjC,gBAAgB,UAAU,mBAAmB,qBAAqB,oBAChF,MAAM,oBAAoB,UAAU,cACnC,iBAAiB,UAAU"}
@@ -0,0 +1,30 @@
1
+ import { MinorModeArguments, MinorModeDescriptor, MinorModeOwnerActionResult, MinorModeOwnerHandle, MinorModeState } from "./mode.mjs";
2
+ //#region src/services/modeDefinition/index.d.ts
3
+ export interface MinorModeExecution {
4
+ readonly signal: AbortSignal;
5
+ }
6
+ export interface MinorModeDefinition<TRuntime, TExecution extends MinorModeExecution = MinorModeExecution> {
7
+ readonly descriptor: MinorModeDescriptor;
8
+ state(runtime: TRuntime): MinorModeState;
9
+ handleAction(runtime: TRuntime, actionId: string, argumentsValue: MinorModeArguments, execution: TExecution): MinorModeOwnerActionResult | void | Promise<MinorModeOwnerActionResult | void>;
10
+ }
11
+ export interface MinorModeOwner<TExecution extends MinorModeExecution = MinorModeExecution> {
12
+ readonly definition: {
13
+ readonly descriptor: MinorModeDescriptor;
14
+ readonly initialState: MinorModeState;
15
+ handleAction(actionId: string, argumentsValue: MinorModeArguments, execution: TExecution): Promise<MinorModeOwnerActionResult | void>;
16
+ };
17
+ state(): MinorModeState;
18
+ publish(): void;
19
+ attach(handle: MinorModeOwnerHandle): void;
20
+ detach(): void;
21
+ subscribe(listener: () => void): () => void;
22
+ }
23
+ export interface DefinedMinorMode<TRuntime, TExecution extends MinorModeExecution = MinorModeExecution> {
24
+ readonly descriptor: MinorModeDescriptor;
25
+ createOwner(runtime: TRuntime): MinorModeOwner<TExecution>;
26
+ }
27
+ /** Shares one typed mode definition across Pi and session-server owners. */
28
+ export declare function defineMinorMode<TRuntime, TExecution extends MinorModeExecution = MinorModeExecution>(mode: MinorModeDefinition<TRuntime, TExecution>): DefinedMinorMode<TRuntime, TExecution>;
29
+ //#endregion
30
+ //# sourceMappingURL=mode-definition.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode-definition.d.mts","names":[],"sources":["../src/services/modeDefinition/index.ts"],"mappings":";;iBAQiB;WACN,QAAQ;;iBAGF,oBAAoB,UAAU,mBAAmB,qBAAqB;WAC5E,YAAY;EACrB,MAAM,SAAS,WAAW;EAC1B,aACE,SAAS,UACT,kBACA,gBAAgB,oBAChB,WAAW,aACV,oCAAoC,QAAQ;;iBAGhC,eAAe,mBAAmB,qBAAqB;WAC7D;aACE,YAAY;aACZ,cAAc;IACvB,aACE,kBACA,gBAAgB,oBAChB,WAAW,aACV,QAAQ;;EAEb,SAAS;EACT;EACA,OAAO,QAAQ;EACf;EACA,UAAU;;iBAGK,iBAAiB,UAAU,mBAAmB,qBAAqB;WACzE,YAAY;EACrB,YAAY,SAAS,WAAW,eAAe;;;wBAIjC,gBAAgB,UAAU,mBAAmB,qBAAqB,oBAChF,MAAM,oBAAoB,UAAU,cACnC,iBAAiB,UAAU"}
@@ -0,0 +1,46 @@
1
+ //#region src/services/modeDefinition/index.ts
2
+ /** Shares one typed mode definition across Pi and session-server owners. */
3
+ function defineMinorMode(mode) {
4
+ return {
5
+ descriptor: mode.descriptor,
6
+ createOwner(runtime) {
7
+ let handle;
8
+ const listeners = /* @__PURE__ */ new Set();
9
+ const state = () => mode.state(runtime);
10
+ const publish = () => {
11
+ handle?.publish(state());
12
+ listeners.forEach((listener) => listener());
13
+ };
14
+ return {
15
+ definition: {
16
+ descriptor: mode.descriptor,
17
+ initialState: state(),
18
+ async handleAction(actionId, args, execution) {
19
+ execution.signal.throwIfAborted();
20
+ const result = await mode.handleAction(runtime, actionId, args, execution);
21
+ publish();
22
+ return result;
23
+ }
24
+ },
25
+ state,
26
+ publish,
27
+ attach: (owner) => {
28
+ handle = owner;
29
+ },
30
+ detach: () => {
31
+ handle = void 0;
32
+ },
33
+ subscribe(listener) {
34
+ listeners.add(listener);
35
+ return () => {
36
+ listeners.delete(listener);
37
+ };
38
+ }
39
+ };
40
+ }
41
+ };
42
+ }
43
+ //#endregion
44
+ export { defineMinorMode };
45
+
46
+ //# sourceMappingURL=mode-definition.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode-definition.mjs","names":[],"sources":["../src/services/modeDefinition/index.ts"],"sourcesContent":["import type {\n MinorModeArguments,\n MinorModeDescriptor,\n MinorModeOwnerActionResult,\n MinorModeOwnerHandle,\n MinorModeState,\n} from '../../schemas/mode';\n\nexport interface MinorModeExecution {\n readonly signal: AbortSignal;\n}\n\nexport interface MinorModeDefinition<TRuntime, TExecution extends MinorModeExecution = MinorModeExecution> {\n readonly descriptor: MinorModeDescriptor;\n state(runtime: TRuntime): MinorModeState;\n handleAction(\n runtime: TRuntime,\n actionId: string,\n argumentsValue: MinorModeArguments,\n execution: TExecution,\n ): MinorModeOwnerActionResult | void | Promise<MinorModeOwnerActionResult | void>;\n}\n\nexport interface MinorModeOwner<TExecution extends MinorModeExecution = MinorModeExecution> {\n readonly definition: {\n readonly descriptor: MinorModeDescriptor;\n readonly initialState: MinorModeState;\n handleAction(\n actionId: string,\n argumentsValue: MinorModeArguments,\n execution: TExecution,\n ): Promise<MinorModeOwnerActionResult | void>;\n };\n state(): MinorModeState;\n publish(): void;\n attach(handle: MinorModeOwnerHandle): void;\n detach(): void;\n subscribe(listener: () => void): () => void;\n}\n\nexport interface DefinedMinorMode<TRuntime, TExecution extends MinorModeExecution = MinorModeExecution> {\n readonly descriptor: MinorModeDescriptor;\n createOwner(runtime: TRuntime): MinorModeOwner<TExecution>;\n}\n\n/** Shares one typed mode definition across Pi and session-server owners. */\nexport function defineMinorMode<TRuntime, TExecution extends MinorModeExecution = MinorModeExecution>(\n mode: MinorModeDefinition<TRuntime, TExecution>,\n): DefinedMinorMode<TRuntime, TExecution> {\n return {\n descriptor: mode.descriptor,\n createOwner(runtime: TRuntime): MinorModeOwner<TExecution> {\n let handle: MinorModeOwnerHandle | undefined;\n const listeners = new Set<() => void>();\n const state = (): MinorModeState => mode.state(runtime);\n const publish = (): void => {\n handle?.publish(state());\n listeners.forEach((listener) => listener());\n };\n return {\n definition: {\n descriptor: mode.descriptor,\n initialState: state(),\n async handleAction(actionId: string, args: MinorModeArguments, execution: TExecution) {\n execution.signal.throwIfAborted();\n const result = await mode.handleAction(runtime, actionId, args, execution);\n publish();\n return result;\n },\n },\n state,\n publish,\n attach: (owner: MinorModeOwnerHandle) => {\n handle = owner;\n },\n detach: () => {\n handle = undefined;\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n },\n };\n}\n"],"mappings":";;AA8CA,SAAgB,gBACd,MACwC;CACxC,OAAO;EACL,YAAY,KAAK;EACjB,YAAY,SAA+C;GACzD,IAAI;GACJ,MAAM,4BAAY,IAAI,IAAgB;GACtC,MAAM,cAA8B,KAAK,MAAM,OAAO;GACtD,MAAM,gBAAsB;IAC1B,QAAQ,QAAQ,MAAM,CAAC;IACvB,UAAU,SAAS,aAAa,SAAS,CAAC;GAC5C;GACA,OAAO;IACL,YAAY;KACV,YAAY,KAAK;KACjB,cAAc,MAAM;KACpB,MAAM,aAAa,UAAkB,MAA0B,WAAuB;MACpF,UAAU,OAAO,eAAe;MAChC,MAAM,SAAS,MAAM,KAAK,aAAa,SAAS,UAAU,MAAM,SAAS;MACzE,QAAQ;MACR,OAAO;KACT;IACF;IACA;IACA;IACA,SAAS,UAAgC;KACvC,SAAS;IACX;IACA,cAAc;KACZ,SAAS,KAAA;IACX;IACA,UAAU,UAAU;KAClB,UAAU,IAAI,QAAQ;KACtB,aAAa;MACX,UAAU,OAAO,QAAQ;KAC3B;IACF;GACF;EACF;CACF;AACF"}
package/dist/mode.cjs ADDED
@@ -0,0 +1,275 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let typebox = require("typebox");
3
+ //#region src/schemas/mode.ts
4
+ const MINOR_MODE_CATALOG_SOURCE = "@agimon-ai/doompi/mode-catalog";
5
+ const DOOM_MINOR_MODE_CATALOG_SERVICE = "doom/minor-mode-catalog";
6
+ const MINOR_MODE_TOOL_NAME = "minor_mode";
7
+ const MINOR_MODE_ACTION_TIMEOUT_MS = 3e4;
8
+ const MINOR_MODE_MAX_RECORDS = 128;
9
+ const MINOR_MODE_MAX_ACTIONS = 16;
10
+ const MINOR_MODE_MAX_PARAMETERS = 16;
11
+ const MINOR_MODE_MAX_ENUM_CHOICES = 32;
12
+ const MINOR_MODE_MAX_ARGUMENT_LENGTH = 4096;
13
+ const MAX_SOURCE_LENGTH = 128;
14
+ const MAX_ID_LENGTH = 128;
15
+ const MAX_GENERATION_LENGTH = 256;
16
+ const MAX_LABEL_LENGTH = 48;
17
+ const MAX_DESCRIPTION_LENGTH = 240;
18
+ const MAX_DETAIL_LENGTH = 160;
19
+ const MINOR_MODE_ERROR_CODE = {
20
+ actionAborted: "MINOR_MODE_ACTION_ABORTED",
21
+ actionDisabled: "MINOR_MODE_ACTION_DISABLED",
22
+ actionNotFound: "MINOR_MODE_ACTION_NOT_FOUND",
23
+ actionTimeout: "MINOR_MODE_ACTION_TIMEOUT",
24
+ invalidArguments: "MINOR_MODE_INVALID_ARGUMENTS",
25
+ modeBusy: "MINOR_MODE_BUSY",
26
+ modeNotFound: "MINOR_MODE_NOT_FOUND",
27
+ ownerFailed: "MINOR_MODE_OWNER_FAILED",
28
+ registrationConflict: "MINOR_MODE_REGISTRATION_CONFLICT",
29
+ sessionReplaced: "MINOR_MODE_SESSION_REPLACED",
30
+ staleRegistration: "MINOR_MODE_STALE_REGISTRATION",
31
+ unsupportedContext: "MINOR_MODE_UNSUPPORTED_CONTEXT"
32
+ };
33
+ const MinorModeSourceSchema = typebox.Type.String({
34
+ minLength: 1,
35
+ maxLength: MAX_SOURCE_LENGTH,
36
+ pattern: "^[A-Za-z0-9@][A-Za-z0-9@/._:-]*$"
37
+ });
38
+ const MinorModeIdSchema = typebox.Type.String({
39
+ minLength: 1,
40
+ maxLength: MAX_ID_LENGTH,
41
+ pattern: "^[a-z0-9][a-z0-9._:-]*$"
42
+ });
43
+ const MinorModeParameterNameSchema = typebox.Type.String({
44
+ minLength: 1,
45
+ maxLength: MAX_ID_LENGTH,
46
+ pattern: "^[a-z][A-Za-z0-9._:-]*$"
47
+ });
48
+ const GenerationSchema = typebox.Type.String({
49
+ minLength: 1,
50
+ maxLength: MAX_GENERATION_LENGTH
51
+ });
52
+ const LabelSchema = typebox.Type.String({
53
+ minLength: 1,
54
+ maxLength: MAX_LABEL_LENGTH
55
+ });
56
+ const DescriptionSchema = typebox.Type.String({
57
+ minLength: 1,
58
+ maxLength: MAX_DESCRIPTION_LENGTH
59
+ });
60
+ const OperationIdSchema = typebox.Type.String({
61
+ minLength: 1,
62
+ maxLength: MAX_GENERATION_LENGTH
63
+ });
64
+ const ModeTextColorSchema = typebox.Type.Union([
65
+ typebox.Type.Literal("accent"),
66
+ typebox.Type.Literal("warning"),
67
+ typebox.Type.Literal("mdHeading"),
68
+ typebox.Type.Literal("muted"),
69
+ typebox.Type.Literal("dim")
70
+ ]);
71
+ const MinorModeSessionKindSchema = typebox.Type.Union([typebox.Type.Literal("tui"), typebox.Type.Literal("headless")]);
72
+ const MinorModeActivationSchema = typebox.Type.Union([
73
+ typebox.Type.Literal("inactive"),
74
+ typebox.Type.Literal("activating"),
75
+ typebox.Type.Literal("active"),
76
+ typebox.Type.Literal("deactivating")
77
+ ]);
78
+ const MinorModeConditionSchema = typebox.Type.Union([
79
+ typebox.Type.Literal("ready"),
80
+ typebox.Type.Literal("paused"),
81
+ typebox.Type.Literal("blocked"),
82
+ typebox.Type.Literal("limited"),
83
+ typebox.Type.Literal("queued"),
84
+ typebox.Type.Literal("degraded"),
85
+ typebox.Type.Literal("failed")
86
+ ]);
87
+ const MinorModeScalarSchema = typebox.Type.Union([
88
+ typebox.Type.String({ maxLength: MINOR_MODE_MAX_ARGUMENT_LENGTH }),
89
+ typebox.Type.Number(),
90
+ typebox.Type.Boolean()
91
+ ]);
92
+ const ParameterBase = {
93
+ name: MinorModeParameterNameSchema,
94
+ label: LabelSchema,
95
+ description: typebox.Type.Optional(DescriptionSchema),
96
+ required: typebox.Type.Boolean()
97
+ };
98
+ const MinorModeActionParameterSchema = typebox.Type.Union([
99
+ typebox.Type.Object({
100
+ ...ParameterBase,
101
+ kind: typebox.Type.Literal("string"),
102
+ minLength: typebox.Type.Optional(typebox.Type.Integer({
103
+ minimum: 0,
104
+ maximum: MINOR_MODE_MAX_ARGUMENT_LENGTH
105
+ })),
106
+ maxLength: typebox.Type.Optional(typebox.Type.Integer({
107
+ minimum: 1,
108
+ maximum: MINOR_MODE_MAX_ARGUMENT_LENGTH
109
+ }))
110
+ }, { additionalProperties: false }),
111
+ typebox.Type.Object({
112
+ ...ParameterBase,
113
+ kind: typebox.Type.Literal("number"),
114
+ integer: typebox.Type.Optional(typebox.Type.Boolean()),
115
+ minimum: typebox.Type.Optional(typebox.Type.Number()),
116
+ maximum: typebox.Type.Optional(typebox.Type.Number())
117
+ }, { additionalProperties: false }),
118
+ typebox.Type.Object({
119
+ ...ParameterBase,
120
+ kind: typebox.Type.Literal("boolean")
121
+ }, { additionalProperties: false }),
122
+ typebox.Type.Object({
123
+ ...ParameterBase,
124
+ kind: typebox.Type.Literal("enum"),
125
+ choices: typebox.Type.Array(typebox.Type.Object({
126
+ value: typebox.Type.String({
127
+ minLength: 1,
128
+ maxLength: MAX_ID_LENGTH
129
+ }),
130
+ label: LabelSchema
131
+ }, { additionalProperties: false }), {
132
+ minItems: 1,
133
+ maxItems: 32
134
+ })
135
+ }, { additionalProperties: false })
136
+ ]);
137
+ const MinorModeActionDescriptorSchema = typebox.Type.Object({
138
+ id: MinorModeIdSchema,
139
+ label: LabelSchema,
140
+ description: DescriptionSchema,
141
+ contexts: typebox.Type.Array(MinorModeSessionKindSchema, {
142
+ minItems: 1,
143
+ maxItems: 2,
144
+ uniqueItems: true
145
+ }),
146
+ parameters: typebox.Type.Array(MinorModeActionParameterSchema, { maxItems: 16 })
147
+ }, { additionalProperties: false });
148
+ const MinorModeDescriptorSchema = typebox.Type.Object({
149
+ source: MinorModeSourceSchema,
150
+ id: MinorModeIdSchema,
151
+ label: LabelSchema,
152
+ description: DescriptionSchema,
153
+ order: typebox.Type.Integer({
154
+ minimum: 0,
155
+ maximum: 1e3
156
+ }),
157
+ actions: typebox.Type.Array(MinorModeActionDescriptorSchema, { maxItems: 16 })
158
+ }, { additionalProperties: false });
159
+ const MinorModeActionAvailabilitySchema = typebox.Type.Object({
160
+ id: MinorModeIdSchema,
161
+ enabled: typebox.Type.Boolean(),
162
+ disabledReason: typebox.Type.Optional(typebox.Type.String({
163
+ minLength: 1,
164
+ maxLength: MAX_DETAIL_LENGTH
165
+ }))
166
+ }, { additionalProperties: false });
167
+ const MinorModeStateSchema = typebox.Type.Object({
168
+ activation: MinorModeActivationSchema,
169
+ condition: MinorModeConditionSchema,
170
+ detail: typebox.Type.Optional(typebox.Type.String({
171
+ minLength: 1,
172
+ maxLength: MAX_DETAIL_LENGTH
173
+ })),
174
+ color: typebox.Type.Optional(ModeTextColorSchema),
175
+ modelContextVariant: typebox.Type.Optional(typebox.Type.String({
176
+ minLength: 1,
177
+ maxLength: MAX_ID_LENGTH
178
+ })),
179
+ actions: typebox.Type.Array(MinorModeActionAvailabilitySchema, { maxItems: 16 })
180
+ }, { additionalProperties: false });
181
+ const MinorModeRegistrationRefSchema = typebox.Type.Object({
182
+ source: MinorModeSourceSchema,
183
+ id: MinorModeIdSchema,
184
+ ownerGeneration: GenerationSchema,
185
+ registrationId: GenerationSchema
186
+ }, { additionalProperties: false });
187
+ const MinorModeRecordSchema = typebox.Type.Object({
188
+ descriptor: MinorModeDescriptorSchema,
189
+ state: MinorModeStateSchema,
190
+ ownerGeneration: GenerationSchema,
191
+ registrationId: GenerationSchema,
192
+ stateRevision: typebox.Type.Integer({ minimum: 0 })
193
+ }, { additionalProperties: false });
194
+ const MinorModeCatalogSnapshotSchema = typebox.Type.Object({
195
+ hostGeneration: GenerationSchema,
196
+ revision: typebox.Type.Integer({ minimum: 0 }),
197
+ modes: typebox.Type.Array(MinorModeRecordSchema, { maxItems: 128 })
198
+ }, { additionalProperties: false });
199
+ const MinorModeArgumentsSchema = typebox.Type.Record(MinorModeParameterNameSchema, MinorModeScalarSchema, { maxProperties: 16 });
200
+ const MinorModeToolInputSchema = typebox.Type.Object({
201
+ action: typebox.Type.Union([typebox.Type.Literal("list"), typebox.Type.Literal("invoke")]),
202
+ source: typebox.Type.Optional(MinorModeSourceSchema),
203
+ id: typebox.Type.Optional(MinorModeIdSchema),
204
+ ownerGeneration: typebox.Type.Optional(GenerationSchema),
205
+ registrationId: typebox.Type.Optional(GenerationSchema),
206
+ modeAction: typebox.Type.Optional(MinorModeIdSchema),
207
+ arguments: typebox.Type.Optional(MinorModeArgumentsSchema)
208
+ }, { additionalProperties: false });
209
+ const MinorModeToolResultSchema = typebox.Type.Unknown();
210
+ const MinorModeActionRequestSchema = typebox.Type.Object({
211
+ operationId: OperationIdSchema,
212
+ mode: MinorModeRegistrationRefSchema,
213
+ actionId: MinorModeIdSchema,
214
+ arguments: MinorModeArgumentsSchema
215
+ }, { additionalProperties: false });
216
+ const MinorModeActionResponseSchema = typebox.Type.Object({
217
+ operationId: OperationIdSchema,
218
+ catalogRevision: typebox.Type.Integer({ minimum: 0 }),
219
+ mode: MinorModeRecordSchema,
220
+ message: typebox.Type.Optional(typebox.Type.String({
221
+ minLength: 1,
222
+ maxLength: MAX_DETAIL_LENGTH
223
+ }))
224
+ }, { additionalProperties: false });
225
+ /**
226
+ * The custom session entry the catalog host journals whenever its projection
227
+ * changes. It rides Pi's entry_appended frames, so any RPC client (the web
228
+ * cockpit) sees minor-mode state live and on replay without a new protocol.
229
+ */
230
+ const DOOM_MINOR_MODE_ENTRY_TYPE = "doom-minor-modes";
231
+ function readMinorModeCatalog(context) {
232
+ return context.get(DOOM_MINOR_MODE_CATALOG_SERVICE);
233
+ }
234
+ function requireMinorModeCatalog(context) {
235
+ const catalog = readMinorModeCatalog(context);
236
+ if (!catalog) throw new Error("Doom minor-mode catalog is unavailable.");
237
+ return catalog;
238
+ }
239
+ //#endregion
240
+ exports.DOOM_MINOR_MODE_CATALOG_SERVICE = DOOM_MINOR_MODE_CATALOG_SERVICE;
241
+ exports.DOOM_MINOR_MODE_ENTRY_TYPE = DOOM_MINOR_MODE_ENTRY_TYPE;
242
+ exports.MINOR_MODE_ACTION_TIMEOUT_MS = MINOR_MODE_ACTION_TIMEOUT_MS;
243
+ exports.MINOR_MODE_CATALOG_SOURCE = MINOR_MODE_CATALOG_SOURCE;
244
+ exports.MINOR_MODE_ERROR_CODE = MINOR_MODE_ERROR_CODE;
245
+ exports.MINOR_MODE_MAX_ACTIONS = MINOR_MODE_MAX_ACTIONS;
246
+ exports.MINOR_MODE_MAX_ARGUMENT_LENGTH = MINOR_MODE_MAX_ARGUMENT_LENGTH;
247
+ exports.MINOR_MODE_MAX_ENUM_CHOICES = MINOR_MODE_MAX_ENUM_CHOICES;
248
+ exports.MINOR_MODE_MAX_PARAMETERS = MINOR_MODE_MAX_PARAMETERS;
249
+ exports.MINOR_MODE_MAX_RECORDS = MINOR_MODE_MAX_RECORDS;
250
+ exports.MINOR_MODE_TOOL_NAME = MINOR_MODE_TOOL_NAME;
251
+ exports.MinorModeActionAvailabilitySchema = MinorModeActionAvailabilitySchema;
252
+ exports.MinorModeActionDescriptorSchema = MinorModeActionDescriptorSchema;
253
+ exports.MinorModeActionParameterSchema = MinorModeActionParameterSchema;
254
+ exports.MinorModeActionRequestSchema = MinorModeActionRequestSchema;
255
+ exports.MinorModeActionResponseSchema = MinorModeActionResponseSchema;
256
+ exports.MinorModeActivationSchema = MinorModeActivationSchema;
257
+ exports.MinorModeArgumentsSchema = MinorModeArgumentsSchema;
258
+ exports.MinorModeCatalogSnapshotSchema = MinorModeCatalogSnapshotSchema;
259
+ exports.MinorModeConditionSchema = MinorModeConditionSchema;
260
+ exports.MinorModeDescriptorSchema = MinorModeDescriptorSchema;
261
+ exports.MinorModeIdSchema = MinorModeIdSchema;
262
+ exports.MinorModeParameterNameSchema = MinorModeParameterNameSchema;
263
+ exports.MinorModeRecordSchema = MinorModeRecordSchema;
264
+ exports.MinorModeRegistrationRefSchema = MinorModeRegistrationRefSchema;
265
+ exports.MinorModeScalarSchema = MinorModeScalarSchema;
266
+ exports.MinorModeSessionKindSchema = MinorModeSessionKindSchema;
267
+ exports.MinorModeSourceSchema = MinorModeSourceSchema;
268
+ exports.MinorModeStateSchema = MinorModeStateSchema;
269
+ exports.MinorModeToolInputSchema = MinorModeToolInputSchema;
270
+ exports.MinorModeToolResultSchema = MinorModeToolResultSchema;
271
+ exports.ModeTextColorSchema = ModeTextColorSchema;
272
+ exports.readMinorModeCatalog = readMinorModeCatalog;
273
+ exports.requireMinorModeCatalog = requireMinorModeCatalog;
274
+
275
+ //# sourceMappingURL=mode.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode.cjs","names":["Type"],"sources":["../src/schemas/mode.ts"],"sourcesContent":["import type { DoomExtensionContext } from '@agimon-ai/doompi-core/runtime-config';\nimport type { Context } from '@deepseek-ai/cordis';\nimport { type Static, Type } from 'typebox';\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":";;;AAIA,MAAa,4BAA4B;AACzC,MAAa,kCAAkC;AAC/C,MAAa,uBAAuB;AACpC,MAAa,+BAA+B;AAC5C,MAAa,yBAAyB;AACtC,MAAa,yBAAyB;AACtC,MAAa,4BAA4B;AACzC,MAAa,8BAA8B;AAC3C,MAAa,iCAAiC;AAE9C,MAAM,oBAAoB;AAC1B,MAAM,gBAAgB;AACtB,MAAM,wBAAwB;AAC9B,MAAM,mBAAmB;AACzB,MAAM,yBAAyB;AAC/B,MAAM,oBAAoB;AAE1B,MAAa,wBAAwB;CACnC,eAAe;CACf,gBAAgB;CAChB,gBAAgB;CAChB,eAAe;CACf,kBAAkB;CAClB,UAAU;CACV,cAAc;CACd,aAAa;CACb,sBAAsB;CACtB,iBAAiB;CACjB,mBAAmB;CACnB,oBAAoB;AACtB;AAEA,MAAa,wBAAwBA,QAAAA,KAAK,OAAO;CAC/C,WAAW;CACX,WAAW;CACX,SAAS;AACX,CAAC;AACD,MAAa,oBAAoBA,QAAAA,KAAK,OAAO;CAC3C,WAAW;CACX,WAAW;CACX,SAAS;AACX,CAAC;AACD,MAAa,+BAA+BA,QAAAA,KAAK,OAAO;CACtD,WAAW;CACX,WAAW;CACX,SAAS;AACX,CAAC;AACD,MAAM,mBAAmBA,QAAAA,KAAK,OAAO;CAAE,WAAW;CAAG,WAAW;AAAsB,CAAC;AACvF,MAAM,cAAcA,QAAAA,KAAK,OAAO;CAAE,WAAW;CAAG,WAAW;AAAiB,CAAC;AAC7E,MAAM,oBAAoBA,QAAAA,KAAK,OAAO;CAAE,WAAW;CAAG,WAAW;AAAuB,CAAC;AACzF,MAAM,oBAAoBA,QAAAA,KAAK,OAAO;CAAE,WAAW;CAAG,WAAW;AAAsB,CAAC;AAExF,MAAa,sBAAsBA,QAAAA,KAAK,MAAM;CAC5CA,QAAAA,KAAK,QAAQ,QAAQ;CACrBA,QAAAA,KAAK,QAAQ,SAAS;CACtBA,QAAAA,KAAK,QAAQ,WAAW;CACxBA,QAAAA,KAAK,QAAQ,OAAO;CACpBA,QAAAA,KAAK,QAAQ,KAAK;AACpB,CAAC;AAGD,MAAa,6BAA6BA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,KAAK,GAAGA,QAAAA,KAAK,QAAQ,UAAU,CAAC,CAAC;AAGpG,MAAa,4BAA4BA,QAAAA,KAAK,MAAM;CAClDA,QAAAA,KAAK,QAAQ,UAAU;CACvBA,QAAAA,KAAK,QAAQ,YAAY;CACzBA,QAAAA,KAAK,QAAQ,QAAQ;CACrBA,QAAAA,KAAK,QAAQ,cAAc;AAC7B,CAAC;AAGD,MAAa,2BAA2BA,QAAAA,KAAK,MAAM;CACjDA,QAAAA,KAAK,QAAQ,OAAO;CACpBA,QAAAA,KAAK,QAAQ,QAAQ;CACrBA,QAAAA,KAAK,QAAQ,SAAS;CACtBA,QAAAA,KAAK,QAAQ,SAAS;CACtBA,QAAAA,KAAK,QAAQ,QAAQ;CACrBA,QAAAA,KAAK,QAAQ,UAAU;CACvBA,QAAAA,KAAK,QAAQ,QAAQ;AACvB,CAAC;AAGD,MAAa,wBAAwBA,QAAAA,KAAK,MAAM;CAC9CA,QAAAA,KAAK,OAAO,EAAE,WAAW,+BAA+B,CAAC;CACzDA,QAAAA,KAAK,OAAO;CACZA,QAAAA,KAAK,QAAQ;AACf,CAAC;AAGD,MAAM,gBAAgB;CACpB,MAAM;CACN,OAAO;CACP,aAAaA,QAAAA,KAAK,SAAS,iBAAiB;CAC5C,UAAUA,QAAAA,KAAK,QAAQ;AACzB;AAEA,MAAa,iCAAiCA,QAAAA,KAAK,MAAM;CACvDA,QAAAA,KAAK,OACH;EACE,GAAG;EACH,MAAMA,QAAAA,KAAK,QAAQ,QAAQ;EAC3B,WAAWA,QAAAA,KAAK,SAASA,QAAAA,KAAK,QAAQ;GAAE,SAAS;GAAG,SAAS;EAA+B,CAAC,CAAC;EAC9F,WAAWA,QAAAA,KAAK,SAASA,QAAAA,KAAK,QAAQ;GAAE,SAAS;GAAG,SAAS;EAA+B,CAAC,CAAC;CAChG,GACA,EAAE,sBAAsB,MAAM,CAChC;CACAA,QAAAA,KAAK,OACH;EACE,GAAG;EACH,MAAMA,QAAAA,KAAK,QAAQ,QAAQ;EAC3B,SAASA,QAAAA,KAAK,SAASA,QAAAA,KAAK,QAAQ,CAAC;EACrC,SAASA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO,CAAC;EACpC,SAASA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO,CAAC;CACtC,GACA,EAAE,sBAAsB,MAAM,CAChC;CACAA,QAAAA,KAAK,OAAO;EAAE,GAAG;EAAe,MAAMA,QAAAA,KAAK,QAAQ,SAAS;CAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC;CAChGA,QAAAA,KAAK,OACH;EACE,GAAG;EACH,MAAMA,QAAAA,KAAK,QAAQ,MAAM;EACzB,SAASA,QAAAA,KAAK,MACZA,QAAAA,KAAK,OACH;GACE,OAAOA,QAAAA,KAAK,OAAO;IAAE,WAAW;IAAG,WAAW;GAAc,CAAC;GAC7D,OAAO;EACT,GACA,EAAE,sBAAsB,MAAM,CAChC,GACA;GAAE,UAAU;GAAG,UAAA;EAAsC,CACvD;CACF,GACA,EAAE,sBAAsB,MAAM,CAChC;AACF,CAAC;AAGD,MAAa,kCAAkCA,QAAAA,KAAK,OAClD;CACE,IAAI;CACJ,OAAO;CACP,aAAa;CACb,UAAUA,QAAAA,KAAK,MAAM,4BAA4B;EAAE,UAAU;EAAG,UAAU;EAAG,aAAa;CAAK,CAAC;CAChG,YAAYA,QAAAA,KAAK,MAAM,gCAAgC,EAAE,UAAA,GAAoC,CAAC;AAChG,GACA,EAAE,sBAAsB,MAAM,CAChC;AAGA,MAAa,4BAA4BA,QAAAA,KAAK,OAC5C;CACE,QAAQ;CACR,IAAI;CACJ,OAAO;CACP,aAAa;CACb,OAAOA,QAAAA,KAAK,QAAQ;EAAE,SAAS;EAAG,SAAS;CAAM,CAAC;CAClD,SAASA,QAAAA,KAAK,MAAM,iCAAiC,EAAE,UAAA,GAAiC,CAAC;AAC3F,GACA,EAAE,sBAAsB,MAAM,CAChC;AAGA,MAAa,oCAAoCA,QAAAA,KAAK,OACpD;CACE,IAAI;CACJ,SAASA,QAAAA,KAAK,QAAQ;CACtB,gBAAgBA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO;EAAE,WAAW;EAAG,WAAW;CAAkB,CAAC,CAAC;AAC3F,GACA,EAAE,sBAAsB,MAAM,CAChC;AAGA,MAAa,uBAAuBA,QAAAA,KAAK,OACvC;CACE,YAAY;CACZ,WAAW;CACX,QAAQA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO;EAAE,WAAW;EAAG,WAAW;CAAkB,CAAC,CAAC;CACjF,OAAOA,QAAAA,KAAK,SAAS,mBAAmB;CACxC,qBAAqBA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO;EAAE,WAAW;EAAG,WAAW;CAAc,CAAC,CAAC;CAC1F,SAASA,QAAAA,KAAK,MAAM,mCAAmC,EAAE,UAAA,GAAiC,CAAC;AAC7F,GACA,EAAE,sBAAsB,MAAM,CAChC;AAGA,MAAa,iCAAiCA,QAAAA,KAAK,OACjD;CACE,QAAQ;CACR,IAAI;CACJ,iBAAiB;CACjB,gBAAgB;AAClB,GACA,EAAE,sBAAsB,MAAM,CAChC;AAGA,MAAa,wBAAwBA,QAAAA,KAAK,OACxC;CACE,YAAY;CACZ,OAAO;CACP,iBAAiB;CACjB,gBAAgB;CAChB,eAAeA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC5C,GACA,EAAE,sBAAsB,MAAM,CAChC;AAGA,MAAa,iCAAiCA,QAAAA,KAAK,OACjD;CACE,gBAAgB;CAChB,UAAUA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;CACrC,OAAOA,QAAAA,KAAK,MAAM,uBAAuB,EAAE,UAAA,IAAiC,CAAC;AAC/E,GACA,EAAE,sBAAsB,MAAM,CAChC;AAGA,MAAa,2BAA2BA,QAAAA,KAAK,OAAO,8BAA8B,uBAAuB,EACvG,eAAA,GACF,CAAC;AAGD,MAAa,2BAA2BA,QAAAA,KAAK,OAC3C;CACE,QAAQA,QAAAA,KAAK,MAAM,CAACA,QAAAA,KAAK,QAAQ,MAAM,GAAGA,QAAAA,KAAK,QAAQ,QAAQ,CAAC,CAAC;CACjE,QAAQA,QAAAA,KAAK,SAAS,qBAAqB;CAC3C,IAAIA,QAAAA,KAAK,SAAS,iBAAiB;CACnC,iBAAiBA,QAAAA,KAAK,SAAS,gBAAgB;CAC/C,gBAAgBA,QAAAA,KAAK,SAAS,gBAAgB;CAC9C,YAAYA,QAAAA,KAAK,SAAS,iBAAiB;CAC3C,WAAWA,QAAAA,KAAK,SAAS,wBAAwB;AACnD,GACA,EAAE,sBAAsB,MAAM,CAChC;AAEA,MAAa,4BAA4BA,QAAAA,KAAK,QAAQ;AAEtD,MAAa,+BAA+BA,QAAAA,KAAK,OAC/C;CACE,aAAa;CACb,MAAM;CACN,UAAU;CACV,WAAW;AACb,GACA,EAAE,sBAAsB,MAAM,CAChC;AAGA,MAAa,gCAAgCA,QAAAA,KAAK,OAChD;CACE,aAAa;CACb,iBAAiBA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;CAC5C,MAAM;CACN,SAASA,QAAAA,KAAK,SAASA,QAAAA,KAAK,OAAO;EAAE,WAAW;EAAG,WAAW;CAAkB,CAAC,CAAC;AACpF,GACA,EAAE,sBAAsB,MAAM,CAChC;;;;;;AAQA,MAAa,6BAA6B;AAoF1C,SAAgB,qBAAqB,SAAuD;CAC1F,OAAO,QAAQ,IAAI,+BAA+B;AACpD;AAEA,SAAgB,wBAAwB,SAA2C;CACjF,MAAM,UAAU,qBAAqB,OAAO;CAC5C,IAAI,CAAC,SAAS,MAAM,IAAI,MAAM,yCAAyC;CACvE,OAAO;AACT"}