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

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 (103) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/apiContracts.cjs +17 -0
  4. package/dist/apiContracts.cjs.map +1 -0
  5. package/dist/apiContracts.d.mts +53 -0
  6. package/dist/apiContracts.d.mts.map +1 -0
  7. package/dist/apiContracts.mjs +13 -0
  8. package/dist/apiContracts.mjs.map +1 -0
  9. package/dist/catalog-8apySKXB.mjs +222 -0
  10. package/dist/catalog-8apySKXB.mjs.map +1 -0
  11. package/dist/catalog-jTd7UXiI.cjs +227 -0
  12. package/dist/catalog-jTd7UXiI.cjs.map +1 -0
  13. package/dist/catalog.cjs +3 -0
  14. package/dist/catalog.d.mts +14 -0
  15. package/dist/catalog.d.mts.map +1 -0
  16. package/dist/catalog.mjs +2 -0
  17. package/dist/command-B5HZmmyU.cjs +11 -0
  18. package/dist/command-B5HZmmyU.cjs.map +1 -0
  19. package/dist/command-BvYpwiin.mjs +6 -0
  20. package/dist/command-BvYpwiin.mjs.map +1 -0
  21. package/dist/command-C4u3oOPT.mjs +128 -0
  22. package/dist/command-C4u3oOPT.mjs.map +1 -0
  23. package/dist/command-D9hQfJb_.cjs +151 -0
  24. package/dist/command-D9hQfJb_.cjs.map +1 -0
  25. package/dist/command.cjs +8 -0
  26. package/dist/command.d.mts +6 -0
  27. package/dist/command.d.mts.map +1 -0
  28. package/dist/command.mjs +3 -0
  29. package/dist/extensions/pi.cjs +181 -0
  30. package/dist/extensions/pi.cjs.map +1 -0
  31. package/dist/extensions/pi.d.mts +5 -0
  32. package/dist/extensions/pi.d.mts.map +1 -0
  33. package/dist/extensions/pi.mjs +176 -0
  34. package/dist/extensions/pi.mjs.map +1 -0
  35. package/dist/extensions/server.cjs +134 -0
  36. package/dist/extensions/server.cjs.map +1 -0
  37. package/dist/extensions/server.d.mts +5 -0
  38. package/dist/extensions/server.d.mts.map +1 -0
  39. package/dist/extensions/server.mjs +129 -0
  40. package/dist/extensions/server.mjs.map +1 -0
  41. package/dist/headlessCommand-BJhocUje.mjs +53 -0
  42. package/dist/headlessCommand-BJhocUje.mjs.map +1 -0
  43. package/dist/headlessCommand-CaFFcvJA.cjs +58 -0
  44. package/dist/headlessCommand-CaFFcvJA.cjs.map +1 -0
  45. package/dist/index-COS4uLcb.d.mts +24 -0
  46. package/dist/index-COS4uLcb.d.mts.map +1 -0
  47. package/dist/index-DEjyk6tg.d.mts +8 -0
  48. package/dist/index-DEjyk6tg.d.mts.map +1 -0
  49. package/dist/index-DSKnT657.d.mts +31 -0
  50. package/dist/index-DSKnT657.d.mts.map +1 -0
  51. package/dist/index.cjs +180 -0
  52. package/dist/index.cjs.map +1 -0
  53. package/dist/index.d.mts +53 -0
  54. package/dist/index.d.mts.map +1 -0
  55. package/dist/index.mjs +136 -0
  56. package/dist/index.mjs.map +1 -0
  57. package/dist/minorModeCommand.cjs +5 -0
  58. package/dist/minorModeCommand.d.mts +2 -0
  59. package/dist/minorModeCommand.mjs +2 -0
  60. package/dist/mode-BwRkDqO4.mjs +241 -0
  61. package/dist/mode-BwRkDqO4.mjs.map +1 -0
  62. package/dist/mode-Dft08ke8.cjs +444 -0
  63. package/dist/mode-Dft08ke8.cjs.map +1 -0
  64. package/dist/mode-EZWqhrYy.d.mts +492 -0
  65. package/dist/mode-EZWqhrYy.d.mts.map +1 -0
  66. package/dist/mode.cjs +36 -0
  67. package/dist/mode.d.mts +2 -0
  68. package/dist/mode.mjs +2 -0
  69. package/dist/modeDefinition-BcqEwTzh.mjs +46 -0
  70. package/dist/modeDefinition-BcqEwTzh.mjs.map +1 -0
  71. package/dist/modeDefinition-BtgwqXMo.cjs +51 -0
  72. package/dist/modeDefinition-BtgwqXMo.cjs.map +1 -0
  73. package/dist/modeDefinition.cjs +3 -0
  74. package/dist/modeDefinition.d.mts +2 -0
  75. package/dist/modeDefinition.mjs +2 -0
  76. package/dist/owner-BbCQufLu.cjs +14 -0
  77. package/dist/owner-BbCQufLu.cjs.map +1 -0
  78. package/dist/owner-Bs55c_qE.mjs +9 -0
  79. package/dist/owner-Bs55c_qE.mjs.map +1 -0
  80. package/dist/owner.cjs +3 -0
  81. package/dist/owner.d.mts +2 -0
  82. package/dist/owner.mjs +2 -0
  83. package/dist/projection-Cy1LWVIe.mjs +47 -0
  84. package/dist/projection-Cy1LWVIe.mjs.map +1 -0
  85. package/dist/projection-DYOm9Kev.cjs +58 -0
  86. package/dist/projection-DYOm9Kev.cjs.map +1 -0
  87. package/dist/projection.cjs +4 -0
  88. package/dist/projection.d.mts +12 -0
  89. package/dist/projection.d.mts.map +1 -0
  90. package/dist/projection.mjs +2 -0
  91. package/dist/reloadHandoff-C-GaCf0F.cjs +71 -0
  92. package/dist/reloadHandoff-C-GaCf0F.cjs.map +1 -0
  93. package/dist/reloadHandoff-D1QsS9qd.mjs +54 -0
  94. package/dist/reloadHandoff-D1QsS9qd.mjs.map +1 -0
  95. package/dist/reloadHandoff.cjs +5 -0
  96. package/dist/reloadHandoff.d.mts +11 -0
  97. package/dist/reloadHandoff.d.mts.map +1 -0
  98. package/dist/reloadHandoff.mjs +2 -0
  99. package/dist/validation-BuQc8UrL.mjs +81 -0
  100. package/dist/validation-BuQc8UrL.mjs.map +1 -0
  101. package/dist/validation-DRV8Dtoc.cjs +104 -0
  102. package/dist/validation-DRV8Dtoc.cjs.map +1 -0
  103. package/package.json +157 -0
@@ -0,0 +1,58 @@
1
+ const require_command = require("./command-B5HZmmyU.cjs");
2
+ const require_command$1 = require("./command-D9hQfJb_.cjs");
3
+ //#region src/services/headlessCommand/index.ts
4
+ function headlessMinorModeCommand(catalog) {
5
+ return {
6
+ name: require_command$1.MINOR_MODE_COMMAND,
7
+ description: require_command.MINOR_MODE_COMMAND_DESCRIPTION,
8
+ async execute(args, execution) {
9
+ const executionClient = execution.client;
10
+ await require_command$1.executeMinorModeCommand(args, {
11
+ catalog,
12
+ kind: "headless",
13
+ ui: {
14
+ async select(title, options) {
15
+ const selected = await executionClient.request({
16
+ kind: "select",
17
+ title,
18
+ options: options.map((label) => ({
19
+ label,
20
+ value: label
21
+ }))
22
+ });
23
+ return typeof selected === "string" ? selected : void 0;
24
+ },
25
+ async input(title, message) {
26
+ const entered = await executionClient.request({
27
+ kind: "input",
28
+ title,
29
+ message
30
+ });
31
+ return typeof entered === "string" ? entered : void 0;
32
+ },
33
+ async confirm(title, message) {
34
+ const confirmed = await executionClient.request({
35
+ kind: "confirm",
36
+ title,
37
+ message
38
+ });
39
+ return typeof confirmed === "boolean" ? confirmed : void 0;
40
+ },
41
+ notify: (message, level) => executionClient.notify({
42
+ body: message,
43
+ level
44
+ })
45
+ }
46
+ });
47
+ }
48
+ };
49
+ }
50
+ //#endregion
51
+ Object.defineProperty(exports, "headlessMinorModeCommand", {
52
+ enumerable: true,
53
+ get: function() {
54
+ return headlessMinorModeCommand;
55
+ }
56
+ });
57
+
58
+ //# sourceMappingURL=headlessCommand-CaFFcvJA.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headlessCommand-CaFFcvJA.cjs","names":["MINOR_MODE_COMMAND","MINOR_MODE_COMMAND_DESCRIPTION","executeMinorModeCommand"],"sources":["../src/services/headlessCommand/index.ts"],"sourcesContent":["import type { DoomHeadlessCommand } from '@agimon-ai/doompi-core/headless';\n\nimport type { MinorModeCatalogService } from '../../schemas/mode';\nimport { executeMinorModeCommand, MINOR_MODE_COMMAND, MINOR_MODE_COMMAND_DESCRIPTION } from '../command';\nexport function headlessMinorModeCommand(catalog: MinorModeCatalogService): DoomHeadlessCommand {\n return {\n name: MINOR_MODE_COMMAND,\n description: MINOR_MODE_COMMAND_DESCRIPTION,\n async execute(args, execution) {\n const executionClient = execution.client;\n await executeMinorModeCommand(args, {\n catalog,\n kind: 'headless',\n ui: {\n async select(title, options) {\n const selected = await executionClient.request({\n kind: 'select',\n title,\n options: options.map((label) => ({ label, value: label })),\n });\n return typeof selected === 'string' ? selected : undefined;\n },\n async input(title, message) {\n const entered = await executionClient.request({ kind: 'input', title, message });\n return typeof entered === 'string' ? entered : undefined;\n },\n async confirm(title, message) {\n const confirmed = await executionClient.request({ kind: 'confirm', title, message });\n return typeof confirmed === 'boolean' ? confirmed : undefined;\n },\n notify: (message, level) => executionClient.notify({ body: message, level }),\n },\n });\n },\n };\n}\n"],"mappings":";;;AAIA,SAAgB,yBAAyB,SAAuD;CAC9F,OAAO;EACL,MAAMA,kBAAAA;EACN,aAAaC,gBAAAA;EACb,MAAM,QAAQ,MAAM,WAAW;GAC7B,MAAM,kBAAkB,UAAU;GAClC,MAAMC,kBAAAA,wBAAwB,MAAM;IAClC;IACA,MAAM;IACN,IAAI;KACF,MAAM,OAAO,OAAO,SAAS;MAC3B,MAAM,WAAW,MAAM,gBAAgB,QAAQ;OAC7C,MAAM;OACN;OACA,SAAS,QAAQ,KAAK,WAAW;QAAE;QAAO,OAAO;OAAM,EAAE;MAC3D,CAAC;MACD,OAAO,OAAO,aAAa,WAAW,WAAW,KAAA;KACnD;KACA,MAAM,MAAM,OAAO,SAAS;MAC1B,MAAM,UAAU,MAAM,gBAAgB,QAAQ;OAAE,MAAM;OAAS;OAAO;MAAQ,CAAC;MAC/E,OAAO,OAAO,YAAY,WAAW,UAAU,KAAA;KACjD;KACA,MAAM,QAAQ,OAAO,SAAS;MAC5B,MAAM,YAAY,MAAM,gBAAgB,QAAQ;OAAE,MAAM;OAAW;OAAO;MAAQ,CAAC;MACnF,OAAO,OAAO,cAAc,YAAY,YAAY,KAAA;KACtD;KACA,SAAS,SAAS,UAAU,gBAAgB,OAAO;MAAE,MAAM;MAAS;KAAM,CAAC;IAC7E;GACF,CAAC;EACH;CACF;AACF"}
@@ -0,0 +1,24 @@
1
+ import { D as MinorModeCatalogService, H as MinorModeRecord, Y as MinorModeSessionKind, m as MinorModeActionDescriptor } from "./mode-EZWqhrYy.mjs";
2
+ //#region src/services/command/index.d.ts
3
+ declare const MINOR_MODE_COMMAND = "minor";
4
+ type NotificationLevel = 'info' | 'warning' | 'error';
5
+ interface MinorModeCommandPrompter {
6
+ select(title: string, options: readonly string[]): Promise<string | undefined>;
7
+ input(title: string, message: string): Promise<string | undefined>;
8
+ confirm(title: string, message: string): Promise<boolean | undefined>;
9
+ notify(message: string, level: NotificationLevel): void | Promise<void>;
10
+ }
11
+ /** A catalog mode addressed the way a person types it: id, label, or id stem. */
12
+ declare function matchMinorMode(records: readonly MinorModeRecord[], query: string): MinorModeRecord | undefined;
13
+ /** The actions a session of this kind can currently take on a mode. */
14
+ declare function actionsFor(record: MinorModeRecord, kind: MinorModeSessionKind): MinorModeActionDescriptor[];
15
+ interface ExecuteMinorModeCommandOptions {
16
+ catalog: MinorModeCatalogService | undefined;
17
+ kind: MinorModeSessionKind;
18
+ ui: MinorModeCommandPrompter;
19
+ }
20
+ /** Runs the catalog command against an explicit interaction surface. */
21
+ declare function executeMinorModeCommand(args: string, options: ExecuteMinorModeCommandOptions): Promise<void>;
22
+ //#endregion
23
+ export { executeMinorModeCommand as a, actionsFor as i, MINOR_MODE_COMMAND as n, matchMinorMode as o, MinorModeCommandPrompter as r, ExecuteMinorModeCommandOptions as t };
24
+ //# sourceMappingURL=index-COS4uLcb.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-COS4uLcb.d.mts","names":[],"sources":["../src/services/command/index.ts"],"mappings":";;cAQa;KAIR;UAEY;EACf,OAAO,eAAe,6BAA6B;EACnD,MAAM,eAAe,kBAAkB;EACvC,QAAQ,eAAe,kBAAkB;EACzC,OAAO,iBAAiB,OAAO,2BAA2B;;;iBAQ5C,eAAe,kBAAkB,mBAAmB,gBAAgB;;iBAWpE,WAAW,QAAQ,iBAAiB,MAAM,uBAAuB;UA8ChE;EACf,SAAS;EACT,MAAM;EACN,IAAI;;;iBAIgB,wBAAwB,cAAc,SAAS,iCAAiC"}
@@ -0,0 +1,8 @@
1
+ import { D as MinorModeCatalogService, R as MinorModeOwnerDefinition, z as MinorModeOwnerHandle } from "./mode-EZWqhrYy.mjs";
2
+ import { DoomExtensionContext } from "@agimon-ai/doompi-core/runtimeConfig";
3
+ //#region src/services/owner/index.d.ts
4
+ /** Register an owner directly with the injected session catalog. */
5
+ declare function registerMinorModeOwner<ExtensionContext extends DoomExtensionContext>(catalog: MinorModeCatalogService, definition: MinorModeOwnerDefinition<ExtensionContext>): MinorModeOwnerHandle;
6
+ //#endregion
7
+ export { registerMinorModeOwner as t };
8
+ //# sourceMappingURL=index-DEjyk6tg.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DEjyk6tg.d.mts","names":[],"sources":["../src/services/owner/index.ts"],"mappings":";;;;iBAKgB,uBAAuB,yBAAyB,sBAC9D,SAAS,yBACT,YAAY,yBAAyB,oBACpC"}
@@ -0,0 +1,31 @@
1
+ import { L as MinorModeOwnerActionResult, M as MinorModeDescriptor, Q as MinorModeState, T as MinorModeArguments, z as MinorModeOwnerHandle } from "./mode-EZWqhrYy.mjs";
2
+ //#region src/services/modeDefinition/index.d.ts
3
+ interface MinorModeExecution {
4
+ readonly signal: AbortSignal;
5
+ }
6
+ 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
+ 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
+ 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
+ declare function defineMinorMode<TRuntime, TExecution extends MinorModeExecution = MinorModeExecution>(mode: MinorModeDefinition<TRuntime, TExecution>): DefinedMinorMode<TRuntime, TExecution>;
29
+ //#endregion
30
+ export { defineMinorMode as a, MinorModeOwner as i, MinorModeDefinition as n, MinorModeExecution as r, DefinedMinorMode as t };
31
+ //# sourceMappingURL=index-DSKnT657.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DSKnT657.d.mts","names":[],"sources":["../src/services/modeDefinition/index.ts"],"mappings":";;UAQiB;WACN,QAAQ;;UAGF,oBAAoB,UAAU,mBAAmB,qBAAqB;WAC5E,YAAY;EACrB,MAAM,SAAS,WAAW;EAC1B,aACE,SAAS,UACT,kBACA,gBAAgB,oBAChB,WAAW,aACV,oCAAoC,QAAQ;;UAGhC,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;;UAGK,iBAAiB,UAAU,mBAAmB,qBAAqB;WACzE,YAAY;EACrB,YAAY,SAAS,WAAW,eAAe;;;iBAIjC,gBAAgB,UAAU,mBAAmB,qBAAqB,oBAChF,MAAM,oBAAoB,UAAU,cACnC,iBAAiB,UAAU"}
package/dist/index.cjs ADDED
@@ -0,0 +1,180 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_mode = require("./mode-Dft08ke8.cjs");
3
+ const require_validation = require("./validation-DRV8Dtoc.cjs");
4
+ const require_owner = require("./owner-BbCQufLu.cjs");
5
+ const require_modeDefinition = require("./modeDefinition-BtgwqXMo.cjs");
6
+ const require_headlessCommand = require("./headlessCommand-CaFFcvJA.cjs");
7
+ let _agimon_ai_doompi_core_headless = require("@agimon-ai/doompi-core/headless");
8
+ //#region src/services/client/index.ts
9
+ function createMinorModeCatalogClient(catalog) {
10
+ return {
11
+ getSnapshot: () => catalog.getSnapshot(),
12
+ list: () => catalog.list(),
13
+ subscribe: (listener) => catalog.subscribe(listener),
14
+ invoke: (mode, actionId, argumentsValue = {}, options = {}) => catalog.invoke({
15
+ operationId: `minor-mode:${crypto.randomUUID()}`,
16
+ mode: structuredClone(mode),
17
+ actionId,
18
+ arguments: structuredClone(argumentsValue)
19
+ }, "doom/minor-mode-client", options.signal)
20
+ };
21
+ }
22
+ //#endregion
23
+ //#region src/services/piRegistration/index.ts
24
+ /** Registers static or live owners for the injected catalog's lifetime. */
25
+ function piMinorModes(modes) {
26
+ return (context) => {
27
+ if (!modes) return;
28
+ context.inject([require_mode.DOOM_MINOR_MODE_CATALOG_SERVICE], (child) => {
29
+ const controller = new AbortController();
30
+ const signal = controller.signal;
31
+ child.effect(() => () => controller.abort());
32
+ const catalog = require_mode.requireMinorModeCatalog(child);
33
+ const mounted = /* @__PURE__ */ new Map();
34
+ let disposed = false;
35
+ let reconciling = false;
36
+ let pending = false;
37
+ let subscribing = true;
38
+ const reconcile = () => {
39
+ pending = true;
40
+ if (disposed || signal.aborted || subscribing || reconciling) return;
41
+ reconciling = true;
42
+ try {
43
+ do {
44
+ pending = false;
45
+ const snapshot = "snapshot" in modes ? modes.snapshot() : modes;
46
+ const next = /* @__PURE__ */ new Map();
47
+ for (const declaration of snapshot) {
48
+ const definition = "definition" in declaration ? declaration.definition : declaration;
49
+ const key = JSON.stringify([definition.descriptor.source, definition.descriptor.id]);
50
+ if (next.has(key)) throw new Error(`Duplicate live minor mode: ${definition.descriptor.source}/${definition.descriptor.id}`);
51
+ next.set(key, declaration);
52
+ }
53
+ for (const [key, entry] of mounted) {
54
+ if (next.get(key) === entry.declaration) continue;
55
+ mounted.delete(key);
56
+ entry.release();
57
+ }
58
+ for (const [key, declaration] of next) {
59
+ if (mounted.has(key)) continue;
60
+ const owner = "definition" in declaration ? declaration : void 0;
61
+ const handle = require_owner.registerMinorModeOwner(catalog, owner ? owner.definition : declaration);
62
+ mounted.set(key, {
63
+ declaration,
64
+ release() {
65
+ try {
66
+ owner?.detach();
67
+ } finally {
68
+ handle.dispose();
69
+ }
70
+ }
71
+ });
72
+ owner?.attach(handle);
73
+ }
74
+ } while (pending && !disposed && !signal.aborted);
75
+ } finally {
76
+ reconciling = false;
77
+ }
78
+ };
79
+ child.effect(() => () => {
80
+ disposed = true;
81
+ const entries = [...mounted.values()];
82
+ mounted.clear();
83
+ const errors = [];
84
+ for (const entry of entries) try {
85
+ entry.release();
86
+ } catch (error) {
87
+ errors.push(error);
88
+ }
89
+ if (errors.length) throw new AggregateError(errors, "Minor mode cleanup failed.");
90
+ });
91
+ if ("subscribe" in modes) {
92
+ const unsubscribe = modes.subscribe(reconcile);
93
+ child.effect(() => () => {
94
+ disposed = true;
95
+ unsubscribe();
96
+ });
97
+ }
98
+ subscribing = false;
99
+ reconcile();
100
+ });
101
+ };
102
+ }
103
+ //#endregion
104
+ //#region src/services/serverRegistration/index.ts
105
+ function serverMinorModes(modes) {
106
+ return (context) => {
107
+ context.inject([_agimon_ai_doompi_core_headless.DOOM_HEADLESS_HOST_SERVICE, require_mode.DOOM_MINOR_MODE_CATALOG_SERVICE], (child) => {
108
+ const agent = (0, _agimon_ai_doompi_core_headless.requireDoomHeadlessHost)(child);
109
+ const owner = (0, _agimon_ai_doompi_core_headless.readDoomHeadlessOwner)(child);
110
+ if (!owner) throw new Error("A minor mode must have descriptor-owned package identity");
111
+ const catalog = require_mode.requireMinorModeCatalog(child);
112
+ for (const mode of modes) {
113
+ const definition = "definition" in mode ? mode.definition : mode;
114
+ const handle = catalog.registerOwner({
115
+ ...definition,
116
+ handleAction(id, args, execution) {
117
+ agent.assertActive(owner.packageName);
118
+ return definition.handleAction(id, args, {
119
+ ...execution,
120
+ context: agent.context
121
+ });
122
+ }
123
+ });
124
+ child.effect(() => () => handle.dispose());
125
+ if ("definition" in mode) {
126
+ child.effect(() => () => mode.detach());
127
+ mode.attach(handle);
128
+ child.effect(() => agent.subscribeSelection(() => mode.publish()));
129
+ }
130
+ }
131
+ });
132
+ };
133
+ }
134
+ //#endregion
135
+ exports.DOOM_MINOR_MODE_CATALOG_SERVICE = require_mode.DOOM_MINOR_MODE_CATALOG_SERVICE;
136
+ exports.DOOM_MINOR_MODE_ENTRY_TYPE = require_mode.DOOM_MINOR_MODE_ENTRY_TYPE;
137
+ exports.MINOR_MODE_ACTION_TIMEOUT_MS = require_mode.MINOR_MODE_ACTION_TIMEOUT_MS;
138
+ exports.MINOR_MODE_CATALOG_SOURCE = require_mode.MINOR_MODE_CATALOG_SOURCE;
139
+ exports.MINOR_MODE_ERROR_CODE = require_mode.MINOR_MODE_ERROR_CODE;
140
+ exports.MINOR_MODE_MAX_ACTIONS = require_mode.MINOR_MODE_MAX_ACTIONS;
141
+ exports.MINOR_MODE_MAX_ARGUMENT_LENGTH = require_mode.MINOR_MODE_MAX_ARGUMENT_LENGTH;
142
+ exports.MINOR_MODE_MAX_ENUM_CHOICES = require_mode.MINOR_MODE_MAX_ENUM_CHOICES;
143
+ exports.MINOR_MODE_MAX_PARAMETERS = require_mode.MINOR_MODE_MAX_PARAMETERS;
144
+ exports.MINOR_MODE_MAX_RECORDS = require_mode.MINOR_MODE_MAX_RECORDS;
145
+ exports.MINOR_MODE_TOOL_NAME = require_mode.MINOR_MODE_TOOL_NAME;
146
+ exports.MinorModeActionAvailabilitySchema = require_mode.MinorModeActionAvailabilitySchema;
147
+ exports.MinorModeActionDescriptorSchema = require_mode.MinorModeActionDescriptorSchema;
148
+ exports.MinorModeActionParameterSchema = require_mode.MinorModeActionParameterSchema;
149
+ exports.MinorModeActionRequestSchema = require_mode.MinorModeActionRequestSchema;
150
+ exports.MinorModeActionResponseSchema = require_mode.MinorModeActionResponseSchema;
151
+ exports.MinorModeActivationSchema = require_mode.MinorModeActivationSchema;
152
+ exports.MinorModeArgumentsSchema = require_mode.MinorModeArgumentsSchema;
153
+ exports.MinorModeCatalogSnapshotSchema = require_mode.MinorModeCatalogSnapshotSchema;
154
+ exports.MinorModeConditionSchema = require_mode.MinorModeConditionSchema;
155
+ exports.MinorModeDescriptorSchema = require_mode.MinorModeDescriptorSchema;
156
+ exports.MinorModeIdSchema = require_mode.MinorModeIdSchema;
157
+ exports.MinorModeParameterNameSchema = require_mode.MinorModeParameterNameSchema;
158
+ exports.MinorModeRecordSchema = require_mode.MinorModeRecordSchema;
159
+ exports.MinorModeRegistrationRefSchema = require_mode.MinorModeRegistrationRefSchema;
160
+ exports.MinorModeScalarSchema = require_mode.MinorModeScalarSchema;
161
+ exports.MinorModeSessionKindSchema = require_mode.MinorModeSessionKindSchema;
162
+ exports.MinorModeSourceSchema = require_mode.MinorModeSourceSchema;
163
+ exports.MinorModeStateSchema = require_mode.MinorModeStateSchema;
164
+ exports.MinorModeToolInputSchema = require_mode.MinorModeToolInputSchema;
165
+ exports.MinorModeToolResultSchema = require_mode.MinorModeToolResultSchema;
166
+ exports.ModeTextColorSchema = require_mode.ModeTextColorSchema;
167
+ exports.createMinorModeCatalogClient = createMinorModeCatalogClient;
168
+ exports.defineMinorMode = require_modeDefinition.defineMinorMode;
169
+ exports.headlessMinorModeCommand = require_headlessCommand.headlessMinorModeCommand;
170
+ exports.minorModeKey = require_validation.minorModeKey;
171
+ exports.minorModeRegistrationRef = require_validation.minorModeRegistrationRef;
172
+ exports.piMinorModes = piMinorModes;
173
+ exports.readMinorModeCatalog = require_mode.readMinorModeCatalog;
174
+ exports.registerMinorModeOwner = require_owner.registerMinorModeOwner;
175
+ exports.requireMinorModeCatalog = require_mode.requireMinorModeCatalog;
176
+ exports.serverMinorModes = serverMinorModes;
177
+ exports.validateMinorModeActionArguments = require_validation.validateMinorModeActionArguments;
178
+ exports.validateMinorModeDefinition = require_validation.validateMinorModeDefinition;
179
+
180
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["DOOM_MINOR_MODE_CATALOG_SERVICE","requireMinorModeCatalog","registerMinorModeOwner","DOOM_HEADLESS_HOST_SERVICE","DOOM_MINOR_MODE_CATALOG_SERVICE","requireDoomHeadlessHost","readDoomHeadlessOwner","requireMinorModeCatalog"],"sources":["../src/services/client/index.ts","../src/services/piRegistration/index.ts","../src/services/serverRegistration/index.ts"],"sourcesContent":["import type {\n MinorModeActionResponse,\n MinorModeArguments,\n MinorModeCatalogService,\n MinorModeCatalogSnapshot,\n MinorModeInvokeOptions,\n MinorModeRecord,\n MinorModeRegistrationRef,\n} from '../../schemas/mode';\n\n/** Read-only facade used by UI and voice surfaces over the injected service. */\nexport interface MinorModeCatalogClient {\n getSnapshot(): MinorModeCatalogSnapshot;\n list(): MinorModeRecord[];\n subscribe(listener: () => void): () => void;\n invoke(\n mode: MinorModeRegistrationRef,\n actionId: string,\n argumentsValue?: MinorModeArguments,\n options?: MinorModeInvokeOptions,\n ): Promise<MinorModeActionResponse>;\n}\n\nexport function createMinorModeCatalogClient(catalog: MinorModeCatalogService): MinorModeCatalogClient {\n return {\n getSnapshot: () => catalog.getSnapshot(),\n list: () => catalog.list(),\n subscribe: (listener) => catalog.subscribe(listener),\n invoke: (mode, actionId, argumentsValue = {}, options = {}) =>\n catalog.invoke(\n {\n operationId: `minor-mode:${crypto.randomUUID()}`,\n mode: structuredClone(mode),\n actionId,\n arguments: structuredClone(argumentsValue),\n },\n 'doom/minor-mode-client',\n options.signal,\n ),\n };\n}\n","import type { Context } from '@deepseek-ai/cordis';\nimport type { ExtensionContext } from '@earendil-works/pi-coding-agent';\n\nimport {\n DOOM_MINOR_MODE_CATALOG_SERVICE,\n requireMinorModeCatalog,\n type MinorModeOwnerActionContext,\n type MinorModeOwnerDefinition,\n type MinorModeOwnerHandle,\n} from '../../schemas/mode';\nimport type { MinorModeOwner } from '../modeDefinition';\nimport { registerMinorModeOwner } from '../owner';\n\ntype ModeRegistrar = (definition: MinorModeOwnerDefinition<ExtensionContext>) => MinorModeOwnerHandle;\nexport type PiMinorModeContribution =\n | MinorModeOwner<MinorModeOwnerActionContext<ExtensionContext>>\n | Parameters<ModeRegistrar>[0];\nexport interface PiMinorModeCollection {\n snapshot(): readonly PiMinorModeContribution[];\n subscribe(listener: () => void): () => void;\n}\n\n/** Registers static or live owners for the injected catalog's lifetime. */\nexport function piMinorModes(\n modes: readonly PiMinorModeContribution[] | PiMinorModeCollection | undefined,\n): (context: Context) => void {\n return (context) => {\n if (!modes) return;\n context.inject([DOOM_MINOR_MODE_CATALOG_SERVICE], (child) => {\n const controller = new AbortController();\n const signal = controller.signal;\n child.effect(() => () => controller.abort());\n const catalog = requireMinorModeCatalog(child);\n const mounted = new Map<string, { declaration: PiMinorModeContribution; release(): void }>();\n let disposed = false;\n let reconciling = false;\n let pending = false;\n let subscribing = true;\n const reconcile = (): void => {\n pending = true;\n if (disposed || signal.aborted || subscribing || reconciling) return;\n reconciling = true;\n try {\n do {\n pending = false;\n const snapshot = 'snapshot' in modes ? modes.snapshot() : modes;\n const next = new Map<string, PiMinorModeContribution>();\n for (const declaration of snapshot) {\n const definition = 'definition' in declaration ? declaration.definition : declaration;\n const key = JSON.stringify([definition.descriptor.source, definition.descriptor.id]);\n if (next.has(key))\n throw new Error(\n `Duplicate live minor mode: ${definition.descriptor.source}/${definition.descriptor.id}`,\n );\n next.set(key, declaration);\n }\n for (const [key, entry] of mounted) {\n if (next.get(key) === entry.declaration) continue;\n mounted.delete(key);\n entry.release();\n }\n for (const [key, declaration] of next) {\n if (mounted.has(key)) continue;\n const owner = 'definition' in declaration ? declaration : undefined;\n const handle = registerMinorModeOwner(\n catalog,\n owner ? owner.definition : (declaration as Parameters<ModeRegistrar>[0]),\n );\n mounted.set(key, {\n declaration,\n release() {\n try {\n owner?.detach();\n } finally {\n handle.dispose();\n }\n },\n });\n owner?.attach(handle);\n }\n } while (pending && !disposed && !signal.aborted);\n } finally {\n reconciling = false;\n }\n };\n child.effect(() => () => {\n disposed = true;\n const entries = [...mounted.values()];\n mounted.clear();\n const errors: unknown[] = [];\n for (const entry of entries) {\n try {\n entry.release();\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length) throw new AggregateError(errors, 'Minor mode cleanup failed.');\n });\n if ('subscribe' in modes) {\n const unsubscribe = modes.subscribe(reconcile);\n child.effect(() => () => {\n disposed = true;\n unsubscribe();\n });\n }\n subscribing = false;\n reconcile();\n });\n };\n}\n","import {\n DOOM_HEADLESS_HOST_SERVICE,\n requireDoomHeadlessHost,\n readDoomHeadlessOwner,\n} from '@agimon-ai/doompi-core/headless';\nimport type { Context } from '@deepseek-ai/cordis';\n\nimport type { DoomHeadlessMinorMode } from '../../schemas/headless';\nimport { DOOM_MINOR_MODE_CATALOG_SERVICE, requireMinorModeCatalog } from '../../schemas/mode';\nimport type { MinorModeOwner } from '../modeDefinition';\n\nexport function serverMinorModes(\n modes: readonly (DoomHeadlessMinorMode | MinorModeOwner<Parameters<DoomHeadlessMinorMode['handleAction']>[2]>)[],\n): (context: Context) => void {\n return (context) => {\n context.inject([DOOM_HEADLESS_HOST_SERVICE, DOOM_MINOR_MODE_CATALOG_SERVICE], (child) => {\n const agent = requireDoomHeadlessHost(child);\n const owner = readDoomHeadlessOwner(child);\n if (!owner) throw new Error('A minor mode must have descriptor-owned package identity');\n const catalog = requireMinorModeCatalog(child);\n for (const mode of modes) {\n const definition = 'definition' in mode ? mode.definition : mode;\n const handle = catalog.registerOwner({\n ...definition,\n handleAction(id, args, execution) {\n agent.assertActive(owner.packageName);\n return definition.handleAction(id, args, { ...execution, context: agent.context });\n },\n });\n child.effect(() => () => handle.dispose());\n if ('definition' in mode) {\n child.effect(() => () => mode.detach());\n mode.attach(handle);\n child.effect(() => agent.subscribeSelection(() => mode.publish()));\n }\n }\n });\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { $ as MinorModeStateSchema, A as MinorModeCondition, B as MinorModeParameterNameSchema, C as MinorModeActivation, D as MinorModeCatalogService, E as MinorModeArgumentsSchema, F as MinorModeInvokeOptions, G as MinorModeRegistrationRef, H as MinorModeRecord, I as MinorModeOwnerActionContext, J as MinorModeScalarSchema, K as MinorModeRegistrationRefSchema, L as MinorModeOwnerActionResult, M as MinorModeDescriptor, N as MinorModeDescriptorSchema, O as MinorModeCatalogSnapshot, P as MinorModeIdSchema, Q as MinorModeState, R as MinorModeOwnerDefinition, S as MinorModeActionResponseSchema, T as MinorModeArguments, U as MinorModeRecordProjection, V as MinorModeProjection, W as MinorModeRecordSchema, X as MinorModeSessionKindSchema, Y as MinorModeSessionKind, Z as MinorModeSourceSchema, _ as MinorModeActionParameterSchema, a as MINOR_MODE_ERROR_CODE, at as readMinorModeCatalog, b as MinorModeActionRequestSchema, c as MINOR_MODE_MAX_ENUM_CHOICES, d as MINOR_MODE_TOOL_NAME, et as MinorModeToolInput, f as MinorModeActionAvailability, g as MinorModeActionParameter, h as MinorModeActionDescriptorSchema, i as MINOR_MODE_CATALOG_SOURCE, it as ModeTextColorSchema, j as MinorModeConditionSchema, k as MinorModeCatalogSnapshotSchema, l as MINOR_MODE_MAX_PARAMETERS, m as MinorModeActionDescriptor, n as DOOM_MINOR_MODE_ENTRY_TYPE, nt as MinorModeToolResultSchema, o as MINOR_MODE_MAX_ACTIONS, ot as requireMinorModeCatalog, p as MinorModeActionAvailabilitySchema, q as MinorModeScalar, r as MINOR_MODE_ACTION_TIMEOUT_MS, rt as ModeTextColor, s as MINOR_MODE_MAX_ARGUMENT_LENGTH, t as DOOM_MINOR_MODE_CATALOG_SERVICE, tt as MinorModeToolInputSchema, u as MINOR_MODE_MAX_RECORDS, v as MinorModeActionProjection, w as MinorModeActivationSchema, x as MinorModeActionResponse, y as MinorModeActionRequest, z as MinorModeOwnerHandle } from "./mode-EZWqhrYy.mjs";
2
+ import { t as registerMinorModeOwner } from "./index-DEjyk6tg.mjs";
3
+ import { a as defineMinorMode, i as MinorModeOwner, n as MinorModeDefinition, r as MinorModeExecution, t as DefinedMinorMode } from "./index-DSKnT657.mjs";
4
+ import { DoomHeadlessCommand, DoomHeadlessExecutionContext } from "@agimon-ai/doompi-core/headless";
5
+ import { Context } from "@deepseek-ai/cordis";
6
+ import { ExtensionContext } from "@earendil-works/pi-coding-agent";
7
+ //#region src/services/client/index.d.ts
8
+ /** Read-only facade used by UI and voice surfaces over the injected service. */
9
+ interface MinorModeCatalogClient {
10
+ getSnapshot(): MinorModeCatalogSnapshot;
11
+ list(): MinorModeRecord[];
12
+ subscribe(listener: () => void): () => void;
13
+ invoke(mode: MinorModeRegistrationRef, actionId: string, argumentsValue?: MinorModeArguments, options?: MinorModeInvokeOptions): Promise<MinorModeActionResponse>;
14
+ }
15
+ export declare function createMinorModeCatalogClient(catalog: MinorModeCatalogService): MinorModeCatalogClient;
16
+ //#endregion
17
+ //#region src/services/validation/index.d.ts
18
+ export declare function minorModeKey(identity: Pick<MinorModeDescriptor, 'source' | 'id'>): string;
19
+ export declare function minorModeRegistrationRef(record: MinorModeRecord): MinorModeRegistrationRef;
20
+ export declare function validateMinorModeDefinition(descriptor: MinorModeDescriptor, state: MinorModeState): string | undefined;
21
+ export declare function validateMinorModeActionArguments(action: MinorModeActionDescriptor, argumentsValue: MinorModeArguments): void;
22
+ //#endregion
23
+ //#region src/services/piRegistration/index.d.ts
24
+ type ModeRegistrar = (definition: MinorModeOwnerDefinition<ExtensionContext>) => MinorModeOwnerHandle;
25
+ type PiMinorModeContribution = MinorModeOwner<MinorModeOwnerActionContext<ExtensionContext>> | Parameters<ModeRegistrar>[0];
26
+ interface PiMinorModeCollection {
27
+ snapshot(): readonly PiMinorModeContribution[];
28
+ subscribe(listener: () => void): () => void;
29
+ }
30
+ /** Registers static or live owners for the injected catalog's lifetime. */
31
+ export declare function piMinorModes(modes: readonly PiMinorModeContribution[] | PiMinorModeCollection | undefined): (context: Context) => void;
32
+ //#endregion
33
+ //#region src/schemas/headless.d.ts
34
+ interface DoomHeadlessMinorMode {
35
+ descriptor: MinorModeDescriptor;
36
+ initialState: MinorModeState;
37
+ handleAction(actionId: string, args: MinorModeArguments, execution: {
38
+ context: DoomHeadlessExecutionContext;
39
+ operationId: string;
40
+ sessionKind: MinorModeSessionKind;
41
+ signal: AbortSignal;
42
+ }): MinorModeOwnerActionResult | void | Promise<MinorModeOwnerActionResult | void>;
43
+ onError?(error: unknown): void;
44
+ }
45
+ //#endregion
46
+ //#region src/services/serverRegistration/index.d.ts
47
+ export declare function serverMinorModes(modes: readonly (DoomHeadlessMinorMode | MinorModeOwner<Parameters<DoomHeadlessMinorMode['handleAction']>[2]>)[]): (context: Context) => void;
48
+ //#endregion
49
+ //#region src/services/headlessCommand/index.d.ts
50
+ export declare function headlessMinorModeCommand(catalog: MinorModeCatalogService): DoomHeadlessCommand;
51
+ //#endregion
52
+ export { DOOM_MINOR_MODE_CATALOG_SERVICE, DOOM_MINOR_MODE_ENTRY_TYPE, type DefinedMinorMode, type DoomHeadlessMinorMode, MINOR_MODE_ACTION_TIMEOUT_MS, MINOR_MODE_CATALOG_SOURCE, MINOR_MODE_ERROR_CODE, MINOR_MODE_MAX_ACTIONS, MINOR_MODE_MAX_ARGUMENT_LENGTH, MINOR_MODE_MAX_ENUM_CHOICES, MINOR_MODE_MAX_PARAMETERS, MINOR_MODE_MAX_RECORDS, MINOR_MODE_TOOL_NAME, type MinorModeActionAvailability, MinorModeActionAvailabilitySchema, type MinorModeActionDescriptor, MinorModeActionDescriptorSchema, type MinorModeActionParameter, MinorModeActionParameterSchema, type MinorModeActionProjection, type MinorModeActionRequest, MinorModeActionRequestSchema, type MinorModeActionResponse, MinorModeActionResponseSchema, type MinorModeActivation, MinorModeActivationSchema, type MinorModeArguments, MinorModeArgumentsSchema, type MinorModeCatalogClient, type MinorModeCatalogService, type MinorModeCatalogSnapshot, MinorModeCatalogSnapshotSchema, type MinorModeCondition, MinorModeConditionSchema, type MinorModeDefinition, type MinorModeDescriptor, MinorModeDescriptorSchema, type MinorModeExecution, MinorModeIdSchema, type MinorModeInvokeOptions, type MinorModeOwner, type MinorModeOwnerActionContext, type MinorModeOwnerActionResult, type MinorModeOwnerDefinition, type MinorModeOwnerHandle, MinorModeParameterNameSchema, type MinorModeProjection, type MinorModeRecord, type MinorModeRecordProjection, MinorModeRecordSchema, type MinorModeRegistrationRef, MinorModeRegistrationRefSchema, type MinorModeScalar, MinorModeScalarSchema, type MinorModeSessionKind, MinorModeSessionKindSchema, MinorModeSourceSchema, type MinorModeState, MinorModeStateSchema, type MinorModeToolInput, MinorModeToolInputSchema, MinorModeToolResultSchema, type ModeTextColor, ModeTextColorSchema, type PiMinorModeCollection, type PiMinorModeContribution, defineMinorMode, readMinorModeCatalog, registerMinorModeOwner, requireMinorModeCatalog };
53
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/services/client/index.ts","../src/services/validation/index.ts","../src/services/piRegistration/index.ts","../src/schemas/headless.ts","../src/services/serverRegistration/index.ts","../src/services/headlessCommand/index.ts"],"mappings":";;;;;;;;UAWiB;EACf,eAAe;EACf,QAAQ;EACR,UAAU;EACV,OACE,MAAM,0BACN,kBACA,iBAAiB,oBACjB,UAAU,yBACT,QAAQ;;wBAGG,6BAA6B,SAAS,0BAA0B;;;wBCXhE,aAAa,UAAU,KAAK;wBAI5B,yBAAyB,QAAQ,kBAAkB;wBAkBnD,4BACd,YAAY,qBACZ,OAAO;wBA4CO,iCACd,QAAQ,2BACR,gBAAgB;;;KCrEb,iBAAiB,YAAY,yBAAyB,sBAAsB;KACrE,0BACR,eAAe,4BAA4B,qBAC3C,WAAW;UACE;EACf,qBAAqB;EACrB,UAAU;;;wBAII,aACd,gBAAgB,4BAA4B,qCAC1C,SAAS;;;UChBI;EACf,YAAY;EACZ,cAAc;EACd,aACE,kBACA,MAAM,oBACN;IACE,SAAS;IACT;IACA,aAAa;IACb,QAAQ;MAET,oCAAoC,QAAQ;EAC/C,SAAS;;;;wBCXK,iBACd,iBAAiB,wBAAwB,eAAe,WAAW,iDACjE,SAAS;;;wBCTG,yBAAyB,SAAS,0BAA0B"}
package/dist/index.mjs ADDED
@@ -0,0 +1,136 @@
1
+ import { A as MinorModeToolInputSchema, C as MinorModeParameterNameSchema, D as MinorModeSessionKindSchema, E as MinorModeScalarSchema, M as ModeTextColorSchema, N as readMinorModeCatalog, O as MinorModeSourceSchema, P as requireMinorModeCatalog, S as MinorModeIdSchema, T as MinorModeRegistrationRefSchema, _ as MinorModeActivationSchema, a as MINOR_MODE_ERROR_CODE, b as MinorModeConditionSchema, c as MINOR_MODE_MAX_ENUM_CHOICES, d as MINOR_MODE_TOOL_NAME, f as MinorModeActionAvailabilitySchema, g as MinorModeActionResponseSchema, h as MinorModeActionRequestSchema, i as MINOR_MODE_CATALOG_SOURCE, j as MinorModeToolResultSchema, k as MinorModeStateSchema, l as MINOR_MODE_MAX_PARAMETERS, m as MinorModeActionParameterSchema, n as DOOM_MINOR_MODE_ENTRY_TYPE, o as MINOR_MODE_MAX_ACTIONS, p as MinorModeActionDescriptorSchema, r as MINOR_MODE_ACTION_TIMEOUT_MS, s as MINOR_MODE_MAX_ARGUMENT_LENGTH, t as DOOM_MINOR_MODE_CATALOG_SERVICE, u as MINOR_MODE_MAX_RECORDS, v as MinorModeArgumentsSchema, w as MinorModeRecordSchema, x as MinorModeDescriptorSchema, y as MinorModeCatalogSnapshotSchema } from "./mode-BwRkDqO4.mjs";
2
+ import { i as validateMinorModeDefinition, n as minorModeRegistrationRef, r as validateMinorModeActionArguments, t as minorModeKey } from "./validation-BuQc8UrL.mjs";
3
+ import { t as registerMinorModeOwner } from "./owner-Bs55c_qE.mjs";
4
+ import { t as defineMinorMode } from "./modeDefinition-BcqEwTzh.mjs";
5
+ import { t as headlessMinorModeCommand } from "./headlessCommand-BJhocUje.mjs";
6
+ import { DOOM_HEADLESS_HOST_SERVICE, readDoomHeadlessOwner, requireDoomHeadlessHost } from "@agimon-ai/doompi-core/headless";
7
+ //#region src/services/client/index.ts
8
+ function createMinorModeCatalogClient(catalog) {
9
+ return {
10
+ getSnapshot: () => catalog.getSnapshot(),
11
+ list: () => catalog.list(),
12
+ subscribe: (listener) => catalog.subscribe(listener),
13
+ invoke: (mode, actionId, argumentsValue = {}, options = {}) => catalog.invoke({
14
+ operationId: `minor-mode:${crypto.randomUUID()}`,
15
+ mode: structuredClone(mode),
16
+ actionId,
17
+ arguments: structuredClone(argumentsValue)
18
+ }, "doom/minor-mode-client", options.signal)
19
+ };
20
+ }
21
+ //#endregion
22
+ //#region src/services/piRegistration/index.ts
23
+ /** Registers static or live owners for the injected catalog's lifetime. */
24
+ function piMinorModes(modes) {
25
+ return (context) => {
26
+ if (!modes) return;
27
+ context.inject([DOOM_MINOR_MODE_CATALOG_SERVICE], (child) => {
28
+ const controller = new AbortController();
29
+ const signal = controller.signal;
30
+ child.effect(() => () => controller.abort());
31
+ const catalog = requireMinorModeCatalog(child);
32
+ const mounted = /* @__PURE__ */ new Map();
33
+ let disposed = false;
34
+ let reconciling = false;
35
+ let pending = false;
36
+ let subscribing = true;
37
+ const reconcile = () => {
38
+ pending = true;
39
+ if (disposed || signal.aborted || subscribing || reconciling) return;
40
+ reconciling = true;
41
+ try {
42
+ do {
43
+ pending = false;
44
+ const snapshot = "snapshot" in modes ? modes.snapshot() : modes;
45
+ const next = /* @__PURE__ */ new Map();
46
+ for (const declaration of snapshot) {
47
+ const definition = "definition" in declaration ? declaration.definition : declaration;
48
+ const key = JSON.stringify([definition.descriptor.source, definition.descriptor.id]);
49
+ if (next.has(key)) throw new Error(`Duplicate live minor mode: ${definition.descriptor.source}/${definition.descriptor.id}`);
50
+ next.set(key, declaration);
51
+ }
52
+ for (const [key, entry] of mounted) {
53
+ if (next.get(key) === entry.declaration) continue;
54
+ mounted.delete(key);
55
+ entry.release();
56
+ }
57
+ for (const [key, declaration] of next) {
58
+ if (mounted.has(key)) continue;
59
+ const owner = "definition" in declaration ? declaration : void 0;
60
+ const handle = registerMinorModeOwner(catalog, owner ? owner.definition : declaration);
61
+ mounted.set(key, {
62
+ declaration,
63
+ release() {
64
+ try {
65
+ owner?.detach();
66
+ } finally {
67
+ handle.dispose();
68
+ }
69
+ }
70
+ });
71
+ owner?.attach(handle);
72
+ }
73
+ } while (pending && !disposed && !signal.aborted);
74
+ } finally {
75
+ reconciling = false;
76
+ }
77
+ };
78
+ child.effect(() => () => {
79
+ disposed = true;
80
+ const entries = [...mounted.values()];
81
+ mounted.clear();
82
+ const errors = [];
83
+ for (const entry of entries) try {
84
+ entry.release();
85
+ } catch (error) {
86
+ errors.push(error);
87
+ }
88
+ if (errors.length) throw new AggregateError(errors, "Minor mode cleanup failed.");
89
+ });
90
+ if ("subscribe" in modes) {
91
+ const unsubscribe = modes.subscribe(reconcile);
92
+ child.effect(() => () => {
93
+ disposed = true;
94
+ unsubscribe();
95
+ });
96
+ }
97
+ subscribing = false;
98
+ reconcile();
99
+ });
100
+ };
101
+ }
102
+ //#endregion
103
+ //#region src/services/serverRegistration/index.ts
104
+ function serverMinorModes(modes) {
105
+ return (context) => {
106
+ context.inject([DOOM_HEADLESS_HOST_SERVICE, DOOM_MINOR_MODE_CATALOG_SERVICE], (child) => {
107
+ const agent = requireDoomHeadlessHost(child);
108
+ const owner = readDoomHeadlessOwner(child);
109
+ if (!owner) throw new Error("A minor mode must have descriptor-owned package identity");
110
+ const catalog = requireMinorModeCatalog(child);
111
+ for (const mode of modes) {
112
+ const definition = "definition" in mode ? mode.definition : mode;
113
+ const handle = catalog.registerOwner({
114
+ ...definition,
115
+ handleAction(id, args, execution) {
116
+ agent.assertActive(owner.packageName);
117
+ return definition.handleAction(id, args, {
118
+ ...execution,
119
+ context: agent.context
120
+ });
121
+ }
122
+ });
123
+ child.effect(() => () => handle.dispose());
124
+ if ("definition" in mode) {
125
+ child.effect(() => () => mode.detach());
126
+ mode.attach(handle);
127
+ child.effect(() => agent.subscribeSelection(() => mode.publish()));
128
+ }
129
+ }
130
+ });
131
+ };
132
+ }
133
+ //#endregion
134
+ export { DOOM_MINOR_MODE_CATALOG_SERVICE, DOOM_MINOR_MODE_ENTRY_TYPE, MINOR_MODE_ACTION_TIMEOUT_MS, MINOR_MODE_CATALOG_SOURCE, MINOR_MODE_ERROR_CODE, MINOR_MODE_MAX_ACTIONS, MINOR_MODE_MAX_ARGUMENT_LENGTH, MINOR_MODE_MAX_ENUM_CHOICES, MINOR_MODE_MAX_PARAMETERS, MINOR_MODE_MAX_RECORDS, MINOR_MODE_TOOL_NAME, MinorModeActionAvailabilitySchema, MinorModeActionDescriptorSchema, MinorModeActionParameterSchema, MinorModeActionRequestSchema, MinorModeActionResponseSchema, MinorModeActivationSchema, MinorModeArgumentsSchema, MinorModeCatalogSnapshotSchema, MinorModeConditionSchema, MinorModeDescriptorSchema, MinorModeIdSchema, MinorModeParameterNameSchema, MinorModeRecordSchema, MinorModeRegistrationRefSchema, MinorModeScalarSchema, MinorModeSessionKindSchema, MinorModeSourceSchema, MinorModeStateSchema, MinorModeToolInputSchema, MinorModeToolResultSchema, ModeTextColorSchema, createMinorModeCatalogClient, defineMinorMode, headlessMinorModeCommand, minorModeKey, minorModeRegistrationRef, piMinorModes, readMinorModeCatalog, registerMinorModeOwner, requireMinorModeCatalog, serverMinorModes, validateMinorModeActionArguments, validateMinorModeDefinition };
135
+
136
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/services/client/index.ts","../src/services/piRegistration/index.ts","../src/services/serverRegistration/index.ts"],"sourcesContent":["import type {\n MinorModeActionResponse,\n MinorModeArguments,\n MinorModeCatalogService,\n MinorModeCatalogSnapshot,\n MinorModeInvokeOptions,\n MinorModeRecord,\n MinorModeRegistrationRef,\n} from '../../schemas/mode';\n\n/** Read-only facade used by UI and voice surfaces over the injected service. */\nexport interface MinorModeCatalogClient {\n getSnapshot(): MinorModeCatalogSnapshot;\n list(): MinorModeRecord[];\n subscribe(listener: () => void): () => void;\n invoke(\n mode: MinorModeRegistrationRef,\n actionId: string,\n argumentsValue?: MinorModeArguments,\n options?: MinorModeInvokeOptions,\n ): Promise<MinorModeActionResponse>;\n}\n\nexport function createMinorModeCatalogClient(catalog: MinorModeCatalogService): MinorModeCatalogClient {\n return {\n getSnapshot: () => catalog.getSnapshot(),\n list: () => catalog.list(),\n subscribe: (listener) => catalog.subscribe(listener),\n invoke: (mode, actionId, argumentsValue = {}, options = {}) =>\n catalog.invoke(\n {\n operationId: `minor-mode:${crypto.randomUUID()}`,\n mode: structuredClone(mode),\n actionId,\n arguments: structuredClone(argumentsValue),\n },\n 'doom/minor-mode-client',\n options.signal,\n ),\n };\n}\n","import type { Context } from '@deepseek-ai/cordis';\nimport type { ExtensionContext } from '@earendil-works/pi-coding-agent';\n\nimport {\n DOOM_MINOR_MODE_CATALOG_SERVICE,\n requireMinorModeCatalog,\n type MinorModeOwnerActionContext,\n type MinorModeOwnerDefinition,\n type MinorModeOwnerHandle,\n} from '../../schemas/mode';\nimport type { MinorModeOwner } from '../modeDefinition';\nimport { registerMinorModeOwner } from '../owner';\n\ntype ModeRegistrar = (definition: MinorModeOwnerDefinition<ExtensionContext>) => MinorModeOwnerHandle;\nexport type PiMinorModeContribution =\n | MinorModeOwner<MinorModeOwnerActionContext<ExtensionContext>>\n | Parameters<ModeRegistrar>[0];\nexport interface PiMinorModeCollection {\n snapshot(): readonly PiMinorModeContribution[];\n subscribe(listener: () => void): () => void;\n}\n\n/** Registers static or live owners for the injected catalog's lifetime. */\nexport function piMinorModes(\n modes: readonly PiMinorModeContribution[] | PiMinorModeCollection | undefined,\n): (context: Context) => void {\n return (context) => {\n if (!modes) return;\n context.inject([DOOM_MINOR_MODE_CATALOG_SERVICE], (child) => {\n const controller = new AbortController();\n const signal = controller.signal;\n child.effect(() => () => controller.abort());\n const catalog = requireMinorModeCatalog(child);\n const mounted = new Map<string, { declaration: PiMinorModeContribution; release(): void }>();\n let disposed = false;\n let reconciling = false;\n let pending = false;\n let subscribing = true;\n const reconcile = (): void => {\n pending = true;\n if (disposed || signal.aborted || subscribing || reconciling) return;\n reconciling = true;\n try {\n do {\n pending = false;\n const snapshot = 'snapshot' in modes ? modes.snapshot() : modes;\n const next = new Map<string, PiMinorModeContribution>();\n for (const declaration of snapshot) {\n const definition = 'definition' in declaration ? declaration.definition : declaration;\n const key = JSON.stringify([definition.descriptor.source, definition.descriptor.id]);\n if (next.has(key))\n throw new Error(\n `Duplicate live minor mode: ${definition.descriptor.source}/${definition.descriptor.id}`,\n );\n next.set(key, declaration);\n }\n for (const [key, entry] of mounted) {\n if (next.get(key) === entry.declaration) continue;\n mounted.delete(key);\n entry.release();\n }\n for (const [key, declaration] of next) {\n if (mounted.has(key)) continue;\n const owner = 'definition' in declaration ? declaration : undefined;\n const handle = registerMinorModeOwner(\n catalog,\n owner ? owner.definition : (declaration as Parameters<ModeRegistrar>[0]),\n );\n mounted.set(key, {\n declaration,\n release() {\n try {\n owner?.detach();\n } finally {\n handle.dispose();\n }\n },\n });\n owner?.attach(handle);\n }\n } while (pending && !disposed && !signal.aborted);\n } finally {\n reconciling = false;\n }\n };\n child.effect(() => () => {\n disposed = true;\n const entries = [...mounted.values()];\n mounted.clear();\n const errors: unknown[] = [];\n for (const entry of entries) {\n try {\n entry.release();\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length) throw new AggregateError(errors, 'Minor mode cleanup failed.');\n });\n if ('subscribe' in modes) {\n const unsubscribe = modes.subscribe(reconcile);\n child.effect(() => () => {\n disposed = true;\n unsubscribe();\n });\n }\n subscribing = false;\n reconcile();\n });\n };\n}\n","import {\n DOOM_HEADLESS_HOST_SERVICE,\n requireDoomHeadlessHost,\n readDoomHeadlessOwner,\n} from '@agimon-ai/doompi-core/headless';\nimport type { Context } from '@deepseek-ai/cordis';\n\nimport type { DoomHeadlessMinorMode } from '../../schemas/headless';\nimport { DOOM_MINOR_MODE_CATALOG_SERVICE, requireMinorModeCatalog } from '../../schemas/mode';\nimport type { MinorModeOwner } from '../modeDefinition';\n\nexport function serverMinorModes(\n modes: readonly (DoomHeadlessMinorMode | MinorModeOwner<Parameters<DoomHeadlessMinorMode['handleAction']>[2]>)[],\n): (context: Context) => void {\n return (context) => {\n context.inject([DOOM_HEADLESS_HOST_SERVICE, DOOM_MINOR_MODE_CATALOG_SERVICE], (child) => {\n const agent = requireDoomHeadlessHost(child);\n const owner = readDoomHeadlessOwner(child);\n if (!owner) throw new Error('A minor mode must have descriptor-owned package identity');\n const catalog = requireMinorModeCatalog(child);\n for (const mode of modes) {\n const definition = 'definition' in mode ? mode.definition : mode;\n const handle = catalog.registerOwner({\n ...definition,\n handleAction(id, args, execution) {\n agent.assertActive(owner.packageName);\n return definition.handleAction(id, args, { ...execution, context: agent.context });\n },\n });\n child.effect(() => () => handle.dispose());\n if ('definition' in mode) {\n child.effect(() => () => mode.detach());\n mode.attach(handle);\n child.effect(() => agent.subscribeSelection(() => mode.publish()));\n }\n }\n });\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_command = require("./command-D9hQfJb_.cjs");
3
+ exports.MINOR_MODE_COMMAND = require_command.MINOR_MODE_COMMAND;
4
+ exports.actionsFor = require_command.actionsFor;
5
+ exports.matchMinorMode = require_command.matchMinorMode;
@@ -0,0 +1,2 @@
1
+ import { i as actionsFor, n as MINOR_MODE_COMMAND, o as matchMinorMode } from "./index-COS4uLcb.mjs";
2
+ export { MINOR_MODE_COMMAND, actionsFor, matchMinorMode };
@@ -0,0 +1,2 @@
1
+ import { i as matchMinorMode, n as actionsFor, t as MINOR_MODE_COMMAND } from "./command-C4u3oOPT.mjs";
2
+ export { MINOR_MODE_COMMAND, actionsFor, matchMinorMode };