@agimon-ai/doompi-loop 0.0.1-alpha.73 → 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.
- package/dist/api-contracts.cjs +7 -1
- package/dist/api-contracts.mjs +2 -1
- package/dist/extensions/pi.cjs +35 -1
- package/dist/extensions/pi.cjs.map +1 -1
- package/dist/extensions/pi.d.cts +3 -3
- package/dist/extensions/pi.d.cts.map +1 -1
- package/dist/extensions/pi.d.mts +3 -3
- package/dist/extensions/pi.d.mts.map +1 -1
- package/dist/extensions/pi.mjs +30 -1
- package/dist/extensions/pi.mjs.map +1 -1
- package/dist/extensions/server.cjs +50 -1
- package/dist/extensions/server.cjs.map +1 -1
- package/dist/extensions/server.d.cts +3 -3
- package/dist/extensions/server.d.cts.map +1 -1
- package/dist/extensions/server.d.mts +3 -3
- package/dist/extensions/server.d.mts.map +1 -1
- package/dist/extensions/server.mjs +45 -1
- package/dist/extensions/server.mjs.map +1 -1
- package/dist/extensions/web.mjs +228 -0
- package/dist/extensions/web.mjs.map +1 -0
- package/dist/index.mjs +1 -1
- package/dist/loopLaunchers.cjs +5 -1
- package/dist/loopLaunchers.mjs +2 -1
- package/dist/src/constants/loop.cjs +11 -1
- package/dist/src/constants/loop.cjs.map +1 -1
- package/dist/src/constants/loop.mjs +8 -1
- package/dist/src/constants/loop.mjs.map +1 -1
- package/dist/src/constants/piLoop.cjs +15 -1
- package/dist/src/constants/piLoop.cjs.map +1 -1
- package/dist/src/constants/piLoop.mjs +10 -1
- package/dist/src/constants/piLoop.mjs.map +1 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.cjs +26 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.mjs +26 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.cjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.cli.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.cli.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.server.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.cli.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.cli.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.server.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.server.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs +14 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs +15 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs +17 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs +18 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs.map +1 -0
- package/dist/src/schemas/apiContracts.cjs +12 -1
- package/dist/src/schemas/apiContracts.cjs.map +1 -1
- package/dist/src/schemas/apiContracts.mjs +12 -1
- package/dist/src/schemas/apiContracts.mjs.map +1 -1
- package/dist/src/schemas/loopLaunchers.cjs +16 -1
- package/dist/src/schemas/loopLaunchers.cjs.map +1 -1
- package/dist/src/schemas/loopLaunchers.mjs +14 -1
- package/dist/src/schemas/loopLaunchers.mjs.map +1 -1
- package/dist/src/services/defaultLoopLauncher/index.cjs +91 -1
- package/dist/src/services/defaultLoopLauncher/index.cjs.map +1 -1
- package/dist/src/services/defaultLoopLauncher/index.mjs +91 -1
- package/dist/src/services/defaultLoopLauncher/index.mjs.map +1 -1
- package/dist/src/services/loopCommand/index.cjs +15 -0
- package/dist/src/services/loopCommand/index.cjs.map +1 -0
- package/dist/src/services/loopCommand/index.mjs +15 -0
- package/dist/src/services/loopCommand/index.mjs.map +1 -0
- package/dist/src/services/loopLaunchers/index.cjs +179 -1
- package/dist/src/services/loopLaunchers/index.cjs.map +1 -1
- package/dist/src/services/loopLaunchers/index.mjs +179 -1
- package/dist/src/services/loopLaunchers/index.mjs.map +1 -1
- package/dist/src/services/serverRuntime/index.cjs +293 -0
- package/dist/src/services/serverRuntime/index.cjs.map +1 -0
- package/dist/src/services/serverRuntime/index.mjs +293 -0
- package/dist/src/services/serverRuntime/index.mjs.map +1 -0
- package/dist/src/tui/leader.cjs +35 -1
- package/dist/src/tui/leader.cjs.map +1 -1
- package/dist/src/tui/leader.mjs +35 -1
- package/dist/src/tui/leader.mjs.map +1 -1
- package/dist/src/tui/loopListOverlay.cjs +100 -1
- package/dist/src/tui/loopListOverlay.cjs.map +1 -1
- package/dist/src/tui/loopListOverlay.mjs +99 -1
- package/dist/src/tui/loopListOverlay.mjs.map +1 -1
- package/dist/src/tui/loopRuntime.cjs +255 -1
- package/dist/src/tui/loopRuntime.cjs.map +1 -1
- package/dist/src/tui/loopRuntime.mjs +255 -1
- package/dist/src/tui/loopRuntime.mjs.map +1 -1
- package/dist/src/tui/startLoopOverlay.cjs +70 -1
- package/dist/src/tui/startLoopOverlay.cjs.map +1 -1
- package/dist/src/tui/startLoopOverlay.mjs +69 -1
- package/dist/src/tui/startLoopOverlay.mjs.map +1 -1
- package/dist/src/types/loopView.cjs +18 -1
- package/dist/src/types/loopView.cjs.map +1 -1
- package/dist/src/types/loopView.mjs +17 -1
- package/dist/src/types/loopView.mjs.map +1 -1
- package/package.json +15 -14
- package/dist/_virtual/_rolldown/runtime.cjs +0 -1
- package/dist/src/controllers/loopCommand.cjs +0 -2
- package/dist/src/controllers/loopCommand.cjs.map +0 -1
- package/dist/src/controllers/loopCommand.mjs +0 -2
- package/dist/src/controllers/loopCommand.mjs.map +0 -1
- package/dist/src/controllers/serverRuntime.cjs +0 -2
- package/dist/src/controllers/serverRuntime.cjs.map +0 -1
- package/dist/src/controllers/serverRuntime.mjs +0 -2
- package/dist/src/controllers/serverRuntime.mjs.map +0 -1
- package/dist/src/services/loopResource/index.cjs +0 -2
- package/dist/src/services/loopResource/index.cjs.map +0 -1
- package/dist/src/services/loopResource/index.mjs +0 -2
- package/dist/src/services/loopResource/index.mjs.map +0 -1
- package/src/extensions/web.ts +0 -41
- package/src/web/components/LoopsActivitySection.tsx +0 -94
- package/src/web/tsconfig.json +0 -23
package/dist/api-contracts.cjs
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
Object.defineProperties(exports,{
|
|
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;
|
package/dist/api-contracts.mjs
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import{apiContracts
|
|
1
|
+
import { apiContracts } from "./src/schemas/apiContracts.mjs";
|
|
2
|
+
export { apiContracts, apiContracts as default };
|
package/dist/extensions/pi.cjs
CHANGED
|
@@ -1,2 +1,36 @@
|
|
|
1
|
-
Object.defineProperties(exports,
|
|
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","
|
|
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"}
|
package/dist/extensions/pi.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
//#region
|
|
2
|
-
export declare const
|
|
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 {
|
|
4
|
+
export { extension as default };
|
|
5
5
|
//# sourceMappingURL=pi.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi.d.cts","names":[],"sources":["../../
|
|
1
|
+
{"version":3,"file":"pi.d.cts","names":[],"sources":["../../generated/pi.ts"],"mappings":";qBAoBa,iEAAS"}
|
package/dist/extensions/pi.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
//#region
|
|
2
|
-
export declare const
|
|
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 {
|
|
4
|
+
export { extension as default };
|
|
5
5
|
//# sourceMappingURL=pi.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi.d.mts","names":[],"sources":["../../
|
|
1
|
+
{"version":3,"file":"pi.d.mts","names":[],"sources":["../../generated/pi.ts"],"mappings":";qBAoBa,iEAAS"}
|
package/dist/extensions/pi.mjs
CHANGED
|
@@ -1,2 +1,31 @@
|
|
|
1
|
-
import
|
|
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":["../../
|
|
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,
|
|
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","
|
|
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
|
|
2
|
-
export declare const
|
|
1
|
+
//#region generated/server.d.ts
|
|
2
|
+
export declare const facet: import("@agimon-ai/doompi-core/server-facet").DoomServerFacet;
|
|
3
3
|
//#endregion
|
|
4
|
-
export {
|
|
4
|
+
export { facet as default };
|
|
5
5
|
//# sourceMappingURL=server.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.cts","names":[],"sources":["../../
|
|
1
|
+
{"version":3,"file":"server.d.cts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAmBa,qDAAK"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
//#region
|
|
2
|
-
export declare const
|
|
1
|
+
//#region generated/server.d.ts
|
|
2
|
+
export declare const facet: import("@agimon-ai/doompi-core/server-facet").DoomServerFacet;
|
|
3
3
|
//#endregion
|
|
4
|
-
export {
|
|
4
|
+
export { facet as default };
|
|
5
5
|
//# sourceMappingURL=server.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.mts","names":[],"sources":["../../
|
|
1
|
+
{"version":3,"file":"server.d.mts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAmBa,qDAAK"}
|
|
@@ -1,2 +1,46 @@
|
|
|
1
|
-
import
|
|
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":["../../
|
|
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 {};
|
package/dist/loopLaunchers.cjs
CHANGED
|
@@ -1 +1,5 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value
|
|
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;
|
package/dist/loopLaunchers.mjs
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import{DOOM_LOOP_LAUNCHERS_SERVICE
|
|
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
|
-
|
|
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
|