@agimon-ai/doompi-loop 0.0.1-alpha.72 → 0.0.1-alpha.74

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 (144) hide show
  1. package/dist/api-contracts.cjs +7 -1
  2. package/dist/api-contracts.mjs +2 -1
  3. package/dist/extensions/pi.cjs +35 -1
  4. package/dist/extensions/pi.cjs.map +1 -1
  5. package/dist/extensions/pi.d.cts +3 -3
  6. package/dist/extensions/pi.d.cts.map +1 -1
  7. package/dist/extensions/pi.d.mts +3 -3
  8. package/dist/extensions/pi.d.mts.map +1 -1
  9. package/dist/extensions/pi.mjs +30 -1
  10. package/dist/extensions/pi.mjs.map +1 -1
  11. package/dist/extensions/server.cjs +50 -1
  12. package/dist/extensions/server.cjs.map +1 -1
  13. package/dist/extensions/server.d.cts +3 -3
  14. package/dist/extensions/server.d.cts.map +1 -1
  15. package/dist/extensions/server.d.mts +3 -3
  16. package/dist/extensions/server.d.mts.map +1 -1
  17. package/dist/extensions/server.mjs +45 -1
  18. package/dist/extensions/server.mjs.map +1 -1
  19. package/dist/extensions/web.mjs +228 -0
  20. package/dist/extensions/web.mjs.map +1 -0
  21. package/dist/index.mjs +1 -1
  22. package/dist/loopLaunchers.cjs +5 -1
  23. package/dist/loopLaunchers.mjs +2 -1
  24. package/dist/src/constants/loop.cjs +11 -1
  25. package/dist/src/constants/loop.cjs.map +1 -1
  26. package/dist/src/constants/loop.mjs +8 -1
  27. package/dist/src/constants/loop.mjs.map +1 -1
  28. package/dist/src/constants/piLoop.cjs +15 -1
  29. package/dist/src/constants/piLoop.cjs.map +1 -1
  30. package/dist/src/constants/piLoop.mjs +10 -1
  31. package/dist/src/constants/piLoop.mjs.map +1 -1
  32. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.cjs +26 -0
  33. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.cjs.map +1 -0
  34. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.mjs +26 -0
  35. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.mjs.map +1 -0
  36. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.cjs +7 -0
  37. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.cjs.map +1 -0
  38. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.mjs +7 -0
  39. package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.mjs.map +1 -0
  40. package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.cli.cjs +6 -0
  41. package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.cli.cjs.map +1 -0
  42. package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.cli.mjs +7 -0
  43. package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.cli.mjs.map +1 -0
  44. package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.server.cjs +6 -0
  45. package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.server.cjs.map +1 -0
  46. package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.server.mjs +7 -0
  47. package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.server.mjs.map +1 -0
  48. package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.cli.cjs +6 -0
  49. package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.cli.cjs.map +1 -0
  50. package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.cli.mjs +7 -0
  51. package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.cli.mjs.map +1 -0
  52. package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.server.cjs +6 -0
  53. package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.server.cjs.map +1 -0
  54. package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.server.mjs +7 -0
  55. package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.server.mjs.map +1 -0
  56. package/dist/src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.cjs +6 -0
  57. package/dist/src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.cjs.map +1 -0
  58. package/dist/src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.mjs +7 -0
  59. package/dist/src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.mjs.map +1 -0
  60. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs +6 -0
  61. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs.map +1 -0
  62. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs +7 -0
  63. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs.map +1 -0
  64. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.server.cjs +6 -0
  65. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.server.cjs.map +1 -0
  66. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.server.mjs +7 -0
  67. package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.server.mjs.map +1 -0
  68. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.cjs +6 -0
  69. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.cjs.map +1 -0
  70. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.mjs +7 -0
  71. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.mjs.map +1 -0
  72. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.cjs +6 -0
  73. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.cjs.map +1 -0
  74. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.mjs +7 -0
  75. package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.mjs.map +1 -0
  76. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs +14 -0
  77. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs.map +1 -0
  78. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs +15 -0
  79. package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs.map +1 -0
  80. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs +17 -0
  81. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs.map +1 -0
  82. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs +18 -0
  83. package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs.map +1 -0
  84. package/dist/src/schemas/apiContracts.cjs +12 -1
  85. package/dist/src/schemas/apiContracts.cjs.map +1 -1
  86. package/dist/src/schemas/apiContracts.mjs +12 -1
  87. package/dist/src/schemas/apiContracts.mjs.map +1 -1
  88. package/dist/src/schemas/loopLaunchers.cjs +16 -1
  89. package/dist/src/schemas/loopLaunchers.cjs.map +1 -1
  90. package/dist/src/schemas/loopLaunchers.mjs +14 -1
  91. package/dist/src/schemas/loopLaunchers.mjs.map +1 -1
  92. package/dist/src/services/defaultLoopLauncher/index.cjs +91 -1
  93. package/dist/src/services/defaultLoopLauncher/index.cjs.map +1 -1
  94. package/dist/src/services/defaultLoopLauncher/index.mjs +91 -1
  95. package/dist/src/services/defaultLoopLauncher/index.mjs.map +1 -1
  96. package/dist/src/services/loopCommand/index.cjs +15 -0
  97. package/dist/src/services/loopCommand/index.cjs.map +1 -0
  98. package/dist/src/services/loopCommand/index.mjs +15 -0
  99. package/dist/src/services/loopCommand/index.mjs.map +1 -0
  100. package/dist/src/services/loopLaunchers/index.cjs +179 -1
  101. package/dist/src/services/loopLaunchers/index.cjs.map +1 -1
  102. package/dist/src/services/loopLaunchers/index.mjs +179 -1
  103. package/dist/src/services/loopLaunchers/index.mjs.map +1 -1
  104. package/dist/src/services/serverRuntime/index.cjs +293 -0
  105. package/dist/src/services/serverRuntime/index.cjs.map +1 -0
  106. package/dist/src/services/serverRuntime/index.mjs +293 -0
  107. package/dist/src/services/serverRuntime/index.mjs.map +1 -0
  108. package/dist/src/tui/leader.cjs +35 -1
  109. package/dist/src/tui/leader.cjs.map +1 -1
  110. package/dist/src/tui/leader.mjs +35 -1
  111. package/dist/src/tui/leader.mjs.map +1 -1
  112. package/dist/src/tui/loopListOverlay.cjs +100 -1
  113. package/dist/src/tui/loopListOverlay.cjs.map +1 -1
  114. package/dist/src/tui/loopListOverlay.mjs +99 -1
  115. package/dist/src/tui/loopListOverlay.mjs.map +1 -1
  116. package/dist/src/tui/loopRuntime.cjs +255 -1
  117. package/dist/src/tui/loopRuntime.cjs.map +1 -1
  118. package/dist/src/tui/loopRuntime.mjs +255 -1
  119. package/dist/src/tui/loopRuntime.mjs.map +1 -1
  120. package/dist/src/tui/startLoopOverlay.cjs +70 -1
  121. package/dist/src/tui/startLoopOverlay.cjs.map +1 -1
  122. package/dist/src/tui/startLoopOverlay.mjs +69 -1
  123. package/dist/src/tui/startLoopOverlay.mjs.map +1 -1
  124. package/dist/src/types/loopView.cjs +18 -1
  125. package/dist/src/types/loopView.cjs.map +1 -1
  126. package/dist/src/types/loopView.mjs +17 -1
  127. package/dist/src/types/loopView.mjs.map +1 -1
  128. package/package.json +21 -20
  129. package/dist/_virtual/_rolldown/runtime.cjs +0 -1
  130. package/dist/src/controllers/loopCommand.cjs +0 -2
  131. package/dist/src/controllers/loopCommand.cjs.map +0 -1
  132. package/dist/src/controllers/loopCommand.mjs +0 -2
  133. package/dist/src/controllers/loopCommand.mjs.map +0 -1
  134. package/dist/src/controllers/serverRuntime.cjs +0 -2
  135. package/dist/src/controllers/serverRuntime.cjs.map +0 -1
  136. package/dist/src/controllers/serverRuntime.mjs +0 -2
  137. package/dist/src/controllers/serverRuntime.mjs.map +0 -1
  138. package/dist/src/services/loopResource/index.cjs +0 -2
  139. package/dist/src/services/loopResource/index.cjs.map +0 -1
  140. package/dist/src/services/loopResource/index.mjs +0 -2
  141. package/dist/src/services/loopResource/index.mjs.map +0 -1
  142. package/src/extensions/web.ts +0 -41
  143. package/src/web/components/LoopsActivitySection.tsx +0 -94
  144. package/src/web/tsconfig.json +0 -23
@@ -1 +1,7 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./src/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 +1,2 @@
1
- import{apiContracts as e}from"./src/schemas/apiContracts.mjs";export{e as apiContracts,e as default};
1
+ import { apiContracts } from "./src/schemas/apiContracts.mjs";
2
+ export { apiContracts, apiContracts as default };
@@ -1,2 +1,36 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../src/constants/piLoop.cjs"),t=require("../src/controllers/loopCommand.cjs"),n=require("../src/tui/loopRuntime.cjs");let r=require("@agimon-ai/doompi-core/pi-extension"),i=require("@agimon-ai/doompi-minor-mode");const a=(0,r.definePiExtension)(e.PACKAGE_SOURCE,({pi:r})=>{let a=n.createLoopPiRuntime(r);return{services:[...a.services??[],(0,i.piMinorModes)(a.minorModes)],events:{agent_settled:a.onAgentSettled},commands:t.createLoopCommands(a.handlers),onDispose:()=>a.onDispose(),resources:[{source:e.PACKAGE_SOURCE,moduleUrl:require("url").pathToFileURL(__filename).href,skills:[{name:`doompi-use-loop`,description:`Use Doom Pi Loop to start, inspect, and stop session-scoped recurring prompts safely.`}]}]}});exports.default=a,exports.loopExtension=a;
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_loop_cli = require("../src/extensions/workspaces/sessions/(backend)/command/loop.cli.cjs");
7
+ const require_loops_cli = require("../src/extensions/workspaces/sessions/(backend)/command/loops.cli.cjs");
8
+ const require_agent_settled_cli = require("../src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.cjs");
9
+ const require_doompi_use_loop_cli = require("../src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.cjs");
10
+ let _agimon_ai_doompi_core_pi_extension = require("@agimon-ai/doompi-core/pi-extension");
11
+ let _agimon_ai_doompi_core_extension_file = require("@agimon-ai/doompi-core/extension-file");
12
+ //#region generated/pi.ts
13
+ const at = (value, context) => typeof value === "function" ? value(context) : value;
14
+ const extension = (0, _agimon_ai_doompi_core_pi_extension.definePiExtension)("@agimon-ai/doompi-loop", async (context) => {
15
+ const scopeSession = await require_root_cli.default(context);
16
+ const contextSession = {
17
+ ...context,
18
+ root: scopeSession.value
19
+ };
20
+ return {
21
+ ...(0, _agimon_ai_doompi_core_extension_file.composeRootHooks)(scopeSession),
22
+ get commands() {
23
+ return [at(require_loop_cli.default, contextSession), at(require_loops_cli.default, contextSession)];
24
+ },
25
+ events: { agent_settled: at(require_agent_settled_cli.default, contextSession) },
26
+ get resources() {
27
+ return [at(require_doompi_use_loop_cli.default, contextSession)];
28
+ },
29
+ services: [...scopeSession.services ?? []]
30
+ };
31
+ });
32
+ //#endregion
33
+ exports.default = extension;
34
+ exports.extension = extension;
35
+
2
36
  //# sourceMappingURL=pi.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pi.cjs","names":["definePiExtension","PACKAGE_SOURCE","createLoopPiRuntime","piMinorModes","createLoopCommands"],"sources":["../../src/extensions/pi.ts"],"sourcesContent":["import { definePiExtension } from '@agimon-ai/doompi-core/pi-extension';\nimport { piMinorModes } from '@agimon-ai/doompi-minor-mode';\n\nimport { PACKAGE_SOURCE } from '../constants/piLoop';\nimport { createLoopCommands } from '../controllers/loopCommand';\nimport { createLoopPiRuntime } from '../tui/loopRuntime';\nexport const loopExtension = definePiExtension(PACKAGE_SOURCE, ({ pi }) => {\n const runtime = createLoopPiRuntime(pi);\n return {\n services: [...(runtime.services ?? []), piMinorModes(runtime.minorModes)],\n events: { agent_settled: runtime.onAgentSettled },\n commands: createLoopCommands(runtime.handlers),\n\n onDispose: () => runtime.onDispose(),\n resources: [\n {\n source: PACKAGE_SOURCE,\n moduleUrl: import.meta.url,\n skills: [\n {\n name: 'doompi-use-loop',\n description: 'Use Doom Pi Loop to start, inspect, and stop session-scoped recurring prompts safely.',\n },\n ],\n },\n ],\n };\n});\nexport default loopExtension;\n"],"mappings":"qUAMA,MAAa,GAAA,EAAgBA,EAAAA,kBAAAA,CAAkBC,EAAAA,gBAAiB,CAAE,QAAS,CACzE,IAAM,EAAUC,EAAAA,oBAAoB,CAAE,EACtC,MAAO,CACL,SAAU,CAAC,GAAI,EAAQ,UAAY,CAAC,GAAA,EAAIC,EAAAA,aAAAA,CAAa,EAAQ,UAAU,CAAC,EACxE,OAAQ,CAAE,cAAe,EAAQ,cAAe,EAChD,SAAUC,EAAAA,mBAAmB,EAAQ,QAAQ,EAE7C,cAAiB,EAAQ,UAAU,EACnC,UAAW,CACT,CACE,OAAQH,EAAAA,eACR,UAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA,KACA,OAAQ,CACN,CACE,KAAM,kBACN,YAAa,uFACf,CACF,CACF,CACF,CACF,CACF,CAAC"}
1
+ {"version":3,"file":"pi.cjs","names":["definePiExtension","rootSession","composeRootHooks","commandLoop","commandLoops","hookAgentSettled","resourceDoompiUseLoop"],"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 commandLoop from '../src/extensions/workspaces/sessions/(backend)/command/loop.cli';\nimport commandLoops from '../src/extensions/workspaces/sessions/(backend)/command/loops.cli';\nimport hookAgentSettled from '../src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli';\nimport resourceDoompiUseLoop from '../src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession> | OptionsOf<typeof commandLoop> | OptionsOf<typeof commandLoops> | OptionsOf<typeof hookAgentSettled> | OptionsOf<typeof resourceDoompiUseLoop>, 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-loop', 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(commandLoop, contextSession), at(commandLoops, contextSession)]; },\n events: {\n agent_settled: at(hookAgentSettled, contextSession) as NonNullable<PiPluginContributions['events']>['agent_settled'],\n },\n get resources(): PiPluginContributions['resources'] { return [at(resourceDoompiUseLoop, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;;;;;;;;;AAiBA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,aAAA,GAAYA,oCAAAA,kBAAAA,CAAoC,0BAA0B,OAAO,YAAY;CACxG,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,iBAAAA,SAAa,cAAc,GAAG,GAAGC,kBAAAA,SAAc,cAAc,CAAC;EAAG;EAChI,QAAQ,EACN,eAAe,GAAGC,0BAAAA,SAAkB,cAAc,EACpD;EACA,IAAI,YAAgD;GAAE,OAAO,CAAC,GAAGC,4BAAAA,SAAuB,cAAc,CAAC;EAAG;EAC1G,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 loopExtension: 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 { loopExtension 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":";qBAMa,qEAAa"}
1
+ {"version":3,"file":"pi.d.cts","names":[],"sources":["../../generated/pi.ts"],"mappings":";qBAoBa,iEAAS"}
@@ -1,5 +1,5 @@
1
- //#region src/extensions/pi.d.ts
2
- export declare const loopExtension: 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 { loopExtension 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":";qBAMa,qEAAa"}
1
+ {"version":3,"file":"pi.d.mts","names":[],"sources":["../../generated/pi.ts"],"mappings":";qBAoBa,iEAAS"}
@@ -1,2 +1,31 @@
1
- import{PACKAGE_SOURCE as e}from"../src/constants/piLoop.mjs";import{createLoopCommands as t}from"../src/controllers/loopCommand.mjs";import{createLoopPiRuntime as n}from"../src/tui/loopRuntime.mjs";import{definePiExtension as r}from"@agimon-ai/doompi-core/pi-extension";import{piMinorModes as i}from"@agimon-ai/doompi-minor-mode";const a=r(e,({pi:r})=>{let a=n(r);return{services:[...a.services??[],i(a.minorModes)],events:{agent_settled:a.onAgentSettled},commands:t(a.handlers),onDispose:()=>a.onDispose(),resources:[{source:e,moduleUrl:import.meta.url,skills:[{name:`doompi-use-loop`,description:`Use Doom Pi Loop to start, inspect, and stop session-scoped recurring prompts safely.`}]}]}});export{a as default,a as loopExtension};
1
+ import root_cli_default from "../src/extensions/workspaces/sessions/(backend)/root.cli.mjs";
2
+ import loop_cli_default from "../src/extensions/workspaces/sessions/(backend)/command/loop.cli.mjs";
3
+ import loops_cli_default from "../src/extensions/workspaces/sessions/(backend)/command/loops.cli.mjs";
4
+ import agent_settled_cli_default from "../src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.mjs";
5
+ import doompi_use_loop_cli_default from "../src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.mjs";
6
+ import { definePiExtension } from "@agimon-ai/doompi-core/pi-extension";
7
+ import { composeRootHooks } from "@agimon-ai/doompi-core/extension-file";
8
+ //#region generated/pi.ts
9
+ const at = (value, context) => typeof value === "function" ? value(context) : value;
10
+ const extension = definePiExtension("@agimon-ai/doompi-loop", async (context) => {
11
+ const scopeSession = await root_cli_default(context);
12
+ const contextSession = {
13
+ ...context,
14
+ root: scopeSession.value
15
+ };
16
+ return {
17
+ ...composeRootHooks(scopeSession),
18
+ get commands() {
19
+ return [at(loop_cli_default, contextSession), at(loops_cli_default, contextSession)];
20
+ },
21
+ events: { agent_settled: at(agent_settled_cli_default, contextSession) },
22
+ get resources() {
23
+ return [at(doompi_use_loop_cli_default, contextSession)];
24
+ },
25
+ services: [...scopeSession.services ?? []]
26
+ };
27
+ });
28
+ //#endregion
29
+ export { extension as default, extension };
30
+
2
31
  //# 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';\nimport { piMinorModes } from '@agimon-ai/doompi-minor-mode';\n\nimport { PACKAGE_SOURCE } from '../constants/piLoop';\nimport { createLoopCommands } from '../controllers/loopCommand';\nimport { createLoopPiRuntime } from '../tui/loopRuntime';\nexport const loopExtension = definePiExtension(PACKAGE_SOURCE, ({ pi }) => {\n const runtime = createLoopPiRuntime(pi);\n return {\n services: [...(runtime.services ?? []), piMinorModes(runtime.minorModes)],\n events: { agent_settled: runtime.onAgentSettled },\n commands: createLoopCommands(runtime.handlers),\n\n onDispose: () => runtime.onDispose(),\n resources: [\n {\n source: PACKAGE_SOURCE,\n moduleUrl: import.meta.url,\n skills: [\n {\n name: 'doompi-use-loop',\n description: 'Use Doom Pi Loop to start, inspect, and stop session-scoped recurring prompts safely.',\n },\n ],\n },\n ],\n };\n});\nexport default loopExtension;\n"],"mappings":"0UAMA,MAAa,EAAgB,EAAkB,GAAiB,CAAE,QAAS,CACzE,IAAM,EAAU,EAAoB,CAAE,EACtC,MAAO,CACL,SAAU,CAAC,GAAI,EAAQ,UAAY,CAAC,EAAI,EAAa,EAAQ,UAAU,CAAC,EACxE,OAAQ,CAAE,cAAe,EAAQ,cAAe,EAChD,SAAU,EAAmB,EAAQ,QAAQ,EAE7C,cAAiB,EAAQ,UAAU,EACnC,UAAW,CACT,CACE,OAAQ,EACR,UAAW,YAAY,IACvB,OAAQ,CACN,CACE,KAAM,kBACN,YAAa,uFACf,CACF,CACF,CACF,CACF,CACF,CAAC"}
1
+ {"version":3,"file":"pi.mjs","names":["rootSession","commandLoop","commandLoops","hookAgentSettled","resourceDoompiUseLoop"],"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 commandLoop from '../src/extensions/workspaces/sessions/(backend)/command/loop.cli';\nimport commandLoops from '../src/extensions/workspaces/sessions/(backend)/command/loops.cli';\nimport hookAgentSettled from '../src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli';\nimport resourceDoompiUseLoop from '../src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession> | OptionsOf<typeof commandLoop> | OptionsOf<typeof commandLoops> | OptionsOf<typeof hookAgentSettled> | OptionsOf<typeof resourceDoompiUseLoop>, 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-loop', 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(commandLoop, contextSession), at(commandLoops, contextSession)]; },\n events: {\n agent_settled: at(hookAgentSettled, contextSession) as NonNullable<PiPluginContributions['events']>['agent_settled'],\n },\n get resources(): PiPluginContributions['resources'] { return [at(resourceDoompiUseLoop, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;;;;;AAiBA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,YAAY,kBAAoC,0BAA0B,OAAO,YAAY;CACxG,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,kBAAa,cAAc,GAAG,GAAGC,mBAAc,cAAc,CAAC;EAAG;EAChI,QAAQ,EACN,eAAe,GAAGC,2BAAkB,cAAc,EACpD;EACA,IAAI,YAAgD;GAAE,OAAO,CAAC,GAAGC,6BAAuB,cAAc,CAAC;EAAG;EAC1G,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
@@ -1,2 +1,51 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../src/controllers/serverRuntime.cjs"),t=(0,require("@agimon-ai/doompi-core/server-facet").defineServerPlugin)({name:`@agimon-ai/doompi-loop`,session:({agent:t})=>t?e.createSessionState(t):{}});exports.default=t,exports.loopServerFacet=t;
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_loop_server = require("../src/extensions/workspaces/sessions/(backend)/command/loop.server.cjs");
7
+ const require_loops_server = require("../src/extensions/workspaces/sessions/(backend)/command/loops.server.cjs");
8
+ const require_session_shutdown_server = require("../src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs");
9
+ const require_session_start_server = require("../src/extensions/workspaces/sessions/(backend)/hook/session-start.server.cjs");
10
+ const require_doompi_use_loop_server = require("../src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.cjs");
11
+ let _agimon_ai_doompi_core_extension_file = require("@agimon-ai/doompi-core/extension-file");
12
+ let _agimon_ai_doompi_core_server_facet = require("@agimon-ai/doompi-core/server-facet");
13
+ //#region generated/server.ts
14
+ const at = (value, context) => typeof value === "function" ? value(context) : value;
15
+ /* v8 ignore next -- generated normalization branch */
16
+ const defined = (values) => values.filter((value) => value !== void 0);
17
+ const via = (identity, value) => ({
18
+ ...identity,
19
+ ...value
20
+ });
21
+ const facet = (0, _agimon_ai_doompi_core_server_facet.defineServerPlugin)({
22
+ name: "@agimon-ai/doompi-loop",
23
+ session: async (context) => {
24
+ const scopeSession = await require_root_server.default(context);
25
+ const contextSession = {
26
+ ...context,
27
+ root: scopeSession.value
28
+ };
29
+ return {
30
+ ...(0, _agimon_ai_doompi_core_extension_file.composeRootHooks)(scopeSession),
31
+ get commands() {
32
+ return defined([via({ name: "loop" }, at(require_loop_server.default, contextSession)), via({ name: "loops" }, at(require_loops_server.default, contextSession))]);
33
+ },
34
+ get hooks() {
35
+ return defined([via({ event: "session_shutdown" }, at(require_session_shutdown_server.default, contextSession)), via({ event: "session_start" }, at(require_session_start_server.default, contextSession))]);
36
+ },
37
+ get resources() {
38
+ return defined([at(require_doompi_use_loop_server.default, contextSession)]);
39
+ },
40
+ services: [...scopeSession.services ?? []],
41
+ get activities() {
42
+ return [...scopeSession.activities ?? []];
43
+ }
44
+ };
45
+ }
46
+ });
47
+ //#endregion
48
+ exports.default = facet;
49
+ exports.facet = facet;
50
+
2
51
  //# sourceMappingURL=server.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.cjs","names":["defineServerPlugin","createSessionState"],"sources":["../../src/extensions/server.ts"],"sourcesContent":["import { defineServerPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nimport { createSessionState } from '../controllers/serverRuntime';\nexport const loopServerFacet = defineServerPlugin({\n name: '@agimon-ai/doompi-loop',\n session: ({ agent }) => (agent ? createSessionState(agent) : {}),\n});\nexport default loopServerFacet;\n"],"mappings":"uJAGa,GAAA,+CAAkBA,CAAAA,CAAAA,mBAAAA,CAAmB,CAChD,KAAM,yBACN,SAAU,CAAE,WAAa,EAAQC,EAAAA,mBAAmB,CAAK,EAAI,CAAC,CAChE,CAAC"}
1
+ {"version":3,"file":"server.cjs","names":["defineServerPlugin","rootSession","composeRootHooks","commandLoop","commandLoops","hookSessionShutdown","hookSessionStart","resourceDoompiUseLoop"],"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 commandLoop from '../src/extensions/workspaces/sessions/(backend)/command/loop.server';\nimport commandLoops from '../src/extensions/workspaces/sessions/(backend)/command/loops.server';\nimport hookSessionShutdown from '../src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/session-start.server';\nimport resourceDoompiUseLoop from '../src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n/* v8 ignore next -- generated normalization branch */\nconst defined = <T>(values: readonly (T | undefined)[]): T[] =>\n values.filter((value): value is T => value !== undefined);\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T => ({ ...identity, ...(value as object) }) as T;\n\nexport const facet = defineServerPlugin({\n name: '@agimon-ai/doompi-loop',\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 defined([via({ name: 'loop' }, at(commandLoop, contextSession)), via({ name: 'loops' }, at(commandLoops, contextSession))]); },\n get hooks(): DoomServerSessionPlugin['hooks'] { return defined([via({ event: 'session_shutdown' }, at(hookSessionShutdown, contextSession)), via({ event: 'session_start' }, at(hookSessionStart, contextSession))]); },\n get resources(): DoomServerSessionPlugin['resources'] { return defined([at(resourceDoompiUseLoop, contextSession)]); },\n services: [...(scopeSession.services ?? [])],\n get activities(): DoomServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default facet;\n"],"mappings":";;;;;;;;;;;;;AAYA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;;AAEpE,MAAM,WAAc,WAClB,OAAO,QAAQ,UAAsB,UAAU,KAAA,CAAS;AAC1D,MAAM,OAAU,UAAmC,WAAuB;CAAE,GAAG;CAAU,GAAI;AAAiB;AAE9G,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,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,GAAG,GAAGC,oBAAAA,SAAa,cAAc,CAAC,GAAG,IAAI,EAAE,MAAM,QAAQ,GAAG,GAAGC,qBAAAA,SAAc,cAAc,CAAC,CAAC,CAAC;GAAG;GAC1L,IAAI,QAA0C;IAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,OAAO,mBAAmB,GAAG,GAAGC,gCAAAA,SAAqB,cAAc,CAAC,GAAG,IAAI,EAAE,OAAO,gBAAgB,GAAG,GAAGC,6BAAAA,SAAkB,cAAc,CAAC,CAAC,CAAC;GAAG;GACtN,IAAI,YAAkD;IAAE,OAAO,QAAQ,CAAC,GAAGC,+BAAAA,SAAuB,cAAc,CAAC,CAAC;GAAG;GACrH,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 loopServerFacet: 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 { loopServerFacet 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":";qBAGa,+DAAe"}
1
+ {"version":3,"file":"server.d.cts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAmBa,qDAAK"}
@@ -1,5 +1,5 @@
1
- //#region src/extensions/server.d.ts
2
- export declare const loopServerFacet: 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 { loopServerFacet 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":";qBAGa,+DAAe"}
1
+ {"version":3,"file":"server.d.mts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAmBa,qDAAK"}
@@ -1,2 +1,46 @@
1
- import{createSessionState as e}from"../src/controllers/serverRuntime.mjs";import{defineServerPlugin as t}from"@agimon-ai/doompi-core/server-facet";const n=t({name:`@agimon-ai/doompi-loop`,session:({agent:t})=>t?e(t):{}});export{n as default,n as loopServerFacet};
1
+ import root_server_default from "../src/extensions/workspaces/sessions/(backend)/root.server.mjs";
2
+ import loop_server_default from "../src/extensions/workspaces/sessions/(backend)/command/loop.server.mjs";
3
+ import loops_server_default from "../src/extensions/workspaces/sessions/(backend)/command/loops.server.mjs";
4
+ import session_shutdown_server_default from "../src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs";
5
+ import session_start_server_default from "../src/extensions/workspaces/sessions/(backend)/hook/session-start.server.mjs";
6
+ import doompi_use_loop_server_default from "../src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.mjs";
7
+ import { composeRootHooks } from "@agimon-ai/doompi-core/extension-file";
8
+ import { defineServerPlugin } from "@agimon-ai/doompi-core/server-facet";
9
+ //#region generated/server.ts
10
+ const at = (value, context) => typeof value === "function" ? value(context) : value;
11
+ /* v8 ignore next -- generated normalization branch */
12
+ const defined = (values) => values.filter((value) => value !== void 0);
13
+ const via = (identity, value) => ({
14
+ ...identity,
15
+ ...value
16
+ });
17
+ const facet = defineServerPlugin({
18
+ name: "@agimon-ai/doompi-loop",
19
+ session: async (context) => {
20
+ const scopeSession = await root_server_default(context);
21
+ const contextSession = {
22
+ ...context,
23
+ root: scopeSession.value
24
+ };
25
+ return {
26
+ ...composeRootHooks(scopeSession),
27
+ get commands() {
28
+ return defined([via({ name: "loop" }, at(loop_server_default, contextSession)), via({ name: "loops" }, at(loops_server_default, contextSession))]);
29
+ },
30
+ get hooks() {
31
+ return defined([via({ event: "session_shutdown" }, at(session_shutdown_server_default, contextSession)), via({ event: "session_start" }, at(session_start_server_default, contextSession))]);
32
+ },
33
+ get resources() {
34
+ return defined([at(doompi_use_loop_server_default, contextSession)]);
35
+ },
36
+ services: [...scopeSession.services ?? []],
37
+ get activities() {
38
+ return [...scopeSession.activities ?? []];
39
+ }
40
+ };
41
+ }
42
+ });
43
+ //#endregion
44
+ export { facet as default, facet };
45
+
2
46
  //# 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 { createSessionState } from '../controllers/serverRuntime';\nexport const loopServerFacet = defineServerPlugin({\n name: '@agimon-ai/doompi-loop',\n session: ({ agent }) => (agent ? createSessionState(agent) : {}),\n});\nexport default loopServerFacet;\n"],"mappings":"mJAGA,MAAa,EAAkB,EAAmB,CAChD,KAAM,yBACN,SAAU,CAAE,WAAa,EAAQ,EAAmB,CAAK,EAAI,CAAC,CAChE,CAAC"}
1
+ {"version":3,"file":"server.mjs","names":["rootSession","commandLoop","commandLoops","hookSessionShutdown","hookSessionStart","resourceDoompiUseLoop"],"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 commandLoop from '../src/extensions/workspaces/sessions/(backend)/command/loop.server';\nimport commandLoops from '../src/extensions/workspaces/sessions/(backend)/command/loops.server';\nimport hookSessionShutdown from '../src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/session-start.server';\nimport resourceDoompiUseLoop from '../src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n/* v8 ignore next -- generated normalization branch */\nconst defined = <T>(values: readonly (T | undefined)[]): T[] =>\n values.filter((value): value is T => value !== undefined);\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T => ({ ...identity, ...(value as object) }) as T;\n\nexport const facet = defineServerPlugin({\n name: '@agimon-ai/doompi-loop',\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 defined([via({ name: 'loop' }, at(commandLoop, contextSession)), via({ name: 'loops' }, at(commandLoops, contextSession))]); },\n get hooks(): DoomServerSessionPlugin['hooks'] { return defined([via({ event: 'session_shutdown' }, at(hookSessionShutdown, contextSession)), via({ event: 'session_start' }, at(hookSessionStart, contextSession))]); },\n get resources(): DoomServerSessionPlugin['resources'] { return defined([at(resourceDoompiUseLoop, contextSession)]); },\n services: [...(scopeSession.services ?? [])],\n get activities(): DoomServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default facet;\n"],"mappings":";;;;;;;;;AAYA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;;AAEpE,MAAM,WAAc,WAClB,OAAO,QAAQ,UAAsB,UAAU,KAAA,CAAS;AAC1D,MAAM,OAAU,UAAmC,WAAuB;CAAE,GAAG;CAAU,GAAI;AAAiB;AAE9G,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,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,GAAG,GAAGC,qBAAa,cAAc,CAAC,GAAG,IAAI,EAAE,MAAM,QAAQ,GAAG,GAAGC,sBAAc,cAAc,CAAC,CAAC,CAAC;GAAG;GAC1L,IAAI,QAA0C;IAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,OAAO,mBAAmB,GAAG,GAAGC,iCAAqB,cAAc,CAAC,GAAG,IAAI,EAAE,OAAO,gBAAgB,GAAG,GAAGC,8BAAkB,cAAc,CAAC,CAAC,CAAC;GAAG;GACtN,IAAI,YAAkD;IAAE,OAAO,QAAQ,CAAC,GAAGC,gCAAuB,cAAc,CAAC,CAAC;GAAG;GACrH,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;GAC3C,IAAI,aAAoD;IAAE,OAAO,CAAC,GAAI,aAAa,cAAc,CAAC,CAAE;GAAG;EACzG;CACF;AACF,CAAC"}
@@ -0,0 +1,228 @@
1
+ import { defineActivityGroup, defineFill, defineLeaderBinding, defineMinorModeFile, defineSlotFile, defineWebPlugin } from "@agimon-ai/doompi-core/web";
2
+ import { Button, Dot } from "@agimon-ai/doompi-web-components";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ //#region src/types/loopView.ts
5
+ /** The browser-only status that carries active Loop instances into the activity dock. */
6
+ const LOOP_VIEW_STATUS_KEY = "doom-loop-instances";
7
+ const ANSI = new RegExp(String.raw`\u001b\[[0-9;]*m`, "gu");
8
+ function isRecord(value) {
9
+ return typeof value === "object" && value !== null && !Array.isArray(value);
10
+ }
11
+ function isState(value) {
12
+ return value === "starting" || value === "running" || value === "stopping";
13
+ }
14
+ /** Reads a Loop status without letting malformed session data crash the activity dock. */
15
+ function parseLoopStatusView(raw) {
16
+ if (raw === void 0) return void 0;
17
+ const text = raw.replace(ANSI, "").trim();
18
+ if (text === "") return void 0;
19
+ try {
20
+ const value = JSON.parse(text);
21
+ if (!Array.isArray(value) || value.length === 0) return void 0;
22
+ const items = [];
23
+ for (const item of value) {
24
+ if (!isRecord(item) || typeof item.instanceId !== "string" || item.instanceId.trim() === "" || typeof item.label !== "string" || item.label.trim() === "" || typeof item.detail !== "string" || !isState(item.state)) return;
25
+ items.push({
26
+ instanceId: item.instanceId,
27
+ label: item.label,
28
+ detail: item.detail,
29
+ state: item.state
30
+ });
31
+ }
32
+ return items;
33
+ } catch {
34
+ return;
35
+ }
36
+ }
37
+ //#endregion
38
+ //#region src/extensions/workspaces/sessions/(frontend)/activity-group/loops.web.ts
39
+ var loops_web_default = defineActivityGroup({
40
+ keys: "l l",
41
+ statusKey: LOOP_VIEW_STATUS_KEY,
42
+ order: 40
43
+ });
44
+ //#endregion
45
+ //#region src/extensions/workspaces/sessions/(frontend)/fill/_components/LoopsActivitySection.tsx
46
+ const MANAGE_COMMAND = "/loops";
47
+ const DEFAULT_LOOP_COMMAND = "/loop doompi.default";
48
+ /** Starts the built-in prompt loop without opening a generic launcher chooser. */
49
+ function DefaultLoopLauncher({ sessionId, sendSessionFrame }) {
50
+ return /* @__PURE__ */ jsx(Button, {
51
+ variant: "subtle",
52
+ size: "xs",
53
+ "data-testid": "activity-loop-default-launch",
54
+ "aria-label": "launch default loop",
55
+ disabled: sessionId === null,
56
+ onClick: () => {
57
+ if (sessionId === null) return;
58
+ sendSessionFrame(sessionId, {
59
+ type: "prompt",
60
+ message: DEFAULT_LOOP_COMMAND
61
+ });
62
+ },
63
+ className: "text-2xs font-bold",
64
+ children: "default loop"
65
+ });
66
+ }
67
+ function toneOf(state) {
68
+ if (state === "running") return "green";
69
+ if (state === "stopping") return "orange";
70
+ return "yellow";
71
+ }
72
+ /** Renders active recurring prompts contributed to the Loop activity section. */
73
+ function LoopActivityItems({ statuses }) {
74
+ const raw = statuses[LOOP_VIEW_STATUS_KEY];
75
+ const loops = parseLoopStatusView(raw);
76
+ const unavailable = raw !== void 0 && raw.trim() !== "" && loops === void 0;
77
+ if (!loops && !unavailable) return null;
78
+ return loops ? /* @__PURE__ */ jsx("ul", {
79
+ "aria-label": "active loops",
80
+ className: "flex flex-col gap-1",
81
+ children: loops.map((loop) => /* @__PURE__ */ jsxs("li", {
82
+ "data-testid": `activity-loop-${loop.instanceId}`,
83
+ "data-loop-state": loop.state,
84
+ title: `${loop.label}: ${loop.detail}`,
85
+ className: "flex min-w-0 flex-col gap-0.5 px-1 py-0.5",
86
+ children: [/* @__PURE__ */ jsxs("span", {
87
+ className: "flex min-w-0 items-center gap-1.5",
88
+ children: [
89
+ /* @__PURE__ */ jsx(Dot, {
90
+ tone: toneOf(loop.state),
91
+ pulse: loop.state !== "running"
92
+ }),
93
+ /* @__PURE__ */ jsx("span", {
94
+ className: "min-w-0 flex-1 truncate text-xs font-bold text-doom-hi",
95
+ children: loop.label
96
+ }),
97
+ /* @__PURE__ */ jsx("span", {
98
+ className: "shrink-0 text-2xs text-doom-faint",
99
+ children: loop.state
100
+ })
101
+ ]
102
+ }), /* @__PURE__ */ jsx("span", {
103
+ className: "truncate pl-3 text-2xs text-doom-faint",
104
+ children: loop.detail
105
+ })]
106
+ }, loop.instanceId))
107
+ }) : /* @__PURE__ */ jsx("p", {
108
+ className: "px-1 text-xs text-doom-faint",
109
+ children: "loop status unavailable"
110
+ });
111
+ }
112
+ /** Idle-safe Loop activity shell with extension registration and instance slots. */
113
+ function LoopsActivitySection({ sessionId, renderSlot, sendSessionFrame }) {
114
+ return /* @__PURE__ */ jsxs("div", {
115
+ "data-testid": "activity-loop-instances",
116
+ className: "flex flex-col gap-2",
117
+ children: [
118
+ /* @__PURE__ */ jsxs("div", {
119
+ className: "flex flex-wrap items-center gap-1",
120
+ children: [/* @__PURE__ */ jsx(DefaultLoopLauncher, {
121
+ sessionId,
122
+ sendSessionFrame
123
+ }), renderSlot("loop.registration")]
124
+ }),
125
+ renderSlot("loop.items"),
126
+ /* @__PURE__ */ jsx(Button, {
127
+ variant: "subtle",
128
+ size: "xs",
129
+ "data-testid": "activity-loops-manage",
130
+ "aria-label": "manage loops",
131
+ disabled: sessionId === null,
132
+ onClick: () => {
133
+ if (sessionId === null) return;
134
+ sendSessionFrame(sessionId, {
135
+ type: "prompt",
136
+ message: MANAGE_COMMAND
137
+ });
138
+ },
139
+ className: "self-end text-2xs font-bold",
140
+ children: "manage"
141
+ })
142
+ ]
143
+ });
144
+ }
145
+ //#endregion
146
+ //#region src/extensions/workspaces/sessions/(frontend)/fill/Instances.loop.items.web.tsx
147
+ var Instances_loop_items_web_default = defineFill({ component: LoopActivityItems });
148
+ //#endregion
149
+ //#region src/extensions/workspaces/sessions/(frontend)/fill/Loops.activity.loops.web.tsx
150
+ var Loops_activity_loops_web_default = defineFill({ component: LoopsActivitySection });
151
+ //#endregion
152
+ //#region src/extensions/workspaces/sessions/(frontend)/leader/list.web.ts
153
+ var list_web_default = defineLeaderBinding({
154
+ path: [{
155
+ key: "l",
156
+ label: "loops",
157
+ detail: "recurring prompt loops"
158
+ }, {
159
+ key: "l",
160
+ label: "list",
161
+ detail: "loops in this session"
162
+ }],
163
+ command: "loops"
164
+ });
165
+ //#endregion
166
+ //#region src/extensions/workspaces/sessions/(frontend)/leader/start.web.ts
167
+ var start_web_default = defineLeaderBinding({
168
+ path: [{
169
+ key: "l",
170
+ label: "loops",
171
+ detail: "recurring prompt loops"
172
+ }, {
173
+ key: "s",
174
+ label: "start",
175
+ detail: "begin a recurring loop"
176
+ }],
177
+ command: "loop"
178
+ });
179
+ //#endregion
180
+ //#region src/extensions/workspaces/sessions/(frontend)/mode/loop/mode.web.ts
181
+ var mode_web_default = defineMinorModeFile({
182
+ keys: "l l",
183
+ statusKey: "doom-loop",
184
+ activityGroup: "loops",
185
+ order: 30
186
+ });
187
+ //#endregion
188
+ //#region src/extensions/workspaces/sessions/(frontend)/slot/items.web.ts
189
+ var items_web_default = defineSlotFile({});
190
+ //#endregion
191
+ //#region src/extensions/workspaces/sessions/(frontend)/slot/registration.web.ts
192
+ var registration_web_default = defineSlotFile({});
193
+ //#endregion
194
+ //#region generated/web.ts
195
+ const via = (identity, value) => ({
196
+ ...identity,
197
+ ...value
198
+ });
199
+ const webPlugin = defineWebPlugin({
200
+ id: "loop",
201
+ session: {
202
+ get activityGroups() {
203
+ return [via({ name: "loops" }, loops_web_default)];
204
+ },
205
+ get fills() {
206
+ return [via({
207
+ slot: "loop.items",
208
+ id: "instances"
209
+ }, Instances_loop_items_web_default), via({
210
+ slot: "activity.loops",
211
+ id: "loops"
212
+ }, Loops_activity_loops_web_default)];
213
+ },
214
+ get leaderBindings() {
215
+ return [via({ id: "loop.list" }, list_web_default), via({ id: "loop.start" }, start_web_default)];
216
+ },
217
+ get minorModes() {
218
+ return [via({ name: "loop" }, mode_web_default)];
219
+ },
220
+ get slots() {
221
+ return [via({ slot: "loop.items" }, items_web_default), via({ slot: "loop.registration" }, registration_web_default)];
222
+ }
223
+ }
224
+ });
225
+ //#endregion
226
+ export { webPlugin };
227
+
228
+ //# sourceMappingURL=web.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.mjs","names":["activityGroupLoops","fillInstances","fillLoops","leaderList","leaderStart","modeLoop","slotItems","slotRegistration"],"sources":["../../src/types/loopView.ts","../../src/extensions/workspaces/sessions/(frontend)/activity-group/loops.web.ts","../../src/extensions/workspaces/sessions/(frontend)/fill/_components/LoopsActivitySection.tsx","../../src/extensions/workspaces/sessions/(frontend)/fill/Instances.loop.items.web.tsx","../../src/extensions/workspaces/sessions/(frontend)/fill/Loops.activity.loops.web.tsx","../../src/extensions/workspaces/sessions/(frontend)/leader/list.web.ts","../../src/extensions/workspaces/sessions/(frontend)/leader/start.web.ts","../../src/extensions/workspaces/sessions/(frontend)/mode/loop/mode.web.ts","../../src/extensions/workspaces/sessions/(frontend)/slot/items.web.ts","../../src/extensions/workspaces/sessions/(frontend)/slot/registration.web.ts","../../generated/web.ts"],"sourcesContent":["/** The browser-only status that carries active Loop instances into the activity dock. */\nexport const LOOP_VIEW_STATUS_KEY = 'doom-loop-instances';\n\nexport type LoopStatusState = 'starting' | 'running' | 'stopping';\n\n/** The small, serializable Loop view the cockpit needs for one activity row. */\nexport interface LoopStatusItem {\n readonly instanceId: string;\n readonly label: string;\n readonly detail: string;\n readonly state: LoopStatusState;\n}\n\ninterface LoopStatusSource {\n readonly instanceId: string;\n readonly launcherLabel: string;\n readonly label?: string;\n readonly detail?: string;\n readonly state: LoopStatusState;\n}\n\nconst ANSI = new RegExp(String.raw`\\u001b\\[[0-9;]*m`, 'gu');\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isState(value: unknown): value is LoopStatusState {\n return value === 'starting' || value === 'running' || value === 'stopping';\n}\n\n/** Projects runtime snapshots into the JSON status consumed by the web plugin. */\nexport function formatLoopStatusView(instances: readonly LoopStatusSource[]): string | undefined {\n if (instances.length === 0) return undefined;\n return JSON.stringify(\n instances.map((instance) => ({\n instanceId: instance.instanceId,\n label: instance.label ?? instance.launcherLabel,\n detail: instance.detail ?? instance.instanceId,\n state: instance.state,\n })),\n );\n}\n\n/** Reads a Loop status without letting malformed session data crash the activity dock. */\nexport function parseLoopStatusView(raw: string | undefined): LoopStatusItem[] | undefined {\n if (raw === undefined) return undefined;\n const text = raw.replace(ANSI, '').trim();\n if (text === '') return undefined;\n\n try {\n const value: unknown = JSON.parse(text);\n if (!Array.isArray(value) || value.length === 0) return undefined;\n const items: LoopStatusItem[] = [];\n for (const item of value) {\n if (\n !isRecord(item) ||\n typeof item.instanceId !== 'string' ||\n item.instanceId.trim() === '' ||\n typeof item.label !== 'string' ||\n item.label.trim() === '' ||\n typeof item.detail !== 'string' ||\n !isState(item.state)\n ) {\n return undefined;\n }\n items.push({ instanceId: item.instanceId, label: item.label, detail: item.detail, state: item.state });\n }\n return items;\n } catch {\n return undefined;\n }\n}\n","import { defineActivityGroup } from '@agimon-ai/doompi-core/web';\n\nimport { LOOP_VIEW_STATUS_KEY } from '../../../../../types/loopView';\n\nexport default defineActivityGroup({\n keys: 'l l',\n statusKey: LOOP_VIEW_STATUS_KEY,\n order: 40,\n});\n","import type { WebPluginSlotProps } from '@agimon-ai/doompi-core/web';\nimport { Button, Dot, type DotTone } from '@agimon-ai/doompi-web-components';\n\nimport { LOOP_VIEW_STATUS_KEY, parseLoopStatusView, type LoopStatusState } from '../../../../../../types/loopView';\n\nconst MANAGE_COMMAND = '/loops';\nconst DEFAULT_LOOP_COMMAND = '/loop doompi.default';\n\n/** Starts the built-in prompt loop without opening a generic launcher chooser. */\nexport function DefaultLoopLauncher({\n sessionId,\n sendSessionFrame,\n}: Pick<WebPluginSlotProps, 'sessionId' | 'sendSessionFrame'>) {\n return (\n <Button\n variant=\"subtle\"\n size=\"xs\"\n data-testid=\"activity-loop-default-launch\"\n aria-label=\"launch default loop\"\n disabled={sessionId === null}\n onClick={() => {\n if (sessionId === null) return;\n sendSessionFrame(sessionId, { type: 'prompt', message: DEFAULT_LOOP_COMMAND });\n }}\n className=\"text-2xs font-bold\"\n >\n default loop\n </Button>\n );\n}\n\nfunction toneOf(state: LoopStatusState): DotTone {\n if (state === 'running') return 'green';\n if (state === 'stopping') return 'orange';\n return 'yellow';\n}\n\n/** Renders active recurring prompts contributed to the Loop activity section. */\nexport function LoopActivityItems({ statuses }: Pick<WebPluginSlotProps, 'statuses'>) {\n const raw = statuses[LOOP_VIEW_STATUS_KEY];\n const loops = parseLoopStatusView(raw);\n const unavailable = raw !== undefined && raw.trim() !== '' && loops === undefined;\n if (!loops && !unavailable) return null;\n\n return loops ? (\n <ul aria-label=\"active loops\" className=\"flex flex-col gap-1\">\n {loops.map((loop) => (\n <li\n key={loop.instanceId}\n data-testid={`activity-loop-${loop.instanceId}`}\n data-loop-state={loop.state}\n title={`${loop.label}: ${loop.detail}`}\n className=\"flex min-w-0 flex-col gap-0.5 px-1 py-0.5\"\n >\n <span className=\"flex min-w-0 items-center gap-1.5\">\n <Dot tone={toneOf(loop.state)} pulse={loop.state !== 'running'} />\n <span className=\"min-w-0 flex-1 truncate text-xs font-bold text-doom-hi\">{loop.label}</span>\n <span className=\"shrink-0 text-2xs text-doom-faint\">{loop.state}</span>\n </span>\n <span className=\"truncate pl-3 text-2xs text-doom-faint\">{loop.detail}</span>\n </li>\n ))}\n </ul>\n ) : (\n <p className=\"px-1 text-xs text-doom-faint\">loop status unavailable</p>\n );\n}\n\n/** Idle-safe Loop activity shell with extension registration and instance slots. */\nexport function LoopsActivitySection({ sessionId, renderSlot, sendSessionFrame }: WebPluginSlotProps) {\n return (\n <div data-testid=\"activity-loop-instances\" className=\"flex flex-col gap-2\">\n <div className=\"flex flex-wrap items-center gap-1\">\n <DefaultLoopLauncher sessionId={sessionId} sendSessionFrame={sendSessionFrame} />\n {renderSlot('loop.registration')}\n </div>\n {renderSlot('loop.items')}\n <Button\n variant=\"subtle\"\n size=\"xs\"\n data-testid=\"activity-loops-manage\"\n aria-label=\"manage loops\"\n disabled={sessionId === null}\n onClick={() => {\n if (sessionId === null) return;\n sendSessionFrame(sessionId, { type: 'prompt', message: MANAGE_COMMAND });\n }}\n className=\"self-end text-2xs font-bold\"\n >\n manage\n </Button>\n </div>\n );\n}\n","import { defineFill } from '@agimon-ai/doompi-core/web';\n\nimport { LoopActivityItems } from './_components/LoopsActivitySection';\n\nexport default defineFill({ component: LoopActivityItems });\n","import { defineFill } from '@agimon-ai/doompi-core/web';\n\nimport { LoopsActivitySection } from './_components/LoopsActivitySection';\n\nexport default defineFill({ component: LoopsActivitySection });\n","import { defineLeaderBinding } from '@agimon-ai/doompi-core/web';\n\nexport default defineLeaderBinding({\n path: [\n { key: 'l', label: 'loops', detail: 'recurring prompt loops' },\n { key: 'l', label: 'list', detail: 'loops in this session' },\n ],\n command: 'loops',\n});\n","import { defineLeaderBinding } from '@agimon-ai/doompi-core/web';\n\nexport default defineLeaderBinding({\n path: [\n { key: 'l', label: 'loops', detail: 'recurring prompt loops' },\n { key: 's', label: 'start', detail: 'begin a recurring loop' },\n ],\n command: 'loop',\n});\n","import { defineMinorModeFile } from '@agimon-ai/doompi-core/web';\n\nexport default defineMinorModeFile({ keys: 'l l', statusKey: 'doom-loop', activityGroup: 'loops', order: 30 });\n","import { defineSlotFile } from '@agimon-ai/doompi-core/web';\n\nexport default defineSlotFile({});\n","import { defineSlotFile } from '@agimon-ai/doompi-core/web';\n\nexport default defineSlotFile({});\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineWebPlugin, type WebPluginContributions } from '@agimon-ai/doompi-core/web';\n\nimport activityGroupLoops from '../src/extensions/workspaces/sessions/(frontend)/activity-group/loops.web';\nimport fillInstances from '../src/extensions/workspaces/sessions/(frontend)/fill/Instances.loop.items.web';\nimport fillLoops from '../src/extensions/workspaces/sessions/(frontend)/fill/Loops.activity.loops.web';\nimport leaderList from '../src/extensions/workspaces/sessions/(frontend)/leader/list.web';\nimport leaderStart from '../src/extensions/workspaces/sessions/(frontend)/leader/start.web';\nimport modeLoop from '../src/extensions/workspaces/sessions/(frontend)/mode/loop/mode.web';\nimport slotItems from '../src/extensions/workspaces/sessions/(frontend)/slot/items.web';\nimport slotRegistration from '../src/extensions/workspaces/sessions/(frontend)/slot/registration.web';\n\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T => ({ ...identity, ...(value as object) }) as T;\n\nexport const webPlugin = defineWebPlugin({\n id: 'loop',\n session: {\n get activityGroups(): WebPluginContributions['activityGroups'] { return [via({ name: 'loops' }, activityGroupLoops)]; },\n get fills(): WebPluginContributions['fills'] { return [via({ slot: 'loop.items', id: 'instances' }, fillInstances), via({ slot: 'activity.loops', id: 'loops' }, fillLoops)]; },\n get leaderBindings(): WebPluginContributions['leaderBindings'] { return [via({ id: 'loop.list' }, leaderList), via({ id: 'loop.start' }, leaderStart)]; },\n get minorModes(): WebPluginContributions['minorModes'] { return [via({ name: 'loop' }, modeLoop)]; },\n get slots(): WebPluginContributions['slots'] { return [via({ slot: 'loop.items' }, slotItems), via({ slot: 'loop.registration' }, slotRegistration)]; },\n },\n});\n"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- export{};
1
+ export {};
@@ -1 +1,5 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./src/schemas/loopLaunchers.cjs");exports.DOOM_LOOP_LAUNCHERS_SERVICE=e.DOOM_LOOP_LAUNCHERS_SERVICE,exports.readDoomLoopLaunchers=e.readDoomLoopLaunchers,exports.requireDoomLoopLaunchers=e.requireDoomLoopLaunchers;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_loopLaunchers = require("./src/schemas/loopLaunchers.cjs");
3
+ exports.DOOM_LOOP_LAUNCHERS_SERVICE = require_loopLaunchers.DOOM_LOOP_LAUNCHERS_SERVICE;
4
+ exports.readDoomLoopLaunchers = require_loopLaunchers.readDoomLoopLaunchers;
5
+ exports.requireDoomLoopLaunchers = require_loopLaunchers.requireDoomLoopLaunchers;
@@ -1 +1,2 @@
1
- import{DOOM_LOOP_LAUNCHERS_SERVICE as e,readDoomLoopLaunchers as t,requireDoomLoopLaunchers as n}from"./src/schemas/loopLaunchers.mjs";export{e as DOOM_LOOP_LAUNCHERS_SERVICE,t as readDoomLoopLaunchers,n as requireDoomLoopLaunchers};
1
+ import { DOOM_LOOP_LAUNCHERS_SERVICE, readDoomLoopLaunchers, requireDoomLoopLaunchers } from "./src/schemas/loopLaunchers.mjs";
2
+ export { DOOM_LOOP_LAUNCHERS_SERVICE, readDoomLoopLaunchers, requireDoomLoopLaunchers };
@@ -1,2 +1,12 @@
1
- exports.LIST_COMMAND_DESCRIPTION=`List and stop active loops`,exports.LIST_COMMAND_NAME=`loops`,exports.START_COMMAND_DESCRIPTION=`Start a registered loop`,exports.START_COMMAND_NAME=`loop`;
1
+ //#region src/constants/loop.ts
2
+ const START_COMMAND_DESCRIPTION = "Start a registered loop";
3
+ const LIST_COMMAND_DESCRIPTION = "List and stop active loops";
4
+ const START_COMMAND_NAME = "loop";
5
+ const LIST_COMMAND_NAME = "loops";
6
+ //#endregion
7
+ exports.LIST_COMMAND_DESCRIPTION = LIST_COMMAND_DESCRIPTION;
8
+ exports.LIST_COMMAND_NAME = LIST_COMMAND_NAME;
9
+ exports.START_COMMAND_DESCRIPTION = START_COMMAND_DESCRIPTION;
10
+ exports.START_COMMAND_NAME = START_COMMAND_NAME;
11
+
2
12
  //# sourceMappingURL=loop.cjs.map