@agimon-ai/doompi-loop 0.0.1-alpha.80 → 0.0.1-alpha.82
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/{src/schemas/apiContracts.cjs → apiContracts.cjs} +5 -1
- package/dist/apiContracts.cjs.map +1 -0
- package/dist/{src/schemas/apiContracts.d.mts.map → apiContracts.d.mts.map} +1 -1
- package/dist/{src/schemas/apiContracts.mjs → apiContracts.mjs} +1 -1
- package/dist/apiContracts.mjs.map +1 -0
- package/dist/extensions/pi.cjs +596 -13
- package/dist/extensions/pi.cjs.map +1 -1
- package/dist/extensions/pi.d.mts +1 -1
- package/dist/extensions/pi.d.mts.map +1 -1
- package/dist/extensions/pi.mjs +590 -7
- package/dist/extensions/pi.mjs.map +1 -1
- package/dist/extensions/server.cjs +326 -14
- package/dist/extensions/server.cjs.map +1 -1
- package/dist/extensions/server.d.mts +1 -1
- package/dist/extensions/server.d.mts.map +1 -1
- package/dist/extensions/server.mjs +320 -8
- package/dist/extensions/server.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/{src/schemas/loopLaunchers.cjs → loopLaunchers-BtcLH_xN.cjs} +19 -4
- package/dist/loopLaunchers-BtcLH_xN.cjs.map +1 -0
- package/dist/{src/schemas/loopLaunchers.d.cts → loopLaunchers-CPUUrDzQ.d.mts} +12 -11
- package/dist/loopLaunchers-CPUUrDzQ.d.mts.map +1 -0
- package/dist/{src/schemas/loopLaunchers.mjs → loopLaunchers-cCniFbVA.mjs} +2 -2
- package/dist/loopLaunchers-cCniFbVA.mjs.map +1 -0
- package/dist/loopLaunchers.cjs +1 -1
- package/dist/loopLaunchers.d.mts +1 -1
- package/dist/loopLaunchers.mjs +1 -1
- package/dist/{src/services/loopLaunchers/index.mjs → loopView-CLIBhqYC.cjs} +64 -2
- package/dist/loopView-CLIBhqYC.cjs.map +1 -0
- package/dist/{src/services/loopLaunchers/index.cjs → loopView-CmuIEbUa.mjs} +23 -2
- package/dist/loopView-CmuIEbUa.mjs.map +1 -0
- package/package.json +16 -15
- package/dist/api-contracts.cjs +0 -7
- package/dist/api-contracts.d.cts +0 -2
- package/dist/api-contracts.d.mts +0 -2
- package/dist/api-contracts.mjs +0 -2
- package/dist/extensions/pi.d.cts +0 -5
- package/dist/extensions/pi.d.cts.map +0 -1
- package/dist/extensions/server.d.cts +0 -5
- package/dist/extensions/server.d.cts.map +0 -1
- package/dist/index.d.cts +0 -2
- package/dist/loopLaunchers.d.cts +0 -2
- package/dist/src/constants/loop.cjs +0 -12
- package/dist/src/constants/loop.cjs.map +0 -1
- package/dist/src/constants/loop.mjs +0 -9
- package/dist/src/constants/loop.mjs.map +0 -1
- package/dist/src/constants/piLoop.cjs +0 -16
- package/dist/src/constants/piLoop.cjs.map +0 -1
- package/dist/src/constants/piLoop.mjs +0 -11
- package/dist/src/constants/piLoop.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.cjs +0 -26
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.mjs +0 -26
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.cjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.mjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.cli.cjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.cli.mjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.server.cjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.server.mjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loop.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.cli.cjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.cli.mjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.server.cjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.server.mjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/command/loops.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.cjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.mjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.server.cjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.server.mjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.cjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.mjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.cjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.mjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompi-use-loop.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs +0 -14
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs +0 -15
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs +0 -17
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs +0 -18
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs.map +0 -1
- package/dist/src/schemas/apiContracts.cjs.map +0 -1
- package/dist/src/schemas/apiContracts.d.cts +0 -53
- package/dist/src/schemas/apiContracts.d.cts.map +0 -1
- package/dist/src/schemas/apiContracts.mjs.map +0 -1
- package/dist/src/schemas/loopLaunchers.cjs.map +0 -1
- package/dist/src/schemas/loopLaunchers.d.cts.map +0 -1
- package/dist/src/schemas/loopLaunchers.d.mts +0 -60
- package/dist/src/schemas/loopLaunchers.d.mts.map +0 -1
- package/dist/src/schemas/loopLaunchers.mjs.map +0 -1
- package/dist/src/services/defaultLoopLauncher/index.cjs +0 -92
- package/dist/src/services/defaultLoopLauncher/index.cjs.map +0 -1
- package/dist/src/services/defaultLoopLauncher/index.mjs +0 -92
- package/dist/src/services/defaultLoopLauncher/index.mjs.map +0 -1
- package/dist/src/services/loopCommand/index.cjs +0 -15
- package/dist/src/services/loopCommand/index.cjs.map +0 -1
- package/dist/src/services/loopCommand/index.mjs +0 -15
- package/dist/src/services/loopCommand/index.mjs.map +0 -1
- package/dist/src/services/loopLaunchers/index.cjs.map +0 -1
- package/dist/src/services/loopLaunchers/index.mjs.map +0 -1
- package/dist/src/services/serverRuntime/index.cjs +0 -293
- package/dist/src/services/serverRuntime/index.cjs.map +0 -1
- package/dist/src/services/serverRuntime/index.mjs +0 -293
- package/dist/src/services/serverRuntime/index.mjs.map +0 -1
- package/dist/src/tui/leader.cjs +0 -36
- package/dist/src/tui/leader.cjs.map +0 -1
- package/dist/src/tui/leader.mjs +0 -36
- package/dist/src/tui/leader.mjs.map +0 -1
- package/dist/src/tui/loopListOverlay.cjs +0 -101
- package/dist/src/tui/loopListOverlay.cjs.map +0 -1
- package/dist/src/tui/loopListOverlay.mjs +0 -100
- package/dist/src/tui/loopListOverlay.mjs.map +0 -1
- package/dist/src/tui/loopRuntime.cjs +0 -256
- package/dist/src/tui/loopRuntime.cjs.map +0 -1
- package/dist/src/tui/loopRuntime.mjs +0 -256
- package/dist/src/tui/loopRuntime.mjs.map +0 -1
- package/dist/src/tui/startLoopOverlay.cjs +0 -71
- package/dist/src/tui/startLoopOverlay.cjs.map +0 -1
- package/dist/src/tui/startLoopOverlay.mjs +0 -70
- package/dist/src/tui/startLoopOverlay.mjs.map +0 -1
- package/dist/src/types/loopView.cjs +0 -19
- package/dist/src/types/loopView.cjs.map +0 -1
- package/dist/src/types/loopView.mjs +0 -18
- package/dist/src/types/loopView.mjs.map +0 -1
- /package/dist/{src/schemas/apiContracts.d.mts → apiContracts.d.mts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopView-CLIBhqYC.cjs","names":[],"sources":["../src/constants/loop.ts","../src/services/loopLaunchers/index.ts","../src/types/loopView.ts"],"sourcesContent":["export const START_COMMAND_DESCRIPTION = 'Start a registered loop';\nexport const LIST_COMMAND_DESCRIPTION = 'List and stop active loops';\nexport const START_COMMAND_NAME = 'loop';\nexport const LIST_COMMAND_NAME = 'loops';\n","import type {\n DoomLoopLaunchersService,\n LoopInstanceSnapshot,\n LoopLauncherDefinition,\n LoopLauncherRegistration,\n StoppableLoop,\n} from '../../schemas/loopLaunchers';\n\nconst MAX_ID_LENGTH = 256;\nconst MAX_GENERATION_LENGTH = 256;\nconst LAUNCHER_ID_LABEL = 'loop launcher id';\nconst INSTANCE_ID_LABEL = 'loop instance id';\n\ninterface LauncherEntry {\n readonly token: symbol;\n readonly definition: LoopLauncherDefinition;\n}\n\ninterface InstanceEntry {\n readonly instanceId: string;\n readonly launcher: LauncherEntry;\n readonly abortController: AbortController;\n state: LoopInstanceSnapshot['state'];\n handle?: StoppableLoop;\n startedAt?: string;\n}\n\nexport interface LoopLaunchersDependencies {\n readonly generation: string;\n readonly createInstanceId: () => string;\n readonly timestamp: () => string;\n}\n\nfunction validId(value: string, label: string): string {\n const normalized = value.trim();\n let hasControl = false;\n for (const character of normalized) {\n const code = character.codePointAt(0);\n if (code !== undefined && (code <= 0x1f || code === 0x7f)) {\n hasControl = true;\n break;\n }\n }\n if (!normalized || normalized.length > MAX_ID_LENGTH || hasControl) throw new Error(`Invalid ${label}.`);\n return normalized;\n}\n\nfunction snapshot(entry: InstanceEntry): LoopInstanceSnapshot {\n return {\n instanceId: entry.instanceId,\n launcherId: entry.launcher.definition.id,\n launcherLabel: entry.launcher.definition.label,\n ...(entry.handle?.label ? { label: entry.handle.label } : {}),\n ...(entry.handle?.detail ? { detail: entry.handle.detail } : {}),\n state: entry.state,\n ...(entry.startedAt ? { startedAt: entry.startedAt } : {}),\n };\n}\n\n/** Creates the provider-owned launcher registry for one active Doom session. */\nexport function createDoomLoopLaunchersService({\n generation,\n createInstanceId,\n timestamp,\n}: LoopLaunchersDependencies): DoomLoopLaunchersService {\n if (!generation || generation.length > MAX_GENERATION_LENGTH) {\n throw new TypeError('Doom loop launchers require a valid generation.');\n }\n\n const launchers = new Map<string, LauncherEntry>();\n const instances = new Map<string, InstanceEntry>();\n const listeners = new Set<() => void>();\n let registrationSequence = 0;\n let disposed = false;\n\n const ensureActive = (): void => {\n if (disposed) throw new Error('The Doom loop-launchers service is disposed.');\n };\n const notify = (): void => {\n for (const listener of listeners) listener();\n };\n const stopEntry = async (entry: InstanceEntry, reason?: string): Promise<void> => {\n if (instances.get(entry.instanceId) !== entry) return;\n entry.state = 'stopping';\n entry.abortController.abort(reason);\n notify();\n try {\n await entry.handle?.stop(reason);\n } finally {\n if (instances.get(entry.instanceId) === entry) instances.delete(entry.instanceId);\n notify();\n }\n };\n\n const service: DoomLoopLaunchersService = {\n generation,\n register(definition): LoopLauncherRegistration {\n ensureActive();\n const id = validId(definition.id, LAUNCHER_ID_LABEL);\n if (launchers.has(id)) throw new Error(`Loop launcher '${id}' is already registered.`);\n const token = Symbol(id);\n const entry: LauncherEntry = { token, definition: { ...definition, id } };\n launchers.set(id, entry);\n registrationSequence += 1;\n notify();\n let registrationDisposed = false;\n return Object.freeze({\n id,\n generation: `${generation}:launcher:${registrationSequence}`,\n async dispose(reason = 'Loop launcher disposed.'): Promise<void> {\n if (registrationDisposed) return;\n registrationDisposed = true;\n if (launchers.get(id)?.token !== token) return;\n launchers.delete(id);\n const owned = [...instances.values()].filter((instance) => instance.launcher.token === token);\n await Promise.allSettled(owned.map((instance) => stopEntry(instance, reason)));\n notify();\n },\n });\n },\n listLaunchers() {\n ensureActive();\n return [...launchers.values()]\n .map(({ definition }) => ({\n id: definition.id,\n source: definition.source,\n label: definition.label,\n ...(definition.description ? { description: definition.description } : {}),\n }))\n .sort((left, right) => left.label.localeCompare(right.label) || left.id.localeCompare(right.id));\n },\n listInstances() {\n ensureActive();\n return [...instances.values()]\n .map(snapshot)\n .sort((left, right) => left.instanceId.localeCompare(right.instanceId));\n },\n subscribe(listener) {\n ensureActive();\n listeners.add(listener);\n let subscribed = true;\n return () => {\n if (!subscribed) return;\n subscribed = false;\n listeners.delete(listener);\n };\n },\n async launch(launcherId, options) {\n ensureActive();\n const normalizedLauncherId = validId(launcherId, LAUNCHER_ID_LABEL);\n const launcher = launchers.get(normalizedLauncherId);\n if (!launcher) throw new Error(`Loop launcher '${normalizedLauncherId}' is unavailable.`);\n const instanceId = validId(options?.instanceId ?? createInstanceId(), INSTANCE_ID_LABEL);\n if (instances.has(instanceId)) throw new Error(`Loop instance '${instanceId}' already exists.`);\n const entry: InstanceEntry = { instanceId, launcher, abortController: new AbortController(), state: 'starting' };\n instances.set(instanceId, entry);\n notify();\n try {\n const handle = await launcher.definition.launch({ instanceId, signal: entry.abortController.signal });\n const active = !disposed && instances.get(instanceId) === entry && !entry.abortController.signal.aborted;\n if (!handle) {\n if (instances.get(instanceId) === entry) instances.delete(instanceId);\n notify();\n return undefined;\n }\n if (!active || handle.instanceId !== instanceId) {\n await handle.stop(active ? 'Loop launcher returned a mismatched instance id.' : 'Loop launch was cancelled.');\n if (instances.get(instanceId) === entry) instances.delete(instanceId);\n notify();\n if (active) throw new Error(`Loop launcher '${normalizedLauncherId}' returned a mismatched instance id.`);\n return undefined;\n }\n entry.handle = handle;\n entry.state = 'running';\n entry.startedAt = timestamp();\n notify();\n return snapshot(entry);\n } catch (error) {\n const cancelled = entry.abortController.signal.aborted || disposed;\n if (instances.get(instanceId) === entry) instances.delete(instanceId);\n notify();\n if (cancelled) return undefined;\n throw error;\n }\n },\n async stop(instanceId, reason) {\n ensureActive();\n const entry = instances.get(validId(instanceId, INSTANCE_ID_LABEL));\n if (!entry) return false;\n await stopEntry(entry, reason);\n return true;\n },\n async stopAll(reason) {\n if (disposed && instances.size === 0) return;\n await Promise.allSettled([...instances.values()].map((entry) => stopEntry(entry, reason)));\n },\n async dispose(reason = 'Doom loop-launchers service disposed.') {\n if (disposed) return;\n disposed = true;\n launchers.clear();\n await Promise.allSettled([...instances.values()].map((entry) => stopEntry(entry, reason)));\n listeners.clear();\n },\n };\n\n return Object.freeze(service);\n}\n","/** 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"],"mappings":"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"}
|
|
@@ -1,3 +1,9 @@
|
|
|
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
|
|
1
7
|
//#region src/services/loopLaunchers/index.ts
|
|
2
8
|
const MAX_ID_LENGTH = 256;
|
|
3
9
|
const MAX_GENERATION_LENGTH = 256;
|
|
@@ -175,6 +181,21 @@ function createDoomLoopLaunchersService({ generation, createInstanceId, timestam
|
|
|
175
181
|
});
|
|
176
182
|
}
|
|
177
183
|
//#endregion
|
|
178
|
-
|
|
184
|
+
//#region src/types/loopView.ts
|
|
185
|
+
/** The browser-only status that carries active Loop instances into the activity dock. */
|
|
186
|
+
const LOOP_VIEW_STATUS_KEY = "doom-loop-instances";
|
|
187
|
+
new RegExp(String.raw`\u001b\[[0-9;]*m`, "gu");
|
|
188
|
+
/** Projects runtime snapshots into the JSON status consumed by the web plugin. */
|
|
189
|
+
function formatLoopStatusView(instances) {
|
|
190
|
+
if (instances.length === 0) return void 0;
|
|
191
|
+
return JSON.stringify(instances.map((instance) => ({
|
|
192
|
+
instanceId: instance.instanceId,
|
|
193
|
+
label: instance.label ?? instance.launcherLabel,
|
|
194
|
+
detail: instance.detail ?? instance.instanceId,
|
|
195
|
+
state: instance.state
|
|
196
|
+
})));
|
|
197
|
+
}
|
|
198
|
+
//#endregion
|
|
199
|
+
export { LIST_COMMAND_NAME as a, LIST_COMMAND_DESCRIPTION as i, formatLoopStatusView as n, START_COMMAND_DESCRIPTION as o, createDoomLoopLaunchersService as r, START_COMMAND_NAME as s, LOOP_VIEW_STATUS_KEY as t };
|
|
179
200
|
|
|
180
|
-
//# sourceMappingURL=
|
|
201
|
+
//# sourceMappingURL=loopView-CmuIEbUa.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopView-CmuIEbUa.mjs","names":[],"sources":["../src/constants/loop.ts","../src/services/loopLaunchers/index.ts","../src/types/loopView.ts"],"sourcesContent":["export const START_COMMAND_DESCRIPTION = 'Start a registered loop';\nexport const LIST_COMMAND_DESCRIPTION = 'List and stop active loops';\nexport const START_COMMAND_NAME = 'loop';\nexport const LIST_COMMAND_NAME = 'loops';\n","import type {\n DoomLoopLaunchersService,\n LoopInstanceSnapshot,\n LoopLauncherDefinition,\n LoopLauncherRegistration,\n StoppableLoop,\n} from '../../schemas/loopLaunchers';\n\nconst MAX_ID_LENGTH = 256;\nconst MAX_GENERATION_LENGTH = 256;\nconst LAUNCHER_ID_LABEL = 'loop launcher id';\nconst INSTANCE_ID_LABEL = 'loop instance id';\n\ninterface LauncherEntry {\n readonly token: symbol;\n readonly definition: LoopLauncherDefinition;\n}\n\ninterface InstanceEntry {\n readonly instanceId: string;\n readonly launcher: LauncherEntry;\n readonly abortController: AbortController;\n state: LoopInstanceSnapshot['state'];\n handle?: StoppableLoop;\n startedAt?: string;\n}\n\nexport interface LoopLaunchersDependencies {\n readonly generation: string;\n readonly createInstanceId: () => string;\n readonly timestamp: () => string;\n}\n\nfunction validId(value: string, label: string): string {\n const normalized = value.trim();\n let hasControl = false;\n for (const character of normalized) {\n const code = character.codePointAt(0);\n if (code !== undefined && (code <= 0x1f || code === 0x7f)) {\n hasControl = true;\n break;\n }\n }\n if (!normalized || normalized.length > MAX_ID_LENGTH || hasControl) throw new Error(`Invalid ${label}.`);\n return normalized;\n}\n\nfunction snapshot(entry: InstanceEntry): LoopInstanceSnapshot {\n return {\n instanceId: entry.instanceId,\n launcherId: entry.launcher.definition.id,\n launcherLabel: entry.launcher.definition.label,\n ...(entry.handle?.label ? { label: entry.handle.label } : {}),\n ...(entry.handle?.detail ? { detail: entry.handle.detail } : {}),\n state: entry.state,\n ...(entry.startedAt ? { startedAt: entry.startedAt } : {}),\n };\n}\n\n/** Creates the provider-owned launcher registry for one active Doom session. */\nexport function createDoomLoopLaunchersService({\n generation,\n createInstanceId,\n timestamp,\n}: LoopLaunchersDependencies): DoomLoopLaunchersService {\n if (!generation || generation.length > MAX_GENERATION_LENGTH) {\n throw new TypeError('Doom loop launchers require a valid generation.');\n }\n\n const launchers = new Map<string, LauncherEntry>();\n const instances = new Map<string, InstanceEntry>();\n const listeners = new Set<() => void>();\n let registrationSequence = 0;\n let disposed = false;\n\n const ensureActive = (): void => {\n if (disposed) throw new Error('The Doom loop-launchers service is disposed.');\n };\n const notify = (): void => {\n for (const listener of listeners) listener();\n };\n const stopEntry = async (entry: InstanceEntry, reason?: string): Promise<void> => {\n if (instances.get(entry.instanceId) !== entry) return;\n entry.state = 'stopping';\n entry.abortController.abort(reason);\n notify();\n try {\n await entry.handle?.stop(reason);\n } finally {\n if (instances.get(entry.instanceId) === entry) instances.delete(entry.instanceId);\n notify();\n }\n };\n\n const service: DoomLoopLaunchersService = {\n generation,\n register(definition): LoopLauncherRegistration {\n ensureActive();\n const id = validId(definition.id, LAUNCHER_ID_LABEL);\n if (launchers.has(id)) throw new Error(`Loop launcher '${id}' is already registered.`);\n const token = Symbol(id);\n const entry: LauncherEntry = { token, definition: { ...definition, id } };\n launchers.set(id, entry);\n registrationSequence += 1;\n notify();\n let registrationDisposed = false;\n return Object.freeze({\n id,\n generation: `${generation}:launcher:${registrationSequence}`,\n async dispose(reason = 'Loop launcher disposed.'): Promise<void> {\n if (registrationDisposed) return;\n registrationDisposed = true;\n if (launchers.get(id)?.token !== token) return;\n launchers.delete(id);\n const owned = [...instances.values()].filter((instance) => instance.launcher.token === token);\n await Promise.allSettled(owned.map((instance) => stopEntry(instance, reason)));\n notify();\n },\n });\n },\n listLaunchers() {\n ensureActive();\n return [...launchers.values()]\n .map(({ definition }) => ({\n id: definition.id,\n source: definition.source,\n label: definition.label,\n ...(definition.description ? { description: definition.description } : {}),\n }))\n .sort((left, right) => left.label.localeCompare(right.label) || left.id.localeCompare(right.id));\n },\n listInstances() {\n ensureActive();\n return [...instances.values()]\n .map(snapshot)\n .sort((left, right) => left.instanceId.localeCompare(right.instanceId));\n },\n subscribe(listener) {\n ensureActive();\n listeners.add(listener);\n let subscribed = true;\n return () => {\n if (!subscribed) return;\n subscribed = false;\n listeners.delete(listener);\n };\n },\n async launch(launcherId, options) {\n ensureActive();\n const normalizedLauncherId = validId(launcherId, LAUNCHER_ID_LABEL);\n const launcher = launchers.get(normalizedLauncherId);\n if (!launcher) throw new Error(`Loop launcher '${normalizedLauncherId}' is unavailable.`);\n const instanceId = validId(options?.instanceId ?? createInstanceId(), INSTANCE_ID_LABEL);\n if (instances.has(instanceId)) throw new Error(`Loop instance '${instanceId}' already exists.`);\n const entry: InstanceEntry = { instanceId, launcher, abortController: new AbortController(), state: 'starting' };\n instances.set(instanceId, entry);\n notify();\n try {\n const handle = await launcher.definition.launch({ instanceId, signal: entry.abortController.signal });\n const active = !disposed && instances.get(instanceId) === entry && !entry.abortController.signal.aborted;\n if (!handle) {\n if (instances.get(instanceId) === entry) instances.delete(instanceId);\n notify();\n return undefined;\n }\n if (!active || handle.instanceId !== instanceId) {\n await handle.stop(active ? 'Loop launcher returned a mismatched instance id.' : 'Loop launch was cancelled.');\n if (instances.get(instanceId) === entry) instances.delete(instanceId);\n notify();\n if (active) throw new Error(`Loop launcher '${normalizedLauncherId}' returned a mismatched instance id.`);\n return undefined;\n }\n entry.handle = handle;\n entry.state = 'running';\n entry.startedAt = timestamp();\n notify();\n return snapshot(entry);\n } catch (error) {\n const cancelled = entry.abortController.signal.aborted || disposed;\n if (instances.get(instanceId) === entry) instances.delete(instanceId);\n notify();\n if (cancelled) return undefined;\n throw error;\n }\n },\n async stop(instanceId, reason) {\n ensureActive();\n const entry = instances.get(validId(instanceId, INSTANCE_ID_LABEL));\n if (!entry) return false;\n await stopEntry(entry, reason);\n return true;\n },\n async stopAll(reason) {\n if (disposed && instances.size === 0) return;\n await Promise.allSettled([...instances.values()].map((entry) => stopEntry(entry, reason)));\n },\n async dispose(reason = 'Doom loop-launchers service disposed.') {\n if (disposed) return;\n disposed = true;\n launchers.clear();\n await Promise.allSettled([...instances.values()].map((entry) => stopEntry(entry, reason)));\n listeners.clear();\n },\n };\n\n return Object.freeze(service);\n}\n","/** 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"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agimon-ai/doompi-loop",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.82",
|
|
4
4
|
"description": "Session-scoped recurring prompt scheduler and loop controls for Pi coding agents.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
],
|
|
37
37
|
"type": "module",
|
|
38
38
|
"main": "./dist/index.cjs",
|
|
39
|
+
"module": "./dist/index.mjs",
|
|
39
40
|
"types": "./dist/index.d.mts",
|
|
40
41
|
"jsnext:main": "./dist/index.mjs",
|
|
41
42
|
"exports": {
|
|
@@ -57,7 +58,7 @@
|
|
|
57
58
|
"./extensions/web": {
|
|
58
59
|
"import": "./dist/extensions/web.mjs"
|
|
59
60
|
},
|
|
60
|
-
"./
|
|
61
|
+
"./loopLaunchers": {
|
|
61
62
|
"types": "./dist/loopLaunchers.d.mts",
|
|
62
63
|
"import": "./dist/loopLaunchers.mjs",
|
|
63
64
|
"require": "./dist/loopLaunchers.cjs"
|
|
@@ -68,29 +69,29 @@
|
|
|
68
69
|
"access": "public"
|
|
69
70
|
},
|
|
70
71
|
"dependencies": {
|
|
71
|
-
"@agimon-ai/doompi-core": "0.0.1-alpha.
|
|
72
|
-
"@agimon-ai/doompi-minor-mode": "0.0.1-alpha.
|
|
73
|
-
"@agimon-ai/doompi-ui": "0.0.1-alpha.
|
|
74
|
-
"@agimon-ai/doompi-web-components": "0.0.1-alpha.
|
|
72
|
+
"@agimon-ai/doompi-core": "0.0.1-alpha.81",
|
|
73
|
+
"@agimon-ai/doompi-minor-mode": "0.0.1-alpha.81",
|
|
74
|
+
"@agimon-ai/doompi-ui": "0.0.1-alpha.81",
|
|
75
|
+
"@agimon-ai/doompi-web-components": "0.0.1-alpha.39",
|
|
75
76
|
"@deepseek-ai/cordis": "4.0.2"
|
|
76
77
|
},
|
|
77
78
|
"devDependencies": {
|
|
78
|
-
"@agimon-ai/doompi-build": "0.0.1-alpha.
|
|
79
|
-
"@earendil-works/pi-coding-agent": "0.
|
|
80
|
-
"@earendil-works/pi-tui": "0.
|
|
81
|
-
"@types/node": "26.
|
|
79
|
+
"@agimon-ai/doompi-build": "0.0.1-alpha.10",
|
|
80
|
+
"@earendil-works/pi-coding-agent": "0.87.1",
|
|
81
|
+
"@earendil-works/pi-tui": "0.87.1",
|
|
82
|
+
"@types/node": "26.6.1",
|
|
82
83
|
"@types/react": "19.3.0",
|
|
83
84
|
"@types/react-dom": "19.3.0",
|
|
84
|
-
"@vitest/coverage-v8": "5.0.
|
|
85
|
+
"@vitest/coverage-v8": "5.0.1",
|
|
85
86
|
"react": "19.3.0",
|
|
86
87
|
"react-dom": "19.3.0",
|
|
87
88
|
"tsdown": "0.23.0",
|
|
88
89
|
"typescript": "7.0.2",
|
|
89
|
-
"vitest": "5.0.
|
|
90
|
+
"vitest": "5.0.1"
|
|
90
91
|
},
|
|
91
92
|
"peerDependencies": {
|
|
92
|
-
"@earendil-works/pi-coding-agent": "0.
|
|
93
|
-
"@earendil-works/pi-tui": "0.
|
|
93
|
+
"@earendil-works/pi-coding-agent": "0.87.1",
|
|
94
|
+
"@earendil-works/pi-tui": "0.87.1"
|
|
94
95
|
},
|
|
95
96
|
"peerDependenciesMeta": {
|
|
96
97
|
"@earendil-works/pi-coding-agent": {
|
|
@@ -111,7 +112,7 @@
|
|
|
111
112
|
],
|
|
112
113
|
"contracts": {
|
|
113
114
|
"entry": "./src/exports/apiContracts.ts",
|
|
114
|
-
"dist": "./dist/
|
|
115
|
+
"dist": "./dist/apiContracts.mjs"
|
|
115
116
|
}
|
|
116
117
|
},
|
|
117
118
|
"doompiWeb": {
|
package/dist/api-contracts.cjs
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
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.d.cts
DELETED
package/dist/api-contracts.d.mts
DELETED
package/dist/api-contracts.mjs
DELETED
package/dist/extensions/pi.d.cts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pi.d.cts","names":[],"sources":["../../generated/pi.ts"],"mappings":";qBAoBa,iEAAS"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.cts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAmBa,qDAAK"}
|
package/dist/index.d.cts
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { DoomLoopLaunchersService, LoopInstanceSnapshot, LoopLaunchRequest, LoopLauncherDefinition, LoopLauncherRegistration, LoopLauncherSummary, StoppableLoop } from "./src/schemas/loopLaunchers.cjs";
|
|
2
|
-
export type { DoomLoopLaunchersService, LoopInstanceSnapshot, LoopLaunchRequest, LoopLauncherDefinition, LoopLauncherRegistration, LoopLauncherSummary, StoppableLoop };
|
package/dist/loopLaunchers.d.cts
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { DOOM_LOOP_LAUNCHERS_SERVICE, DoomLoopLaunchersService, LoopInstanceSnapshot, LoopLaunchRequest, LoopLauncherDefinition, LoopLauncherRegistration, LoopLauncherSummary, StoppableLoop, readDoomLoopLaunchers, requireDoomLoopLaunchers } from "./src/schemas/loopLaunchers.cjs";
|
|
2
|
-
export { DOOM_LOOP_LAUNCHERS_SERVICE, type DoomLoopLaunchersService, type LoopInstanceSnapshot, type LoopLaunchRequest, type LoopLauncherDefinition, type LoopLauncherRegistration, type LoopLauncherSummary, type StoppableLoop, readDoomLoopLaunchers, requireDoomLoopLaunchers };
|
|
@@ -1,12 +0,0 @@
|
|
|
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
|
-
|
|
12
|
-
//# sourceMappingURL=loop.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loop.cjs","names":[],"sources":["../../../src/constants/loop.ts"],"sourcesContent":["export const START_COMMAND_DESCRIPTION = 'Start a registered loop';\nexport const LIST_COMMAND_DESCRIPTION = 'List and stop active loops';\nexport const START_COMMAND_NAME = 'loop';\nexport const LIST_COMMAND_NAME = 'loops';\n"],"mappings":";AAAA,MAAa,4BAA4B;AACzC,MAAa,2BAA2B;AACxC,MAAa,qBAAqB;AAClC,MAAa,oBAAoB"}
|
|
@@ -1,9 +0,0 @@
|
|
|
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
|
-
export { LIST_COMMAND_DESCRIPTION, LIST_COMMAND_NAME, START_COMMAND_DESCRIPTION, START_COMMAND_NAME };
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=loop.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loop.mjs","names":[],"sources":["../../../src/constants/loop.ts"],"sourcesContent":["export const START_COMMAND_DESCRIPTION = 'Start a registered loop';\nexport const LIST_COMMAND_DESCRIPTION = 'List and stop active loops';\nexport const START_COMMAND_NAME = 'loop';\nexport const LIST_COMMAND_NAME = 'loops';\n"],"mappings":";AAAA,MAAa,4BAA4B;AACzC,MAAa,2BAA2B;AACxC,MAAa,qBAAqB;AAClC,MAAa,oBAAoB"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
//#region src/constants/piLoop.ts
|
|
2
|
-
const PACKAGE_SOURCE = "@agimon-ai/doompi-loop";
|
|
3
|
-
const STATUS_KEY = "doom-loop";
|
|
4
|
-
const MODE_STATUS_ID = "loop.active";
|
|
5
|
-
const ACTIVE_MODE_COLOR = "warning";
|
|
6
|
-
const NOTIFY_INFO_LEVEL = "info";
|
|
7
|
-
const NOTIFY_WARNING_LEVEL = "warning";
|
|
8
|
-
//#endregion
|
|
9
|
-
exports.ACTIVE_MODE_COLOR = ACTIVE_MODE_COLOR;
|
|
10
|
-
exports.MODE_STATUS_ID = MODE_STATUS_ID;
|
|
11
|
-
exports.NOTIFY_INFO_LEVEL = NOTIFY_INFO_LEVEL;
|
|
12
|
-
exports.NOTIFY_WARNING_LEVEL = NOTIFY_WARNING_LEVEL;
|
|
13
|
-
exports.PACKAGE_SOURCE = PACKAGE_SOURCE;
|
|
14
|
-
exports.STATUS_KEY = STATUS_KEY;
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=piLoop.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"piLoop.cjs","names":[],"sources":["../../../src/constants/piLoop.ts"],"sourcesContent":["export const PACKAGE_SOURCE = '@agimon-ai/doompi-loop';\nexport const LOOPS_GROUP_ORDER = 60;\nexport const STATUS_KEY = 'doom-loop';\nexport const MODE_STATUS_ID = 'loop.active';\nexport const ACTIVE_MODE_COLOR = 'warning';\nexport const NOTIFY_INFO_LEVEL = 'info';\nexport const NOTIFY_WARNING_LEVEL = 'warning';\n"],"mappings":";AAAA,MAAa,iBAAiB;AAE9B,MAAa,aAAa;AAC1B,MAAa,iBAAiB;AAC9B,MAAa,oBAAoB;AACjC,MAAa,oBAAoB;AACjC,MAAa,uBAAuB"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
//#region src/constants/piLoop.ts
|
|
2
|
-
const PACKAGE_SOURCE = "@agimon-ai/doompi-loop";
|
|
3
|
-
const STATUS_KEY = "doom-loop";
|
|
4
|
-
const MODE_STATUS_ID = "loop.active";
|
|
5
|
-
const ACTIVE_MODE_COLOR = "warning";
|
|
6
|
-
const NOTIFY_INFO_LEVEL = "info";
|
|
7
|
-
const NOTIFY_WARNING_LEVEL = "warning";
|
|
8
|
-
//#endregion
|
|
9
|
-
export { ACTIVE_MODE_COLOR, MODE_STATUS_ID, NOTIFY_INFO_LEVEL, NOTIFY_WARNING_LEVEL, PACKAGE_SOURCE, STATUS_KEY };
|
|
10
|
-
|
|
11
|
-
//# sourceMappingURL=piLoop.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"piLoop.mjs","names":[],"sources":["../../../src/constants/piLoop.ts"],"sourcesContent":["export const PACKAGE_SOURCE = '@agimon-ai/doompi-loop';\nexport const LOOPS_GROUP_ORDER = 60;\nexport const STATUS_KEY = 'doom-loop';\nexport const MODE_STATUS_ID = 'loop.active';\nexport const ACTIVE_MODE_COLOR = 'warning';\nexport const NOTIFY_INFO_LEVEL = 'info';\nexport const NOTIFY_WARNING_LEVEL = 'warning';\n"],"mappings":";AAAA,MAAa,iBAAiB;AAE9B,MAAa,aAAa;AAC1B,MAAa,iBAAiB;AAC9B,MAAa,oBAAoB;AACjC,MAAa,oBAAoB;AACjC,MAAa,uBAAuB"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const require_piLoop = require("../../../../../constants/piLoop.cjs");
|
|
2
|
-
const require_index = require("../../../../../services/loopCommand/index.cjs");
|
|
3
|
-
const require_loopRuntime = require("../../../../../tui/loopRuntime.cjs");
|
|
4
|
-
let _agimon_ai_doompi_minor_mode = require("@agimon-ai/doompi-minor-mode");
|
|
5
|
-
//#region src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.ts
|
|
6
|
-
var runtime_cli_default = (({ pi }) => {
|
|
7
|
-
const runtime = require_loopRuntime.createLoopPiRuntime(pi);
|
|
8
|
-
return {
|
|
9
|
-
services: [...runtime.services ?? [], (0, _agimon_ai_doompi_minor_mode.piMinorModes)(runtime.minorModes)],
|
|
10
|
-
events: { agent_settled: runtime.onAgentSettled },
|
|
11
|
-
commands: require_index.createLoopCommands(runtime.handlers),
|
|
12
|
-
onDispose: () => runtime.onDispose(),
|
|
13
|
-
resources: [{
|
|
14
|
-
source: require_piLoop.PACKAGE_SOURCE,
|
|
15
|
-
moduleUrl: require("url").pathToFileURL(__filename).href,
|
|
16
|
-
skills: [{
|
|
17
|
-
name: "doompi-use-loop",
|
|
18
|
-
description: "Use Doom Pi Loop to start, inspect, and stop session-scoped recurring prompts safely."
|
|
19
|
-
}]
|
|
20
|
-
}]
|
|
21
|
-
};
|
|
22
|
-
});
|
|
23
|
-
//#endregion
|
|
24
|
-
exports.default = runtime_cli_default;
|
|
25
|
-
|
|
26
|
-
//# sourceMappingURL=runtime.cli.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.cli.cjs","names":["createLoopPiRuntime","piMinorModes","createLoopCommands","PACKAGE_SOURCE"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.ts"],"sourcesContent":["import type { PiPluginContext, PiPluginContributions } 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 '../../../../../services/loopCommand';\nimport { createLoopPiRuntime } from '../../../../../tui/loopRuntime';\n\nexport default (({ 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}) satisfies (context: PiPluginContext<undefined>) => PiPluginContributions<undefined>;\n"],"mappings":";;;;;AAOA,IAAA,wBAAiB,EAAE,SAAS;CAC1B,MAAM,UAAUA,oBAAAA,oBAAoB,EAAE;CACtC,OAAO;EACL,UAAU,CAAC,GAAI,QAAQ,YAAY,CAAC,IAAA,GAAIC,6BAAAA,aAAAA,CAAa,QAAQ,UAAU,CAAC;EACxE,QAAQ,EAAE,eAAe,QAAQ,eAAe;EAChD,UAAUC,cAAAA,mBAAmB,QAAQ,QAAQ;EAE7C,iBAAiB,QAAQ,UAAU;EACnC,WAAW,CACT;GACE,QAAQC,eAAAA;GACR,WAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA;GACA,QAAQ,CACN;IACE,MAAM;IACN,aAAa;GACf,CACF;EACF,CACF;CACF;AACF"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { PACKAGE_SOURCE } from "../../../../../constants/piLoop.mjs";
|
|
2
|
-
import { createLoopCommands } from "../../../../../services/loopCommand/index.mjs";
|
|
3
|
-
import { createLoopPiRuntime } from "../../../../../tui/loopRuntime.mjs";
|
|
4
|
-
import { piMinorModes } from "@agimon-ai/doompi-minor-mode";
|
|
5
|
-
//#region src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.ts
|
|
6
|
-
var runtime_cli_default = (({ pi }) => {
|
|
7
|
-
const runtime = createLoopPiRuntime(pi);
|
|
8
|
-
return {
|
|
9
|
-
services: [...runtime.services ?? [], piMinorModes(runtime.minorModes)],
|
|
10
|
-
events: { agent_settled: runtime.onAgentSettled },
|
|
11
|
-
commands: createLoopCommands(runtime.handlers),
|
|
12
|
-
onDispose: () => runtime.onDispose(),
|
|
13
|
-
resources: [{
|
|
14
|
-
source: PACKAGE_SOURCE,
|
|
15
|
-
moduleUrl: import.meta.url,
|
|
16
|
-
skills: [{
|
|
17
|
-
name: "doompi-use-loop",
|
|
18
|
-
description: "Use Doom Pi Loop to start, inspect, and stop session-scoped recurring prompts safely."
|
|
19
|
-
}]
|
|
20
|
-
}]
|
|
21
|
-
};
|
|
22
|
-
});
|
|
23
|
-
//#endregion
|
|
24
|
-
export { runtime_cli_default as default };
|
|
25
|
-
|
|
26
|
-
//# sourceMappingURL=runtime.cli.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.cli.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/runtime.cli.ts"],"sourcesContent":["import type { PiPluginContext, PiPluginContributions } 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 '../../../../../services/loopCommand';\nimport { createLoopPiRuntime } from '../../../../../tui/loopRuntime';\n\nexport default (({ 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}) satisfies (context: PiPluginContext<undefined>) => PiPluginContributions<undefined>;\n"],"mappings":";;;;;AAOA,IAAA,wBAAiB,EAAE,SAAS;CAC1B,MAAM,UAAU,oBAAoB,EAAE;CACtC,OAAO;EACL,UAAU,CAAC,GAAI,QAAQ,YAAY,CAAC,GAAI,aAAa,QAAQ,UAAU,CAAC;EACxE,QAAQ,EAAE,eAAe,QAAQ,eAAe;EAChD,UAAU,mBAAmB,QAAQ,QAAQ;EAE7C,iBAAiB,QAAQ,UAAU;EACnC,WAAW,CACT;GACE,QAAQ;GACR,WAAW,YAAY;GACvB,QAAQ,CACN;IACE,MAAM;IACN,aAAa;GACf,CACF;EACF,CACF;CACF;AACF"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
const require_index = require("../../../../../services/serverRuntime/index.cjs");
|
|
2
|
-
//#region src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.ts
|
|
3
|
-
var runtime_server_default = (({ agent }) => agent ? require_index.createSessionState(agent) : {});
|
|
4
|
-
//#endregion
|
|
5
|
-
exports.default = runtime_server_default;
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=runtime.server.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.server.cjs","names":["createSessionState"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.ts"],"sourcesContent":["import type { DoomServerPluginDefinition, DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nimport { createSessionState } from '../../../../../services/serverRuntime';\n\nexport default (({ agent }): Partial<DoomServerSessionPlugin> =>\n agent ? createSessionState(agent) : {}) satisfies NonNullable<DoomServerPluginDefinition['session']>;\n"],"mappings":";;AAIA,IAAA,2BAAiB,EAAE,YACjB,QAAQA,cAAAA,mBAAmB,KAAK,IAAI,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { createSessionState } from "../../../../../services/serverRuntime/index.mjs";
|
|
2
|
-
//#region src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.ts
|
|
3
|
-
var runtime_server_default = (({ agent }) => agent ? createSessionState(agent) : {});
|
|
4
|
-
//#endregion
|
|
5
|
-
export { runtime_server_default as default };
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=runtime.server.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.server.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/runtime.server.ts"],"sourcesContent":["import type { DoomServerPluginDefinition, DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nimport { createSessionState } from '../../../../../services/serverRuntime';\n\nexport default (({ agent }): Partial<DoomServerSessionPlugin> =>\n agent ? createSessionState(agent) : {}) satisfies NonNullable<DoomServerPluginDefinition['session']>;\n"],"mappings":";;AAIA,IAAA,2BAAiB,EAAE,YACjB,QAAQ,mBAAmB,KAAK,IAAI,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/extensions/workspaces/sessions/(backend)/command/loop.cli.ts
|
|
2
|
-
var loop_cli_default = (0, require("@agimon-ai/doompi-core/extension-file").defineCliCommand)((context) => context.root.commands[0]);
|
|
3
|
-
//#endregion
|
|
4
|
-
exports.default = loop_cli_default;
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=loop.cli.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loop.cli.cjs","names":["defineCliCommand"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/command/loop.cli.ts"],"sourcesContent":["import { defineCliCommand, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { PiPluginContext, PiPluginContributions } from '@agimon-ai/doompi-core/pi-extension';\n\nexport default defineCliCommand(\n (context: WithRoot<PiPluginContext<undefined>, PiPluginContributions<undefined>>) => context.root.commands![0]!,\n);\n"],"mappings":";AAGA,IAAA,oBAAA,kDAAeA,CAAAA,CAAAA,iBAAAA,EACZ,YAAoF,QAAQ,KAAK,SAAU,EAC9G"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { defineCliCommand } from "@agimon-ai/doompi-core/extension-file";
|
|
2
|
-
//#region src/extensions/workspaces/sessions/(backend)/command/loop.cli.ts
|
|
3
|
-
var loop_cli_default = defineCliCommand((context) => context.root.commands[0]);
|
|
4
|
-
//#endregion
|
|
5
|
-
export { loop_cli_default as default };
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=loop.cli.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loop.cli.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/command/loop.cli.ts"],"sourcesContent":["import { defineCliCommand, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { PiPluginContext, PiPluginContributions } from '@agimon-ai/doompi-core/pi-extension';\n\nexport default defineCliCommand(\n (context: WithRoot<PiPluginContext<undefined>, PiPluginContributions<undefined>>) => context.root.commands![0]!,\n);\n"],"mappings":";;AAGA,IAAA,mBAAe,kBACZ,YAAoF,QAAQ,KAAK,SAAU,EAC9G"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/extensions/workspaces/sessions/(backend)/command/loop.server.ts
|
|
2
|
-
var loop_server_default = (0, require("@agimon-ai/doompi-core/extension-file").defineRoutedContribution)((context) => context.root.commands?.[0], { cardinality: "optional" });
|
|
3
|
-
//#endregion
|
|
4
|
-
exports.default = loop_server_default;
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=loop.server.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loop.server.cjs","names":["defineRoutedContribution"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/command/loop.server.ts"],"sourcesContent":["import { defineRoutedContribution, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { DoomServerPluginContext, DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nexport default defineRoutedContribution(\n (context: WithRoot<DoomServerPluginContext, Partial<DoomServerSessionPlugin>>) => context.root.commands?.[0],\n { cardinality: 'optional' },\n);\n"],"mappings":";AAGA,IAAA,uBAAA,kDAAeA,CAAAA,CAAAA,yBAAAA,EACZ,YAAiF,QAAQ,KAAK,WAAW,IAC1G,EAAE,aAAa,WAAW,CAC5B"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { defineRoutedContribution } from "@agimon-ai/doompi-core/extension-file";
|
|
2
|
-
//#region src/extensions/workspaces/sessions/(backend)/command/loop.server.ts
|
|
3
|
-
var loop_server_default = defineRoutedContribution((context) => context.root.commands?.[0], { cardinality: "optional" });
|
|
4
|
-
//#endregion
|
|
5
|
-
export { loop_server_default as default };
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=loop.server.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loop.server.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/command/loop.server.ts"],"sourcesContent":["import { defineRoutedContribution, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { DoomServerPluginContext, DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nexport default defineRoutedContribution(\n (context: WithRoot<DoomServerPluginContext, Partial<DoomServerSessionPlugin>>) => context.root.commands?.[0],\n { cardinality: 'optional' },\n);\n"],"mappings":";;AAGA,IAAA,sBAAe,0BACZ,YAAiF,QAAQ,KAAK,WAAW,IAC1G,EAAE,aAAa,WAAW,CAC5B"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/extensions/workspaces/sessions/(backend)/command/loops.cli.ts
|
|
2
|
-
var loops_cli_default = (0, require("@agimon-ai/doompi-core/extension-file").defineCliCommand)((context) => context.root.commands[1]);
|
|
3
|
-
//#endregion
|
|
4
|
-
exports.default = loops_cli_default;
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=loops.cli.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loops.cli.cjs","names":["defineCliCommand"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/command/loops.cli.ts"],"sourcesContent":["import { defineCliCommand, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { PiPluginContext, PiPluginContributions } from '@agimon-ai/doompi-core/pi-extension';\n\nexport default defineCliCommand(\n (context: WithRoot<PiPluginContext<undefined>, PiPluginContributions<undefined>>) => context.root.commands![1]!,\n);\n"],"mappings":";AAGA,IAAA,qBAAA,kDAAeA,CAAAA,CAAAA,iBAAAA,EACZ,YAAoF,QAAQ,KAAK,SAAU,EAC9G"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { defineCliCommand } from "@agimon-ai/doompi-core/extension-file";
|
|
2
|
-
//#region src/extensions/workspaces/sessions/(backend)/command/loops.cli.ts
|
|
3
|
-
var loops_cli_default = defineCliCommand((context) => context.root.commands[1]);
|
|
4
|
-
//#endregion
|
|
5
|
-
export { loops_cli_default as default };
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=loops.cli.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loops.cli.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/command/loops.cli.ts"],"sourcesContent":["import { defineCliCommand, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { PiPluginContext, PiPluginContributions } from '@agimon-ai/doompi-core/pi-extension';\n\nexport default defineCliCommand(\n (context: WithRoot<PiPluginContext<undefined>, PiPluginContributions<undefined>>) => context.root.commands![1]!,\n);\n"],"mappings":";;AAGA,IAAA,oBAAe,kBACZ,YAAoF,QAAQ,KAAK,SAAU,EAC9G"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/extensions/workspaces/sessions/(backend)/command/loops.server.ts
|
|
2
|
-
var loops_server_default = (0, require("@agimon-ai/doompi-core/extension-file").defineRoutedContribution)((context) => context.root.commands?.[1], { cardinality: "optional" });
|
|
3
|
-
//#endregion
|
|
4
|
-
exports.default = loops_server_default;
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=loops.server.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loops.server.cjs","names":["defineRoutedContribution"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/command/loops.server.ts"],"sourcesContent":["import { defineRoutedContribution, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { DoomServerPluginContext, DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nexport default defineRoutedContribution(\n (context: WithRoot<DoomServerPluginContext, Partial<DoomServerSessionPlugin>>) => context.root.commands?.[1],\n { cardinality: 'optional' },\n);\n"],"mappings":";AAGA,IAAA,wBAAA,kDAAeA,CAAAA,CAAAA,yBAAAA,EACZ,YAAiF,QAAQ,KAAK,WAAW,IAC1G,EAAE,aAAa,WAAW,CAC5B"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { defineRoutedContribution } from "@agimon-ai/doompi-core/extension-file";
|
|
2
|
-
//#region src/extensions/workspaces/sessions/(backend)/command/loops.server.ts
|
|
3
|
-
var loops_server_default = defineRoutedContribution((context) => context.root.commands?.[1], { cardinality: "optional" });
|
|
4
|
-
//#endregion
|
|
5
|
-
export { loops_server_default as default };
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=loops.server.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loops.server.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/command/loops.server.ts"],"sourcesContent":["import { defineRoutedContribution, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { DoomServerPluginContext, DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nexport default defineRoutedContribution(\n (context: WithRoot<DoomServerPluginContext, Partial<DoomServerSessionPlugin>>) => context.root.commands?.[1],\n { cardinality: 'optional' },\n);\n"],"mappings":";;AAGA,IAAA,uBAAe,0BACZ,YAAiF,QAAQ,KAAK,WAAW,IAC1G,EAAE,aAAa,WAAW,CAC5B"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.ts
|
|
2
|
-
var agent_settled_cli_default = (0, require("@agimon-ai/doompi-core/extension-file").defineCliHook)((context) => context.root.events["agent_settled"]);
|
|
3
|
-
//#endregion
|
|
4
|
-
exports.default = agent_settled_cli_default;
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=agent-settled.cli.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-settled.cli.cjs","names":["defineCliHook"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.ts"],"sourcesContent":["import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { PiPluginContext, PiPluginContributions } from '@agimon-ai/doompi-core/pi-extension';\n\nexport default defineCliHook(\n (context: WithRoot<PiPluginContext<undefined>, PiPluginContributions<undefined>>) =>\n context.root.events!['agent_settled']!,\n);\n"],"mappings":";AAGA,IAAA,6BAAA,kDAAeA,CAAAA,CAAAA,cAAAA,EACZ,YACC,QAAQ,KAAK,OAAQ,gBACzB"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { defineCliHook } from "@agimon-ai/doompi-core/extension-file";
|
|
2
|
-
//#region src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.ts
|
|
3
|
-
var agent_settled_cli_default = defineCliHook((context) => context.root.events["agent_settled"]);
|
|
4
|
-
//#endregion
|
|
5
|
-
export { agent_settled_cli_default as default };
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=agent-settled.cli.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-settled.cli.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/hook/agent-settled.cli.ts"],"sourcesContent":["import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { PiPluginContext, PiPluginContributions } from '@agimon-ai/doompi-core/pi-extension';\n\nexport default defineCliHook(\n (context: WithRoot<PiPluginContext<undefined>, PiPluginContributions<undefined>>) =>\n context.root.events!['agent_settled']!,\n);\n"],"mappings":";;AAGA,IAAA,4BAAe,eACZ,YACC,QAAQ,KAAK,OAAQ,gBACzB"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.ts
|
|
2
|
-
var session_shutdown_server_default = (0, require("@agimon-ai/doompi-core/extension-file").defineRoutedContribution)((context) => context.root.hooks?.find((hook) => hook.event === "session_shutdown"), { cardinality: "optional" });
|
|
3
|
-
//#endregion
|
|
4
|
-
exports.default = session_shutdown_server_default;
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=session-shutdown.server.cjs.map
|
package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-shutdown.server.cjs","names":["defineRoutedContribution"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.ts"],"sourcesContent":["import { defineRoutedContribution, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { DoomServerPluginContext, DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nexport default defineRoutedContribution(\n (context: WithRoot<DoomServerPluginContext, Partial<DoomServerSessionPlugin>>) =>\n context.root.hooks?.find((hook) => hook.event === 'session_shutdown'),\n { cardinality: 'optional' },\n);\n"],"mappings":";AAGA,IAAA,mCAAA,kDAAeA,CAAAA,CAAAA,yBAAAA,EACZ,YACC,QAAQ,KAAK,OAAO,MAAM,SAAS,KAAK,UAAU,kBAAkB,GACtE,EAAE,aAAa,WAAW,CAC5B"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { defineRoutedContribution } from "@agimon-ai/doompi-core/extension-file";
|
|
2
|
-
//#region src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.ts
|
|
3
|
-
var session_shutdown_server_default = defineRoutedContribution((context) => context.root.hooks?.find((hook) => hook.event === "session_shutdown"), { cardinality: "optional" });
|
|
4
|
-
//#endregion
|
|
5
|
-
export { session_shutdown_server_default as default };
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=session-shutdown.server.mjs.map
|
package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-shutdown.server.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.ts"],"sourcesContent":["import { defineRoutedContribution, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { DoomServerPluginContext, DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nexport default defineRoutedContribution(\n (context: WithRoot<DoomServerPluginContext, Partial<DoomServerSessionPlugin>>) =>\n context.root.hooks?.find((hook) => hook.event === 'session_shutdown'),\n { cardinality: 'optional' },\n);\n"],"mappings":";;AAGA,IAAA,kCAAe,0BACZ,YACC,QAAQ,KAAK,OAAO,MAAM,SAAS,KAAK,UAAU,kBAAkB,GACtE,EAAE,aAAa,WAAW,CAC5B"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/extensions/workspaces/sessions/(backend)/hook/session-start.server.ts
|
|
2
|
-
var session_start_server_default = (0, require("@agimon-ai/doompi-core/extension-file").defineRoutedContribution)((context) => context.root.hooks?.find((hook) => hook.event === "session_start"), { cardinality: "optional" });
|
|
3
|
-
//#endregion
|
|
4
|
-
exports.default = session_start_server_default;
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=session-start.server.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-start.server.cjs","names":["defineRoutedContribution"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/hook/session-start.server.ts"],"sourcesContent":["import { defineRoutedContribution, type WithRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { DoomServerPluginContext, DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nexport default defineRoutedContribution(\n (context: WithRoot<DoomServerPluginContext, Partial<DoomServerSessionPlugin>>) =>\n context.root.hooks?.find((hook) => hook.event === 'session_start'),\n { cardinality: 'optional' },\n);\n"],"mappings":";AAGA,IAAA,gCAAA,kDAAeA,CAAAA,CAAAA,yBAAAA,EACZ,YACC,QAAQ,KAAK,OAAO,MAAM,SAAS,KAAK,UAAU,eAAe,GACnE,EAAE,aAAa,WAAW,CAC5B"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { defineRoutedContribution } from "@agimon-ai/doompi-core/extension-file";
|
|
2
|
-
//#region src/extensions/workspaces/sessions/(backend)/hook/session-start.server.ts
|
|
3
|
-
var session_start_server_default = defineRoutedContribution((context) => context.root.hooks?.find((hook) => hook.event === "session_start"), { cardinality: "optional" });
|
|
4
|
-
//#endregion
|
|
5
|
-
export { session_start_server_default as default };
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=session-start.server.mjs.map
|