@agimon-ai/doompi-skill 0.0.1-alpha.50 → 0.0.1-alpha.51

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 (203) hide show
  1. package/README.md +1 -1
  2. package/dist/_virtual/_rolldown/runtime.cjs +23 -1
  3. package/dist/api-contracts.cjs +7 -1
  4. package/dist/api-contracts.d.cts +1 -1
  5. package/dist/api-contracts.d.mts +1 -1
  6. package/dist/api-contracts.mjs +2 -1
  7. package/dist/catalog.cjs +4 -1
  8. package/dist/catalog.d.cts +1 -1
  9. package/dist/catalog.d.mts +1 -1
  10. package/dist/catalog.mjs +2 -1
  11. package/dist/extensions/pi.cjs +40 -1
  12. package/dist/extensions/pi.cjs.map +1 -1
  13. package/dist/extensions/pi.d.cts +3 -3
  14. package/dist/extensions/pi.d.cts.map +1 -1
  15. package/dist/extensions/pi.d.mts +3 -3
  16. package/dist/extensions/pi.d.mts.map +1 -1
  17. package/dist/extensions/pi.mjs +35 -1
  18. package/dist/extensions/pi.mjs.map +1 -1
  19. package/dist/extensions/server.cjs +41 -1
  20. package/dist/extensions/server.cjs.map +1 -1
  21. package/dist/extensions/server.d.cts +3 -3
  22. package/dist/extensions/server.d.cts.map +1 -1
  23. package/dist/extensions/server.d.mts +3 -3
  24. package/dist/extensions/server.d.mts.map +1 -1
  25. package/dist/extensions/server.mjs +36 -1
  26. package/dist/extensions/server.mjs.map +1 -1
  27. package/dist/index.cjs +11 -1
  28. package/dist/index.d.cts +3 -3
  29. package/dist/index.d.mts +3 -3
  30. package/dist/index.mjs +4 -1
  31. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillCommands.cjs +46 -0
  32. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillCommands.cjs.map +1 -0
  33. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillCommands.mjs +46 -0
  34. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillCommands.mjs.map +1 -0
  35. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillReadiness.cjs +110 -0
  36. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillReadiness.cjs.map +1 -0
  37. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillReadiness.mjs +109 -0
  38. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillReadiness.mjs.map +1 -0
  39. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillRuntime.cjs +105 -0
  40. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillRuntime.cjs.map +1 -0
  41. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillRuntime.mjs +105 -0
  42. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillRuntime.mjs.map +1 -0
  43. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillServer.cjs +23 -0
  44. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillServer.cjs.map +1 -0
  45. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillServer.mjs +23 -0
  46. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillServer.mjs.map +1 -0
  47. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillsCommand.cjs +37 -0
  48. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillsCommand.cjs.map +1 -0
  49. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillsCommand.mjs +37 -0
  50. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/skillsCommand.mjs.map +1 -0
  51. package/dist/src/extensions/workspaces/sessions/(backend)/command/skills.cli.cjs +6 -0
  52. package/dist/src/extensions/workspaces/sessions/(backend)/command/skills.cli.cjs.map +1 -0
  53. package/dist/src/extensions/workspaces/sessions/(backend)/command/skills.cli.mjs +7 -0
  54. package/dist/src/extensions/workspaces/sessions/(backend)/command/skills.cli.mjs.map +1 -0
  55. package/dist/src/extensions/workspaces/sessions/(backend)/command/skills.server.cjs +6 -0
  56. package/dist/src/extensions/workspaces/sessions/(backend)/command/skills.server.cjs.map +1 -0
  57. package/dist/src/extensions/workspaces/sessions/(backend)/command/skills.server.mjs +7 -0
  58. package/dist/src/extensions/workspaces/sessions/(backend)/command/skills.server.mjs.map +1 -0
  59. package/dist/src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli.cjs +6 -0
  60. package/dist/src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli.cjs.map +1 -0
  61. package/dist/src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli.mjs +7 -0
  62. package/dist/src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli.mjs.map +1 -0
  63. package/dist/src/extensions/workspaces/sessions/(backend)/hook/input.cli.cjs +6 -0
  64. package/dist/src/extensions/workspaces/sessions/(backend)/hook/input.cli.cjs.map +1 -0
  65. package/dist/src/extensions/workspaces/sessions/(backend)/hook/input.cli.mjs +7 -0
  66. package/dist/src/extensions/workspaces/sessions/(backend)/hook/input.cli.mjs.map +1 -0
  67. package/dist/src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.cjs +6 -0
  68. package/dist/src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.cjs.map +1 -0
  69. package/dist/src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.mjs +7 -0
  70. package/dist/src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.mjs.map +1 -0
  71. package/dist/src/extensions/workspaces/sessions/(backend)/resource/help.cli.cjs +17 -0
  72. package/dist/src/extensions/workspaces/sessions/(backend)/resource/help.cli.cjs.map +1 -0
  73. package/dist/src/extensions/workspaces/sessions/(backend)/resource/help.cli.mjs +18 -0
  74. package/dist/src/extensions/workspaces/sessions/(backend)/resource/help.cli.mjs.map +1 -0
  75. package/dist/src/extensions/workspaces/sessions/(backend)/resource/skills.server.cjs +6 -0
  76. package/dist/src/extensions/workspaces/sessions/(backend)/resource/skills.server.cjs.map +1 -0
  77. package/dist/src/extensions/workspaces/sessions/(backend)/resource/skills.server.mjs +7 -0
  78. package/dist/src/extensions/workspaces/sessions/(backend)/resource/skills.server.mjs.map +1 -0
  79. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs +18 -0
  80. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs.map +1 -0
  81. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs +19 -0
  82. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs.map +1 -0
  83. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs +12 -0
  84. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs.map +1 -0
  85. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs +13 -0
  86. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs.map +1 -0
  87. package/dist/src/schemas/apiContracts.cjs +13 -0
  88. package/dist/src/schemas/apiContracts.cjs.map +1 -0
  89. package/dist/{schemas → src/schemas}/apiContracts.d.cts.map +1 -1
  90. package/dist/{schemas → src/schemas}/apiContracts.d.mts.map +1 -1
  91. package/dist/src/schemas/apiContracts.mjs +13 -0
  92. package/dist/src/schemas/apiContracts.mjs.map +1 -0
  93. package/dist/src/services/deferredSkills/index.cjs +175 -0
  94. package/dist/src/services/deferredSkills/index.cjs.map +1 -0
  95. package/dist/src/services/deferredSkills/index.mjs +170 -0
  96. package/dist/src/services/deferredSkills/index.mjs.map +1 -0
  97. package/dist/src/services/helpSkills/index.cjs +96 -0
  98. package/dist/src/services/helpSkills/index.cjs.map +1 -0
  99. package/dist/src/services/helpSkills/index.mjs +95 -0
  100. package/dist/src/services/helpSkills/index.mjs.map +1 -0
  101. package/dist/src/services/serverInventory/index.cjs +105 -0
  102. package/dist/src/services/serverInventory/index.cjs.map +1 -0
  103. package/dist/src/services/serverInventory/index.mjs +102 -0
  104. package/dist/src/services/serverInventory/index.mjs.map +1 -0
  105. package/dist/src/services/skillCatalog/index.cjs +193 -0
  106. package/dist/src/services/skillCatalog/index.cjs.map +1 -0
  107. package/dist/src/services/skillCatalog/index.d.cts.map +1 -0
  108. package/dist/src/services/skillCatalog/index.d.mts.map +1 -0
  109. package/dist/src/services/skillCatalog/index.mjs +188 -0
  110. package/dist/src/services/skillCatalog/index.mjs.map +1 -0
  111. package/dist/src/services/skillText/index.cjs +17 -0
  112. package/dist/src/services/skillText/index.cjs.map +1 -0
  113. package/dist/src/services/skillText/index.d.cts.map +1 -0
  114. package/dist/src/services/skillText/index.d.mts.map +1 -0
  115. package/dist/src/services/skillText/index.mjs +17 -0
  116. package/dist/src/services/skillText/index.mjs.map +1 -0
  117. package/dist/src/tui/skillsOverlay.cjs +361 -0
  118. package/dist/src/tui/skillsOverlay.cjs.map +1 -0
  119. package/dist/src/tui/skillsOverlay.d.cts.map +1 -0
  120. package/dist/{tui → src/tui}/skillsOverlay.d.mts +1 -1
  121. package/dist/src/tui/skillsOverlay.d.mts.map +1 -0
  122. package/dist/src/tui/skillsOverlay.mjs +356 -0
  123. package/dist/src/tui/skillsOverlay.mjs.map +1 -0
  124. package/dist/src/types/skills.cjs +36 -0
  125. package/dist/src/types/skills.cjs.map +1 -0
  126. package/dist/src/types/skills.d.cts.map +1 -0
  127. package/dist/src/types/skills.d.mts.map +1 -0
  128. package/dist/src/types/skills.mjs +32 -0
  129. package/dist/src/types/skills.mjs.map +1 -0
  130. package/package.json +17 -10
  131. package/dist/controllers/skillCommands.cjs +0 -2
  132. package/dist/controllers/skillCommands.cjs.map +0 -1
  133. package/dist/controllers/skillCommands.mjs +0 -2
  134. package/dist/controllers/skillCommands.mjs.map +0 -1
  135. package/dist/controllers/skillReadiness.cjs +0 -4
  136. package/dist/controllers/skillReadiness.cjs.map +0 -1
  137. package/dist/controllers/skillReadiness.mjs +0 -4
  138. package/dist/controllers/skillReadiness.mjs.map +0 -1
  139. package/dist/controllers/skillRuntime.cjs +0 -2
  140. package/dist/controllers/skillRuntime.cjs.map +0 -1
  141. package/dist/controllers/skillRuntime.mjs +0 -2
  142. package/dist/controllers/skillRuntime.mjs.map +0 -1
  143. package/dist/controllers/skillServer.cjs +0 -2
  144. package/dist/controllers/skillServer.cjs.map +0 -1
  145. package/dist/controllers/skillServer.mjs +0 -2
  146. package/dist/controllers/skillServer.mjs.map +0 -1
  147. package/dist/controllers/skillsCommand.cjs +0 -2
  148. package/dist/controllers/skillsCommand.cjs.map +0 -1
  149. package/dist/controllers/skillsCommand.mjs +0 -2
  150. package/dist/controllers/skillsCommand.mjs.map +0 -1
  151. package/dist/schemas/apiContracts.cjs +0 -2
  152. package/dist/schemas/apiContracts.cjs.map +0 -1
  153. package/dist/schemas/apiContracts.mjs +0 -2
  154. package/dist/schemas/apiContracts.mjs.map +0 -1
  155. package/dist/services/deferredSkills/index.cjs +0 -12
  156. package/dist/services/deferredSkills/index.cjs.map +0 -1
  157. package/dist/services/deferredSkills/index.mjs +0 -12
  158. package/dist/services/deferredSkills/index.mjs.map +0 -1
  159. package/dist/services/helpSkills/index.cjs +0 -2
  160. package/dist/services/helpSkills/index.cjs.map +0 -1
  161. package/dist/services/helpSkills/index.mjs +0 -2
  162. package/dist/services/helpSkills/index.mjs.map +0 -1
  163. package/dist/services/packageResources/index.cjs +0 -2
  164. package/dist/services/packageResources/index.cjs.map +0 -1
  165. package/dist/services/packageResources/index.mjs +0 -2
  166. package/dist/services/packageResources/index.mjs.map +0 -1
  167. package/dist/services/serverInventory/index.cjs +0 -2
  168. package/dist/services/serverInventory/index.cjs.map +0 -1
  169. package/dist/services/serverInventory/index.mjs +0 -2
  170. package/dist/services/serverInventory/index.mjs.map +0 -1
  171. package/dist/services/skillCatalog/index.cjs +0 -2
  172. package/dist/services/skillCatalog/index.cjs.map +0 -1
  173. package/dist/services/skillCatalog/index.d.cts.map +0 -1
  174. package/dist/services/skillCatalog/index.d.mts.map +0 -1
  175. package/dist/services/skillCatalog/index.mjs +0 -2
  176. package/dist/services/skillCatalog/index.mjs.map +0 -1
  177. package/dist/services/skillText/index.cjs +0 -2
  178. package/dist/services/skillText/index.cjs.map +0 -1
  179. package/dist/services/skillText/index.d.cts.map +0 -1
  180. package/dist/services/skillText/index.d.mts.map +0 -1
  181. package/dist/services/skillText/index.mjs +0 -2
  182. package/dist/services/skillText/index.mjs.map +0 -1
  183. package/dist/tui/skillsOverlay.cjs +0 -4
  184. package/dist/tui/skillsOverlay.cjs.map +0 -1
  185. package/dist/tui/skillsOverlay.d.cts.map +0 -1
  186. package/dist/tui/skillsOverlay.d.mts.map +0 -1
  187. package/dist/tui/skillsOverlay.mjs +0 -4
  188. package/dist/tui/skillsOverlay.mjs.map +0 -1
  189. package/dist/types/skills.cjs +0 -2
  190. package/dist/types/skills.cjs.map +0 -1
  191. package/dist/types/skills.d.cts.map +0 -1
  192. package/dist/types/skills.d.mts.map +0 -1
  193. package/dist/types/skills.mjs +0 -2
  194. package/dist/types/skills.mjs.map +0 -1
  195. /package/dist/{schemas → src/schemas}/apiContracts.d.cts +0 -0
  196. /package/dist/{schemas → src/schemas}/apiContracts.d.mts +0 -0
  197. /package/dist/{services → src/services}/skillCatalog/index.d.cts +0 -0
  198. /package/dist/{services → src/services}/skillCatalog/index.d.mts +0 -0
  199. /package/dist/{services → src/services}/skillText/index.d.cts +0 -0
  200. /package/dist/{services → src/services}/skillText/index.d.mts +0 -0
  201. /package/dist/{tui → src/tui}/skillsOverlay.d.cts +0 -0
  202. /package/dist/{types → src/types}/skills.d.cts +0 -0
  203. /package/dist/{types → src/types}/skills.d.mts +0 -0
package/README.md CHANGED
@@ -46,4 +46,4 @@ it. It is not selectable from `.doom/modes.yaml`.
46
46
 
47
47
  MIT
48
48
 
49
- Plugin entries live in `src/extensions`, host event and command controllers in `src/controllers`, and catalog and discovery logic in named `src/services` folders. `src/exports` contains public helpers and types. Pi declares owned service bindings and native events. Its `onStop` invalidates pending discovery generations; final disposal releases the Help view. The server awaits its async declaration factory to discover named skill commands before registration and startup.
49
+ Plugin entries live in `src/extensions`, host events and commands in routed surfaces, and catalog and discovery logic in named `src/services` folders. `src/exports` contains public helpers and types. Pi declares owned service bindings and native events. Its `onStop` invalidates pending discovery generations; final disposal releases the Help view. The server awaits its async declaration factory to discover named skill commands before registration and startup.
@@ -1 +1,23 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));exports.__toESM=s;
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+ //#endregion
23
+ exports.__toESM = __toESM;
@@ -1 +1,7 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./schemas/apiContracts.cjs");exports.apiContracts=e.apiContracts,exports.default=e.apiContracts;
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ const require_apiContracts = require("./src/schemas/apiContracts.cjs");
6
+ exports.apiContracts = require_apiContracts.apiContracts;
7
+ exports.default = require_apiContracts.apiContracts;
@@ -1,2 +1,2 @@
1
- import { apiContracts } from "./schemas/apiContracts.cjs";
1
+ import { apiContracts } from "./src/schemas/apiContracts.cjs";
2
2
  export { apiContracts, apiContracts as default };
@@ -1,2 +1,2 @@
1
- import { apiContracts } from "./schemas/apiContracts.mjs";
1
+ import { apiContracts } from "./src/schemas/apiContracts.mjs";
2
2
  export { apiContracts, apiContracts as default };
@@ -1 +1,2 @@
1
- import{apiContracts as e}from"./schemas/apiContracts.mjs";export{e as apiContracts,e as default};
1
+ import { apiContracts } from "./src/schemas/apiContracts.mjs";
2
+ export { apiContracts, apiContracts as default };
package/dist/catalog.cjs CHANGED
@@ -1 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./services/skillCatalog/index.cjs");exports.buildSkillCatalog=e.buildSkillCatalog,exports.counter=e.counter;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_index = require("./src/services/skillCatalog/index.cjs");
3
+ exports.buildSkillCatalog = require_index.buildSkillCatalog;
4
+ exports.counter = require_index.counter;
@@ -1,2 +1,2 @@
1
- import { SkillCatalog, SkillCatalogOptions, SkillEntry, SkillGroup, SkillOwnerNode, buildSkillCatalog, counter } from "./services/skillCatalog/index.cjs";
1
+ import { SkillCatalog, SkillCatalogOptions, SkillEntry, SkillGroup, SkillOwnerNode, buildSkillCatalog, counter } from "./src/services/skillCatalog/index.cjs";
2
2
  export { type SkillCatalog, type SkillCatalogOptions, type SkillEntry, type SkillGroup, type SkillOwnerNode, buildSkillCatalog, counter };
@@ -1,2 +1,2 @@
1
- import { SkillCatalog, SkillCatalogOptions, SkillEntry, SkillGroup, SkillOwnerNode, buildSkillCatalog, counter } from "./services/skillCatalog/index.mjs";
1
+ import { SkillCatalog, SkillCatalogOptions, SkillEntry, SkillGroup, SkillOwnerNode, buildSkillCatalog, counter } from "./src/services/skillCatalog/index.mjs";
2
2
  export { type SkillCatalog, type SkillCatalogOptions, type SkillEntry, type SkillGroup, type SkillOwnerNode, buildSkillCatalog, counter };
package/dist/catalog.mjs CHANGED
@@ -1 +1,2 @@
1
- import{buildSkillCatalog as e,counter as t}from"./services/skillCatalog/index.mjs";export{e as buildSkillCatalog,t as counter};
1
+ import { buildSkillCatalog, counter } from "./src/services/skillCatalog/index.mjs";
2
+ export { buildSkillCatalog, counter };
@@ -1,2 +1,41 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../types/skills.cjs"),t=require("../controllers/skillRuntime.cjs"),n=(0,require("@agimon-ai/doompi-core/pi-extension").definePiExtension)(e.LEADER_SOURCE,({pi:n})=>({...t.createSkillRuntime({pi:n,openOverlay:async(e,t)=>(await Promise.resolve().then(()=>require("../tui/skillsOverlay.cjs"))).openSkillsOverlay(e,t)}),resources:[{source:e.LEADER_SOURCE,moduleUrl:require("url").pathToFileURL(__filename).href,skills:[{name:`doompi-author-skill`,description:`Author and distribute DoomPi agent skills. Use when creating a SKILL.md, adding supporting references or scripts, contributing a runtime skill directory through Cordis, or publishing activation-gated Help prompts from a DoomPi package.`},{name:`doompi-use-skill`,description:`Use DoomPi's skill catalog and deferred discovery. Use when browsing available skills, invoking /skill:name, understanding Help and extension-owned skill groups, or diagnosing why a skill is absent or shadowed.`}]}]}));exports.default=n,exports.skillsExtension=n;
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ const require_root_cli = require("../src/extensions/workspaces/sessions/(backend)/root.cli.cjs");
6
+ const require_skills_cli = require("../src/extensions/workspaces/sessions/(backend)/command/skills.cli.cjs");
7
+ const require_beforeAgentStart_cli = require("../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli.cjs");
8
+ const require_input_cli = require("../src/extensions/workspaces/sessions/(backend)/hook/input.cli.cjs");
9
+ const require_sessionStart_cli = require("../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.cjs");
10
+ const require_help_cli = require("../src/extensions/workspaces/sessions/(backend)/resource/help.cli.cjs");
11
+ let _agimon_ai_doompi_core_pi_extension = require("@agimon-ai/doompi-core/pi-extension");
12
+ let _agimon_ai_doompi_core_extension_file = require("@agimon-ai/doompi-core/extension-file");
13
+ //#region generated/pi.ts
14
+ const at = (value, context) => typeof value === "function" ? value(context) : value;
15
+ const extension = (0, _agimon_ai_doompi_core_pi_extension.definePiExtension)("@agimon-ai/doompi-skill", async (context) => {
16
+ const scopeSession = await require_root_cli.default(context);
17
+ const contextSession = {
18
+ ...context,
19
+ root: scopeSession.value
20
+ };
21
+ return {
22
+ ...(0, _agimon_ai_doompi_core_extension_file.composeRootHooks)(scopeSession),
23
+ get commands() {
24
+ return [at(require_skills_cli.default, contextSession)];
25
+ },
26
+ events: {
27
+ before_agent_start: at(require_beforeAgentStart_cli.default, contextSession),
28
+ input: at(require_input_cli.default, contextSession),
29
+ session_start: at(require_sessionStart_cli.default, contextSession)
30
+ },
31
+ get resources() {
32
+ return [at(require_help_cli.default, contextSession)];
33
+ },
34
+ services: [...scopeSession.services ?? []]
35
+ };
36
+ });
37
+ //#endregion
38
+ exports.default = extension;
39
+ exports.extension = extension;
40
+
2
41
  //# sourceMappingURL=pi.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pi.cjs","names":["definePiExtension","LEADER_SOURCE","createSkillRuntime"],"sources":["../../src/extensions/pi.ts"],"sourcesContent":["import { definePiExtension } from '@agimon-ai/doompi-core/pi-extension';\n\nimport { createSkillRuntime } from '../controllers/skillRuntime';\nimport { LEADER_SOURCE } from '../types/skills';\nexport const skillsExtension = definePiExtension(LEADER_SOURCE, ({ pi }) => ({\n ...createSkillRuntime({\n pi,\n openOverlay: async (context, options) => (await import('../tui/skillsOverlay')).openSkillsOverlay(context, options),\n }),\n resources: [\n {\n source: LEADER_SOURCE,\n moduleUrl: import.meta.url,\n skills: [\n {\n name: 'doompi-author-skill',\n description:\n 'Author and distribute DoomPi agent skills. Use when creating a SKILL.md, adding supporting references or scripts, contributing a runtime skill directory through Cordis, or publishing activation-gated Help prompts from a DoomPi package.',\n },\n {\n name: 'doompi-use-skill',\n description:\n \"Use DoomPi's skill catalog and deferred discovery. Use when browsing available skills, invoking /skill:name, understanding Help and extension-owned skill groups, or diagnosing why a skill is absent or shadowed.\",\n },\n ],\n },\n ],\n}));\nexport default skillsExtension;\n"],"mappings":"mLAIa,GAAA,+CAAkBA,CAAAA,CAAAA,kBAAAA,CAAkBC,EAAAA,eAAgB,CAAE,SAAU,CAC3E,GAAGC,EAAAA,mBAAmB,CACpB,KACA,YAAa,MAAO,EAAS,KAAa,MAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAM,0BAAA,CAAA,EAAA,CAAgC,kBAAkB,EAAS,CAAO,CACpH,CAAC,EACD,UAAW,CACT,CACE,OAAQD,EAAAA,cACR,UAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA,KACA,OAAQ,CACN,CACE,KAAM,sBACN,YACE,6OACJ,EACA,CACE,KAAM,mBACN,YACE,oNACJ,CACF,CACF,CACF,CACF,EAAE"}
1
+ {"version":3,"file":"pi.cjs","names":["definePiExtension","rootSession","composeRootHooks","commandSkills","hookBeforeAgentStart","hookInput","hookSessionStart","resourceHelp"],"sources":["../../generated/pi.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { definePiExtension, type PiPluginContext, type PiPluginContributions } from '@agimon-ai/doompi-core/pi-extension';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extension-file';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.cli';\nimport commandSkills from '../src/extensions/workspaces/sessions/(backend)/command/skills.cli';\nimport hookBeforeAgentStart from '../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli';\nimport hookInput from '../src/extensions/workspaces/sessions/(backend)/hook/input.cli';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli';\nimport resourceHelp from '../src/extensions/workspaces/sessions/(backend)/resource/help.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession> | OptionsOf<typeof commandSkills> | OptionsOf<typeof hookBeforeAgentStart> | OptionsOf<typeof hookInput> | OptionsOf<typeof hookSessionStart> | OptionsOf<typeof resourceHelp>, undefined>;\ntype Intersect<Union> =\n (Union extends unknown ? (value: Union) => void : never) extends (value: infer Value) => void ? Value : never;\ntype ExtensionOptions = [InferredOptions] extends [never] ? undefined : Intersect<InferredOptions>;\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n\nexport const extension = definePiExtension<ExtensionOptions>('@agimon-ai/doompi-skill', async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get commands(): PiPluginContributions['commands'] { return [at(commandSkills, contextSession)]; },\n events: {\n before_agent_start: at(hookBeforeAgentStart, contextSession) as NonNullable<PiPluginContributions['events']>['before_agent_start'],\n input: at(hookInput, contextSession) as NonNullable<PiPluginContributions['events']>['input'],\n session_start: at(hookSessionStart, contextSession) as NonNullable<PiPluginContributions['events']>['session_start'],\n },\n get resources(): PiPluginContributions['resources'] { return [at(resourceHelp, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;;;;;;;;;;AAkBA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,aAAA,GAAYA,oCAAAA,kBAAAA,CAAoC,2BAA2B,OAAO,YAAY;CACzG,MAAM,eAAe,MAAMC,iBAAAA,QAAY,OAAO;CAC9C,MAAM,iBAAiB;EAAE,GAAG;EAAS,MAAM,aAAa;CAAM;CAC9D,OAAO;EACL,IAAA,GAAGC,sCAAAA,iBAAAA,CAAiB,YAAY;EAChC,IAAI,WAA8C;GAAE,OAAO,CAAC,GAAGC,mBAAAA,SAAe,cAAc,CAAC;EAAG;EAChG,QAAQ;GACN,oBAAoB,GAAGC,6BAAAA,SAAsB,cAAc;GAC3D,OAAO,GAAGC,kBAAAA,SAAW,cAAc;GACnC,eAAe,GAAGC,yBAAAA,SAAkB,cAAc;EACpD;EACA,IAAI,YAAgD;GAAE,OAAO,CAAC,GAAGC,iBAAAA,SAAc,cAAc,CAAC;EAAG;EACjG,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
@@ -1,5 +1,5 @@
1
- //#region src/extensions/pi.d.ts
2
- export declare const skillsExtension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<undefined>;
1
+ //#region generated/pi.d.ts
2
+ export declare const extension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<undefined>;
3
3
  //#endregion
4
- export { skillsExtension as default };
4
+ export { extension as default };
5
5
  //# sourceMappingURL=pi.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pi.d.cts","names":[],"sources":["../../src/extensions/pi.ts"],"mappings":";qBAIa,uEAAe"}
1
+ {"version":3,"file":"pi.d.cts","names":[],"sources":["../../generated/pi.ts"],"mappings":";qBAqBa,iEAAS"}
@@ -1,5 +1,5 @@
1
- //#region src/extensions/pi.d.ts
2
- export declare const skillsExtension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<undefined>;
1
+ //#region generated/pi.d.ts
2
+ export declare const extension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<undefined>;
3
3
  //#endregion
4
- export { skillsExtension as default };
4
+ export { extension as default };
5
5
  //# sourceMappingURL=pi.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pi.d.mts","names":[],"sources":["../../src/extensions/pi.ts"],"mappings":";qBAIa,uEAAe"}
1
+ {"version":3,"file":"pi.d.mts","names":[],"sources":["../../generated/pi.ts"],"mappings":";qBAqBa,iEAAS"}
@@ -1,2 +1,36 @@
1
- import{LEADER_SOURCE as e}from"../types/skills.mjs";import{createSkillRuntime as t}from"../controllers/skillRuntime.mjs";import{definePiExtension as n}from"@agimon-ai/doompi-core/pi-extension";const r=n(e,({pi:n})=>({...t({pi:n,openOverlay:async(e,t)=>(await import(`../tui/skillsOverlay.mjs`)).openSkillsOverlay(e,t)}),resources:[{source:e,moduleUrl:import.meta.url,skills:[{name:`doompi-author-skill`,description:`Author and distribute DoomPi agent skills. Use when creating a SKILL.md, adding supporting references or scripts, contributing a runtime skill directory through Cordis, or publishing activation-gated Help prompts from a DoomPi package.`},{name:`doompi-use-skill`,description:`Use DoomPi's skill catalog and deferred discovery. Use when browsing available skills, invoking /skill:name, understanding Help and extension-owned skill groups, or diagnosing why a skill is absent or shadowed.`}]}]}));export{r as default,r as skillsExtension};
1
+ import root_cli_default from "../src/extensions/workspaces/sessions/(backend)/root.cli.mjs";
2
+ import skills_cli_default from "../src/extensions/workspaces/sessions/(backend)/command/skills.cli.mjs";
3
+ import beforeAgentStart_cli_default from "../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli.mjs";
4
+ import input_cli_default from "../src/extensions/workspaces/sessions/(backend)/hook/input.cli.mjs";
5
+ import sessionStart_cli_default from "../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.mjs";
6
+ import help_cli_default from "../src/extensions/workspaces/sessions/(backend)/resource/help.cli.mjs";
7
+ import { definePiExtension } from "@agimon-ai/doompi-core/pi-extension";
8
+ import { composeRootHooks } from "@agimon-ai/doompi-core/extension-file";
9
+ //#region generated/pi.ts
10
+ const at = (value, context) => typeof value === "function" ? value(context) : value;
11
+ const extension = definePiExtension("@agimon-ai/doompi-skill", async (context) => {
12
+ const scopeSession = await root_cli_default(context);
13
+ const contextSession = {
14
+ ...context,
15
+ root: scopeSession.value
16
+ };
17
+ return {
18
+ ...composeRootHooks(scopeSession),
19
+ get commands() {
20
+ return [at(skills_cli_default, contextSession)];
21
+ },
22
+ events: {
23
+ before_agent_start: at(beforeAgentStart_cli_default, contextSession),
24
+ input: at(input_cli_default, contextSession),
25
+ session_start: at(sessionStart_cli_default, contextSession)
26
+ },
27
+ get resources() {
28
+ return [at(help_cli_default, contextSession)];
29
+ },
30
+ services: [...scopeSession.services ?? []]
31
+ };
32
+ });
33
+ //#endregion
34
+ export { extension as default, extension };
35
+
2
36
  //# sourceMappingURL=pi.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pi.mjs","names":[],"sources":["../../src/extensions/pi.ts"],"sourcesContent":["import { definePiExtension } from '@agimon-ai/doompi-core/pi-extension';\n\nimport { createSkillRuntime } from '../controllers/skillRuntime';\nimport { LEADER_SOURCE } from '../types/skills';\nexport const skillsExtension = definePiExtension(LEADER_SOURCE, ({ pi }) => ({\n ...createSkillRuntime({\n pi,\n openOverlay: async (context, options) => (await import('../tui/skillsOverlay')).openSkillsOverlay(context, options),\n }),\n resources: [\n {\n source: LEADER_SOURCE,\n moduleUrl: import.meta.url,\n skills: [\n {\n name: 'doompi-author-skill',\n description:\n 'Author and distribute DoomPi agent skills. Use when creating a SKILL.md, adding supporting references or scripts, contributing a runtime skill directory through Cordis, or publishing activation-gated Help prompts from a DoomPi package.',\n },\n {\n name: 'doompi-use-skill',\n description:\n \"Use DoomPi's skill catalog and deferred discovery. Use when browsing available skills, invoking /skill:name, understanding Help and extension-owned skill groups, or diagnosing why a skill is absent or shadowed.\",\n },\n ],\n },\n ],\n}));\nexport default skillsExtension;\n"],"mappings":"iMAIA,MAAa,EAAkB,EAAkB,GAAgB,CAAE,SAAU,CAC3E,GAAG,EAAmB,CACpB,KACA,YAAa,MAAO,EAAS,KAAa,MAAM,OAAO,4BAAA,CAAyB,kBAAkB,EAAS,CAAO,CACpH,CAAC,EACD,UAAW,CACT,CACE,OAAQ,EACR,UAAW,YAAY,IACvB,OAAQ,CACN,CACE,KAAM,sBACN,YACE,6OACJ,EACA,CACE,KAAM,mBACN,YACE,oNACJ,CACF,CACF,CACF,CACF,EAAE"}
1
+ {"version":3,"file":"pi.mjs","names":["rootSession","commandSkills","hookBeforeAgentStart","hookInput","hookSessionStart","resourceHelp"],"sources":["../../generated/pi.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { definePiExtension, type PiPluginContext, type PiPluginContributions } from '@agimon-ai/doompi-core/pi-extension';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extension-file';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.cli';\nimport commandSkills from '../src/extensions/workspaces/sessions/(backend)/command/skills.cli';\nimport hookBeforeAgentStart from '../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli';\nimport hookInput from '../src/extensions/workspaces/sessions/(backend)/hook/input.cli';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli';\nimport resourceHelp from '../src/extensions/workspaces/sessions/(backend)/resource/help.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession> | OptionsOf<typeof commandSkills> | OptionsOf<typeof hookBeforeAgentStart> | OptionsOf<typeof hookInput> | OptionsOf<typeof hookSessionStart> | OptionsOf<typeof resourceHelp>, undefined>;\ntype Intersect<Union> =\n (Union extends unknown ? (value: Union) => void : never) extends (value: infer Value) => void ? Value : never;\ntype ExtensionOptions = [InferredOptions] extends [never] ? undefined : Intersect<InferredOptions>;\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n\nexport const extension = definePiExtension<ExtensionOptions>('@agimon-ai/doompi-skill', async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get commands(): PiPluginContributions['commands'] { return [at(commandSkills, contextSession)]; },\n events: {\n before_agent_start: at(hookBeforeAgentStart, contextSession) as NonNullable<PiPluginContributions['events']>['before_agent_start'],\n input: at(hookInput, contextSession) as NonNullable<PiPluginContributions['events']>['input'],\n session_start: at(hookSessionStart, contextSession) as NonNullable<PiPluginContributions['events']>['session_start'],\n },\n get resources(): PiPluginContributions['resources'] { return [at(resourceHelp, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;;;;;;AAkBA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,YAAY,kBAAoC,2BAA2B,OAAO,YAAY;CACzG,MAAM,eAAe,MAAMA,iBAAY,OAAO;CAC9C,MAAM,iBAAiB;EAAE,GAAG;EAAS,MAAM,aAAa;CAAM;CAC9D,OAAO;EACL,GAAG,iBAAiB,YAAY;EAChC,IAAI,WAA8C;GAAE,OAAO,CAAC,GAAGC,oBAAe,cAAc,CAAC;EAAG;EAChG,QAAQ;GACN,oBAAoB,GAAGC,8BAAsB,cAAc;GAC3D,OAAO,GAAGC,mBAAW,cAAc;GACnC,eAAe,GAAGC,0BAAkB,cAAc;EACpD;EACA,IAAI,YAAgD;GAAE,OAAO,CAAC,GAAGC,kBAAc,cAAc,CAAC;EAAG;EACjG,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
@@ -1,2 +1,42 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../types/skills.cjs"),t=require("../controllers/skillServer.cjs"),n=(0,require("@agimon-ai/doompi-core/server-facet").defineServerPlugin)({name:e.LEADER_SOURCE,session:({agent:e,signal:n})=>e?t.createSkillServer(e,n):{}});exports.default=n,exports.skillServerFacet=n;
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ const require_root_server = require("../src/extensions/workspaces/sessions/(backend)/root.server.cjs");
6
+ const require_skills_server = require("../src/extensions/workspaces/sessions/(backend)/command/skills.server.cjs");
7
+ const require_skills_server$1 = require("../src/extensions/workspaces/sessions/(backend)/resource/skills.server.cjs");
8
+ let _agimon_ai_doompi_core_extension_file = require("@agimon-ai/doompi-core/extension-file");
9
+ let _agimon_ai_doompi_core_server_facet = require("@agimon-ai/doompi-core/server-facet");
10
+ //#region generated/server.ts
11
+ const many = (value, context) => {
12
+ const resolved = typeof value === "function" ? value(context) : value;
13
+ return Array.isArray(resolved) ? resolved : [resolved];
14
+ };
15
+ const facet = (0, _agimon_ai_doompi_core_server_facet.defineServerPlugin)({
16
+ name: "@agimon-ai/doompi-skill",
17
+ session: async (context) => {
18
+ const scopeSession = await require_root_server.default(context);
19
+ const contextSession = {
20
+ ...context,
21
+ root: scopeSession.value
22
+ };
23
+ return {
24
+ ...(0, _agimon_ai_doompi_core_extension_file.composeRootHooks)(scopeSession),
25
+ get commands() {
26
+ return [...many(require_skills_server.default, contextSession)];
27
+ },
28
+ get resources() {
29
+ return [...many(require_skills_server$1.default, contextSession)];
30
+ },
31
+ services: [...scopeSession.services ?? []],
32
+ get activities() {
33
+ return [...scopeSession.activities ?? []];
34
+ }
35
+ };
36
+ }
37
+ });
38
+ //#endregion
39
+ exports.default = facet;
40
+ exports.facet = facet;
41
+
2
42
  //# sourceMappingURL=server.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.cjs","names":["defineServerPlugin","LEADER_SOURCE","createSkillServer"],"sources":["../../src/extensions/server.ts"],"sourcesContent":["import { defineServerPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nimport { createSkillServer } from '../controllers/skillServer';\nimport { LEADER_SOURCE } from '../types/skills';\nexport const skillServerFacet = defineServerPlugin({\n name: LEADER_SOURCE,\n session: ({ agent, signal }) => (agent ? createSkillServer(agent, signal) : {}),\n});\n\nexport default skillServerFacet;\n"],"mappings":"kLAIa,GAAA,+CAAmBA,CAAAA,CAAAA,mBAAAA,CAAmB,CACjD,KAAMC,EAAAA,cACN,SAAU,CAAE,QAAO,YAAc,EAAQC,EAAAA,kBAAkB,EAAO,CAAM,EAAI,CAAC,CAC/E,CAAC"}
1
+ {"version":3,"file":"server.cjs","names":["defineServerPlugin","rootSession","composeRootHooks","commandSkills","resourceSkills"],"sources":["../../generated/server.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineServerPlugin, type DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extension-file';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport commandSkills from '../src/extensions/workspaces/sessions/(backend)/command/skills.server';\nimport resourceSkills from '../src/extensions/workspaces/sessions/(backend)/resource/skills.server';\n\ntype ManyFactory<T, C> = (context: C) => T | readonly T[];\nconst many = <T, C>(value: T | readonly T[] | ManyFactory<T, C>, context: C): readonly T[] => {\n const resolved = typeof value === 'function' ? (value as ManyFactory<T, C>)(context) : value;\n return Array.isArray(resolved) ? resolved : [resolved as T];\n};\n\nexport const facet = defineServerPlugin({\n name: '@agimon-ai/doompi-skill',\n session: async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get commands(): DoomServerSessionPlugin['commands'] { return [...many(commandSkills, contextSession)]; },\n get resources(): DoomServerSessionPlugin['resources'] { return [...many(resourceSkills, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): DoomServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default facet;\n"],"mappings":";;;;;;;;;;AASA,MAAM,QAAc,OAA6C,YAA6B;CAC5F,MAAM,WAAW,OAAO,UAAU,aAAc,MAA4B,OAAO,IAAI;CACvF,OAAO,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAa;AAC5D;AAEA,MAAa,SAAA,GAAQA,oCAAAA,mBAAAA,CAAmB;CACtC,MAAM;CACN,SAAS,OAAO,YAAY;EAC1B,MAAM,eAAe,MAAMC,oBAAAA,QAAY,OAAO;EAC9C,MAAM,iBAAiB;GAAE,GAAG;GAAS,MAAM,aAAa;EAAM;EAC9D,OAAO;GACL,IAAA,GAAGC,sCAAAA,iBAAAA,CAAiB,YAAY;GAChC,IAAI,WAAgD;IAAE,OAAO,CAAC,GAAG,KAAKC,sBAAAA,SAAe,cAAc,CAAC;GAAG;GACvG,IAAI,YAAkD;IAAE,OAAO,CAAC,GAAG,KAAKC,wBAAAA,SAAgB,cAAc,CAAC;GAAG;GAC1G,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;GAC3C,IAAI,aAAoD;IAAE,OAAO,CAAC,GAAI,aAAa,cAAc,CAAC,CAAE;GAAG;EACzG;CACF;AACF,CAAC"}
@@ -1,5 +1,5 @@
1
- //#region src/extensions/server.d.ts
2
- export declare const skillServerFacet: import("@agimon-ai/doompi-core/server-facet").DoomServerFacet;
1
+ //#region generated/server.d.ts
2
+ export declare const facet: import("@agimon-ai/doompi-core/server-facet").DoomServerFacet;
3
3
  //#endregion
4
- export { skillServerFacet as default };
4
+ export { facet as default };
5
5
  //# sourceMappingURL=server.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.cts","names":[],"sources":["../../src/extensions/server.ts"],"mappings":";qBAIa,gEAAgB"}
1
+ {"version":3,"file":"server.d.cts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAca,qDAAK"}
@@ -1,5 +1,5 @@
1
- //#region src/extensions/server.d.ts
2
- export declare const skillServerFacet: import("@agimon-ai/doompi-core/server-facet").DoomServerFacet;
1
+ //#region generated/server.d.ts
2
+ export declare const facet: import("@agimon-ai/doompi-core/server-facet").DoomServerFacet;
3
3
  //#endregion
4
- export { skillServerFacet as default };
4
+ export { facet as default };
5
5
  //# sourceMappingURL=server.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.mts","names":[],"sources":["../../src/extensions/server.ts"],"mappings":";qBAIa,gEAAgB"}
1
+ {"version":3,"file":"server.d.mts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAca,qDAAK"}
@@ -1,2 +1,37 @@
1
- import{LEADER_SOURCE as e}from"../types/skills.mjs";import{createSkillServer as t}from"../controllers/skillServer.mjs";import{defineServerPlugin as n}from"@agimon-ai/doompi-core/server-facet";const r=n({name:e,session:({agent:e,signal:n})=>e?t(e,n):{}});export{r as default,r as skillServerFacet};
1
+ import root_server_default from "../src/extensions/workspaces/sessions/(backend)/root.server.mjs";
2
+ import skills_server_default from "../src/extensions/workspaces/sessions/(backend)/command/skills.server.mjs";
3
+ import skills_server_default$1 from "../src/extensions/workspaces/sessions/(backend)/resource/skills.server.mjs";
4
+ import { composeRootHooks } from "@agimon-ai/doompi-core/extension-file";
5
+ import { defineServerPlugin } from "@agimon-ai/doompi-core/server-facet";
6
+ //#region generated/server.ts
7
+ const many = (value, context) => {
8
+ const resolved = typeof value === "function" ? value(context) : value;
9
+ return Array.isArray(resolved) ? resolved : [resolved];
10
+ };
11
+ const facet = defineServerPlugin({
12
+ name: "@agimon-ai/doompi-skill",
13
+ session: async (context) => {
14
+ const scopeSession = await root_server_default(context);
15
+ const contextSession = {
16
+ ...context,
17
+ root: scopeSession.value
18
+ };
19
+ return {
20
+ ...composeRootHooks(scopeSession),
21
+ get commands() {
22
+ return [...many(skills_server_default, contextSession)];
23
+ },
24
+ get resources() {
25
+ return [...many(skills_server_default$1, contextSession)];
26
+ },
27
+ services: [...scopeSession.services ?? []],
28
+ get activities() {
29
+ return [...scopeSession.activities ?? []];
30
+ }
31
+ };
32
+ }
33
+ });
34
+ //#endregion
35
+ export { facet as default, facet };
36
+
2
37
  //# sourceMappingURL=server.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.mjs","names":[],"sources":["../../src/extensions/server.ts"],"sourcesContent":["import { defineServerPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nimport { createSkillServer } from '../controllers/skillServer';\nimport { LEADER_SOURCE } from '../types/skills';\nexport const skillServerFacet = defineServerPlugin({\n name: LEADER_SOURCE,\n session: ({ agent, signal }) => (agent ? createSkillServer(agent, signal) : {}),\n});\n\nexport default skillServerFacet;\n"],"mappings":"gMAIA,MAAa,EAAmB,EAAmB,CACjD,KAAM,EACN,SAAU,CAAE,QAAO,YAAc,EAAQ,EAAkB,EAAO,CAAM,EAAI,CAAC,CAC/E,CAAC"}
1
+ {"version":3,"file":"server.mjs","names":["rootSession","commandSkills","resourceSkills"],"sources":["../../generated/server.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineServerPlugin, type DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extension-file';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport commandSkills from '../src/extensions/workspaces/sessions/(backend)/command/skills.server';\nimport resourceSkills from '../src/extensions/workspaces/sessions/(backend)/resource/skills.server';\n\ntype ManyFactory<T, C> = (context: C) => T | readonly T[];\nconst many = <T, C>(value: T | readonly T[] | ManyFactory<T, C>, context: C): readonly T[] => {\n const resolved = typeof value === 'function' ? (value as ManyFactory<T, C>)(context) : value;\n return Array.isArray(resolved) ? resolved : [resolved as T];\n};\n\nexport const facet = defineServerPlugin({\n name: '@agimon-ai/doompi-skill',\n session: async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get commands(): DoomServerSessionPlugin['commands'] { return [...many(commandSkills, contextSession)]; },\n get resources(): DoomServerSessionPlugin['resources'] { return [...many(resourceSkills, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): DoomServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default facet;\n"],"mappings":";;;;;;AASA,MAAM,QAAc,OAA6C,YAA6B;CAC5F,MAAM,WAAW,OAAO,UAAU,aAAc,MAA4B,OAAO,IAAI;CACvF,OAAO,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAa;AAC5D;AAEA,MAAa,QAAQ,mBAAmB;CACtC,MAAM;CACN,SAAS,OAAO,YAAY;EAC1B,MAAM,eAAe,MAAMA,oBAAY,OAAO;EAC9C,MAAM,iBAAiB;GAAE,GAAG;GAAS,MAAM,aAAa;EAAM;EAC9D,OAAO;GACL,GAAG,iBAAiB,YAAY;GAChC,IAAI,WAAgD;IAAE,OAAO,CAAC,GAAG,KAAKC,uBAAe,cAAc,CAAC;GAAG;GACvG,IAAI,YAAkD;IAAE,OAAO,CAAC,GAAG,KAAKC,yBAAgB,cAAc,CAAC;GAAG;GAC1G,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;GAC3C,IAAI,aAAoD;IAAE,OAAO,CAAC,GAAI,aAAa,cAAc,CAAC,CAAE;GAAG;EACzG;CACF;AACF,CAAC"}
package/dist/index.cjs CHANGED
@@ -1 +1,11 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./types/skills.cjs"),t=require("./services/skillText/index.cjs"),n=require("./tui/skillsOverlay.cjs");exports.LEADER_SOURCE=e.LEADER_SOURCE,exports.SKILLS_COMMAND=e.SKILLS_COMMAND,exports.SKILLS_LEADER_CONTRIBUTION=e.SKILLS_LEADER_CONTRIBUTION,exports.SKILL_COMMAND_PREFIX=e.SKILL_COMMAND_PREFIX,exports.SKILL_INVOCATION_PREFIX=e.SKILL_INVOCATION_PREFIX,exports.openSkillsOverlay=n.openSkillsOverlay,exports.skillInvocation=t.skillInvocation;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_skills = require("./src/types/skills.cjs");
3
+ const require_index = require("./src/services/skillText/index.cjs");
4
+ const require_skillsOverlay = require("./src/tui/skillsOverlay.cjs");
5
+ exports.LEADER_SOURCE = require_skills.LEADER_SOURCE;
6
+ exports.SKILLS_COMMAND = require_skills.SKILLS_COMMAND;
7
+ exports.SKILLS_LEADER_CONTRIBUTION = require_skills.SKILLS_LEADER_CONTRIBUTION;
8
+ exports.SKILL_COMMAND_PREFIX = require_skills.SKILL_COMMAND_PREFIX;
9
+ exports.SKILL_INVOCATION_PREFIX = require_skills.SKILL_INVOCATION_PREFIX;
10
+ exports.openSkillsOverlay = require_skillsOverlay.openSkillsOverlay;
11
+ exports.skillInvocation = require_index.skillInvocation;
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { skillInvocation } from "./services/skillText/index.cjs";
2
- import { SkillsOverlayResult, openSkillsOverlay } from "./tui/skillsOverlay.cjs";
3
- import { LEADER_SOURCE, SKILLS_COMMAND, SKILLS_LEADER_CONTRIBUTION, SKILL_COMMAND_PREFIX, SKILL_INVOCATION_PREFIX } from "./types/skills.cjs";
1
+ import { skillInvocation } from "./src/services/skillText/index.cjs";
2
+ import { SkillsOverlayResult, openSkillsOverlay } from "./src/tui/skillsOverlay.cjs";
3
+ import { LEADER_SOURCE, SKILLS_COMMAND, SKILLS_LEADER_CONTRIBUTION, SKILL_COMMAND_PREFIX, SKILL_INVOCATION_PREFIX } from "./src/types/skills.cjs";
4
4
  export { LEADER_SOURCE, SKILLS_COMMAND, SKILLS_LEADER_CONTRIBUTION, SKILL_COMMAND_PREFIX, SKILL_INVOCATION_PREFIX, type SkillsOverlayResult, openSkillsOverlay, skillInvocation };
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { skillInvocation } from "./services/skillText/index.mjs";
2
- import { SkillsOverlayResult, openSkillsOverlay } from "./tui/skillsOverlay.mjs";
3
- import { LEADER_SOURCE, SKILLS_COMMAND, SKILLS_LEADER_CONTRIBUTION, SKILL_COMMAND_PREFIX, SKILL_INVOCATION_PREFIX } from "./types/skills.mjs";
1
+ import { skillInvocation } from "./src/services/skillText/index.mjs";
2
+ import { SkillsOverlayResult, openSkillsOverlay } from "./src/tui/skillsOverlay.mjs";
3
+ import { LEADER_SOURCE, SKILLS_COMMAND, SKILLS_LEADER_CONTRIBUTION, SKILL_COMMAND_PREFIX, SKILL_INVOCATION_PREFIX } from "./src/types/skills.mjs";
4
4
  export { LEADER_SOURCE, SKILLS_COMMAND, SKILLS_LEADER_CONTRIBUTION, SKILL_COMMAND_PREFIX, SKILL_INVOCATION_PREFIX, type SkillsOverlayResult, openSkillsOverlay, skillInvocation };
package/dist/index.mjs CHANGED
@@ -1 +1,4 @@
1
- import{LEADER_SOURCE as e,SKILLS_COMMAND as t,SKILLS_LEADER_CONTRIBUTION as n,SKILL_COMMAND_PREFIX as r,SKILL_INVOCATION_PREFIX as i}from"./types/skills.mjs";import{skillInvocation as a}from"./services/skillText/index.mjs";import{openSkillsOverlay as o}from"./tui/skillsOverlay.mjs";export{e as LEADER_SOURCE,t as SKILLS_COMMAND,n as SKILLS_LEADER_CONTRIBUTION,r as SKILL_COMMAND_PREFIX,i as SKILL_INVOCATION_PREFIX,o as openSkillsOverlay,a as skillInvocation};
1
+ import { LEADER_SOURCE, SKILLS_COMMAND, SKILLS_LEADER_CONTRIBUTION, SKILL_COMMAND_PREFIX, SKILL_INVOCATION_PREFIX } from "./src/types/skills.mjs";
2
+ import { skillInvocation } from "./src/services/skillText/index.mjs";
3
+ import { openSkillsOverlay } from "./src/tui/skillsOverlay.mjs";
4
+ export { LEADER_SOURCE, SKILLS_COMMAND, SKILLS_LEADER_CONTRIBUTION, SKILL_COMMAND_PREFIX, SKILL_INVOCATION_PREFIX, openSkillsOverlay, skillInvocation };
@@ -0,0 +1,46 @@
1
+ const require_skills = require("../../../../../types/skills.cjs");
2
+ const require_index = require("../../../../../services/deferredSkills/index.cjs");
3
+ //#region src/extensions/workspaces/sessions/(backend)/_lib/skillCommands.ts
4
+ /**
5
+ * One command per skill, gated by whatever activates that skill.
6
+ *
7
+ * Expansion always reads the full inventory, not the group: a command is only
8
+ * dispatchable while its condition holds, so by the time one runs its skill is
9
+ * active, and looking it up in the union keeps one lookup table instead of one
10
+ * per domain.
11
+ */
12
+ function skillCommand(skill, domain, inventory) {
13
+ return {
14
+ ...domain === void 0 ? {} : { when: { domain } },
15
+ name: `${require_skills.SKILL_COMMAND_PREFIX}${skill.name}`,
16
+ description: skill.description,
17
+ execute: async (args, execution) => {
18
+ const text = `${require_skills.SKILL_INVOCATION_PREFIX}${skill.name}${args ? ` ${args}` : ""}`;
19
+ const expanded = require_index.expandDeferredSkillCommand(text, inventory.skills);
20
+ if (expanded === text) throw new Error(`Skill '${skill.name}' is no longer readable.`);
21
+ await execution.session.prompt(expanded);
22
+ }
23
+ };
24
+ }
25
+ function createSkillCommands(inventory, catalog, groups) {
26
+ return [{
27
+ name: require_skills.SKILLS_COMMAND,
28
+ description: "List discovered skills or invoke one by name.",
29
+ async execute(args, execution) {
30
+ const requested = args.trim();
31
+ if (requested) {
32
+ await execution.session.prompt(require_index.expandDeferredSkillCommand(`${require_skills.SKILL_INVOCATION_PREFIX}${requested}`, inventory.skills));
33
+ return;
34
+ }
35
+ await execution.client.notify({
36
+ title: "DoomPi skills",
37
+ body: catalog,
38
+ level: "info"
39
+ });
40
+ }
41
+ }, ...groups.flatMap((group) => group.skills.map((skill) => skillCommand(skill, group.domain, inventory)))];
42
+ }
43
+ //#endregion
44
+ exports.createSkillCommands = createSkillCommands;
45
+
46
+ //# sourceMappingURL=skillCommands.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillCommands.cjs","names":["SKILL_COMMAND_PREFIX","SKILL_INVOCATION_PREFIX","expandDeferredSkillCommand","SKILLS_COMMAND"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/skillCommands.ts"],"sourcesContent":["import type { DoomHeadlessCommand } from '@agimon-ai/doompi-core/headless';\nimport type { Skill } from '@earendil-works/pi-coding-agent';\n\nimport { expandDeferredSkillCommand, type DeferredSkillSnapshot } from '../../../../../services/deferredSkills';\nimport type { ServerSkillGroup } from '../../../../../services/serverInventory';\nimport { SKILL_COMMAND_PREFIX, SKILL_INVOCATION_PREFIX, SKILLS_COMMAND } from '../../../../../types/skills';\n\n/**\n * One command per skill, gated by whatever activates that skill.\n *\n * Expansion always reads the full inventory, not the group: a command is only\n * dispatchable while its condition holds, so by the time one runs its skill is\n * active, and looking it up in the union keeps one lookup table instead of one\n * per domain.\n */\nfunction skillCommand(skill: Skill, domain: string | undefined, inventory: DeferredSkillSnapshot): DoomHeadlessCommand {\n return {\n ...(domain === undefined ? {} : { when: { domain } }),\n name: `${SKILL_COMMAND_PREFIX}${skill.name}`,\n description: skill.description,\n execute: async (args, execution) => {\n const text = `${SKILL_INVOCATION_PREFIX}${skill.name}${args ? ` ${args}` : ''}`;\n const expanded = expandDeferredSkillCommand(text, inventory.skills);\n if (expanded === text) throw new Error(`Skill '${skill.name}' is no longer readable.`);\n await execution.session.prompt(expanded);\n },\n };\n}\n\nexport function createSkillCommands(\n inventory: DeferredSkillSnapshot,\n catalog: string,\n groups: readonly ServerSkillGroup[],\n): readonly DoomHeadlessCommand[] {\n return [\n {\n name: SKILLS_COMMAND,\n description: 'List discovered skills or invoke one by name.',\n async execute(args, execution) {\n const requested = args.trim();\n if (requested) {\n await execution.session.prompt(\n expandDeferredSkillCommand(`${SKILL_INVOCATION_PREFIX}${requested}`, inventory.skills),\n );\n return;\n }\n await execution.client.notify({\n title: 'DoomPi skills',\n body: catalog,\n level: 'info',\n });\n },\n },\n ...groups.flatMap((group) => group.skills.map((skill) => skillCommand(skill, group.domain, inventory))),\n ];\n}\n"],"mappings":";;;;;;;;;;;AAeA,SAAS,aAAa,OAAc,QAA4B,WAAuD;CACrH,OAAO;EACL,GAAI,WAAW,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;EACnD,MAAM,GAAGA,eAAAA,uBAAuB,MAAM;EACtC,aAAa,MAAM;EACnB,SAAS,OAAO,MAAM,cAAc;GAClC,MAAM,OAAO,GAAGC,eAAAA,0BAA0B,MAAM,OAAO,OAAO,IAAI,SAAS;GAC3E,MAAM,WAAWC,cAAAA,2BAA2B,MAAM,UAAU,MAAM;GAClE,IAAI,aAAa,MAAM,MAAM,IAAI,MAAM,UAAU,MAAM,KAAK,yBAAyB;GACrF,MAAM,UAAU,QAAQ,OAAO,QAAQ;EACzC;CACF;AACF;AAEA,SAAgB,oBACd,WACA,SACA,QACgC;CAChC,OAAO,CACL;EACE,MAAMC,eAAAA;EACN,aAAa;EACb,MAAM,QAAQ,MAAM,WAAW;GAC7B,MAAM,YAAY,KAAK,KAAK;GAC5B,IAAI,WAAW;IACb,MAAM,UAAU,QAAQ,OACtBD,cAAAA,2BAA2B,GAAGD,eAAAA,0BAA0B,aAAa,UAAU,MAAM,CACvF;IACA;GACF;GACA,MAAM,UAAU,OAAO,OAAO;IAC5B,OAAO;IACP,MAAM;IACN,OAAO;GACT,CAAC;EACH;CACF,GACA,GAAG,OAAO,SAAS,UAAU,MAAM,OAAO,KAAK,UAAU,aAAa,OAAO,MAAM,QAAQ,SAAS,CAAC,CAAC,CACxG;AACF"}
@@ -0,0 +1,46 @@
1
+ import { SKILLS_COMMAND, SKILL_COMMAND_PREFIX, SKILL_INVOCATION_PREFIX } from "../../../../../types/skills.mjs";
2
+ import { expandDeferredSkillCommand } from "../../../../../services/deferredSkills/index.mjs";
3
+ //#region src/extensions/workspaces/sessions/(backend)/_lib/skillCommands.ts
4
+ /**
5
+ * One command per skill, gated by whatever activates that skill.
6
+ *
7
+ * Expansion always reads the full inventory, not the group: a command is only
8
+ * dispatchable while its condition holds, so by the time one runs its skill is
9
+ * active, and looking it up in the union keeps one lookup table instead of one
10
+ * per domain.
11
+ */
12
+ function skillCommand(skill, domain, inventory) {
13
+ return {
14
+ ...domain === void 0 ? {} : { when: { domain } },
15
+ name: `${SKILL_COMMAND_PREFIX}${skill.name}`,
16
+ description: skill.description,
17
+ execute: async (args, execution) => {
18
+ const text = `${SKILL_INVOCATION_PREFIX}${skill.name}${args ? ` ${args}` : ""}`;
19
+ const expanded = expandDeferredSkillCommand(text, inventory.skills);
20
+ if (expanded === text) throw new Error(`Skill '${skill.name}' is no longer readable.`);
21
+ await execution.session.prompt(expanded);
22
+ }
23
+ };
24
+ }
25
+ function createSkillCommands(inventory, catalog, groups) {
26
+ return [{
27
+ name: SKILLS_COMMAND,
28
+ description: "List discovered skills or invoke one by name.",
29
+ async execute(args, execution) {
30
+ const requested = args.trim();
31
+ if (requested) {
32
+ await execution.session.prompt(expandDeferredSkillCommand(`${SKILL_INVOCATION_PREFIX}${requested}`, inventory.skills));
33
+ return;
34
+ }
35
+ await execution.client.notify({
36
+ title: "DoomPi skills",
37
+ body: catalog,
38
+ level: "info"
39
+ });
40
+ }
41
+ }, ...groups.flatMap((group) => group.skills.map((skill) => skillCommand(skill, group.domain, inventory)))];
42
+ }
43
+ //#endregion
44
+ export { createSkillCommands };
45
+
46
+ //# sourceMappingURL=skillCommands.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillCommands.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/skillCommands.ts"],"sourcesContent":["import type { DoomHeadlessCommand } from '@agimon-ai/doompi-core/headless';\nimport type { Skill } from '@earendil-works/pi-coding-agent';\n\nimport { expandDeferredSkillCommand, type DeferredSkillSnapshot } from '../../../../../services/deferredSkills';\nimport type { ServerSkillGroup } from '../../../../../services/serverInventory';\nimport { SKILL_COMMAND_PREFIX, SKILL_INVOCATION_PREFIX, SKILLS_COMMAND } from '../../../../../types/skills';\n\n/**\n * One command per skill, gated by whatever activates that skill.\n *\n * Expansion always reads the full inventory, not the group: a command is only\n * dispatchable while its condition holds, so by the time one runs its skill is\n * active, and looking it up in the union keeps one lookup table instead of one\n * per domain.\n */\nfunction skillCommand(skill: Skill, domain: string | undefined, inventory: DeferredSkillSnapshot): DoomHeadlessCommand {\n return {\n ...(domain === undefined ? {} : { when: { domain } }),\n name: `${SKILL_COMMAND_PREFIX}${skill.name}`,\n description: skill.description,\n execute: async (args, execution) => {\n const text = `${SKILL_INVOCATION_PREFIX}${skill.name}${args ? ` ${args}` : ''}`;\n const expanded = expandDeferredSkillCommand(text, inventory.skills);\n if (expanded === text) throw new Error(`Skill '${skill.name}' is no longer readable.`);\n await execution.session.prompt(expanded);\n },\n };\n}\n\nexport function createSkillCommands(\n inventory: DeferredSkillSnapshot,\n catalog: string,\n groups: readonly ServerSkillGroup[],\n): readonly DoomHeadlessCommand[] {\n return [\n {\n name: SKILLS_COMMAND,\n description: 'List discovered skills or invoke one by name.',\n async execute(args, execution) {\n const requested = args.trim();\n if (requested) {\n await execution.session.prompt(\n expandDeferredSkillCommand(`${SKILL_INVOCATION_PREFIX}${requested}`, inventory.skills),\n );\n return;\n }\n await execution.client.notify({\n title: 'DoomPi skills',\n body: catalog,\n level: 'info',\n });\n },\n },\n ...groups.flatMap((group) => group.skills.map((skill) => skillCommand(skill, group.domain, inventory))),\n ];\n}\n"],"mappings":";;;;;;;;;;;AAeA,SAAS,aAAa,OAAc,QAA4B,WAAuD;CACrH,OAAO;EACL,GAAI,WAAW,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;EACnD,MAAM,GAAG,uBAAuB,MAAM;EACtC,aAAa,MAAM;EACnB,SAAS,OAAO,MAAM,cAAc;GAClC,MAAM,OAAO,GAAG,0BAA0B,MAAM,OAAO,OAAO,IAAI,SAAS;GAC3E,MAAM,WAAW,2BAA2B,MAAM,UAAU,MAAM;GAClE,IAAI,aAAa,MAAM,MAAM,IAAI,MAAM,UAAU,MAAM,KAAK,yBAAyB;GACrF,MAAM,UAAU,QAAQ,OAAO,QAAQ;EACzC;CACF;AACF;AAEA,SAAgB,oBACd,WACA,SACA,QACgC;CAChC,OAAO,CACL;EACE,MAAM;EACN,aAAa;EACb,MAAM,QAAQ,MAAM,WAAW;GAC7B,MAAM,YAAY,KAAK,KAAK;GAC5B,IAAI,WAAW;IACb,MAAM,UAAU,QAAQ,OACtB,2BAA2B,GAAG,0BAA0B,aAAa,UAAU,MAAM,CACvF;IACA;GACF;GACA,MAAM,UAAU,OAAO,OAAO;IAC5B,OAAO;IACP,MAAM;IACN,OAAO;GACT,CAAC;EACH;CACF,GACA,GAAG,OAAO,SAAS,UAAU,MAAM,OAAO,KAAK,UAAU,aAAa,OAAO,MAAM,QAAQ,SAAS,CAAC,CAAC,CACxG;AACF"}