@agimon-ai/doompi-task 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} +6 -3
- 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} +2 -2
- package/dist/apiContracts.mjs.map +1 -0
- package/dist/commands.cjs +1 -1
- package/dist/commands.d.mts +20 -2
- package/dist/commands.d.mts.map +1 -0
- package/dist/commands.mjs +1 -1
- package/dist/{src/services/config/index.cjs → config-BPNE_wEU.cjs} +103 -18
- package/dist/config-BPNE_wEU.cjs.map +1 -0
- package/dist/{src/services/config/index.mjs → config-DmsCPDuF.mjs} +2 -2
- package/dist/config-DmsCPDuF.mjs.map +1 -0
- package/dist/config.cjs +18 -18
- package/dist/config.d.mts +1 -1
- package/dist/config.mjs +1 -1
- package/dist/{src/types/delegation.mjs → delegation-BiOy3_7g.mjs} +2 -2
- package/dist/delegation-BiOy3_7g.mjs.map +1 -0
- package/dist/{src/services/delegation/index.cjs → delegation-BtzyLnYM.cjs} +43 -14
- package/dist/delegation-BtzyLnYM.cjs.map +1 -0
- package/dist/{src/services/delegation/index.mjs → delegation-CTFGZtwp.mjs} +7 -7
- package/dist/delegation-CTFGZtwp.mjs.map +1 -0
- package/dist/delegation-LDpHP2CC.cjs +12 -0
- package/dist/delegation-LDpHP2CC.cjs.map +1 -0
- package/dist/delegation-Ot2xltLi.d.mts +6 -0
- package/dist/delegation-Ot2xltLi.d.mts.map +1 -0
- package/dist/delegationManager.cjs +10 -0
- package/dist/delegationManager.d.mts +3 -0
- package/dist/delegationManager.mjs +3 -0
- package/dist/{src/services/contextContribution/index.cjs → delegationPlatform-Cfn-Lqew.cjs} +51 -7
- package/dist/delegationPlatform-Cfn-Lqew.cjs.map +1 -0
- package/dist/{src/services/contextContribution/index.mjs → delegationPlatform-DZ4SZ8a5.mjs} +20 -2
- package/dist/delegationPlatform-DZ4SZ8a5.mjs.map +1 -0
- package/dist/extensions/mcp.cjs +7 -7
- package/dist/extensions/mcp.cjs.map +1 -1
- package/dist/extensions/mcp.d.mts +1 -1
- package/dist/extensions/mcp.d.mts.map +1 -1
- package/dist/extensions/mcp.mjs +2 -2
- package/dist/extensions/mcp.mjs.map +1 -1
- package/dist/extensions/pi.cjs +408 -21
- 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 +399 -12
- package/dist/extensions/pi.mjs.map +1 -1
- package/dist/extensions/server.cjs +339 -16
- 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 +330 -7
- package/dist/extensions/server.mjs.map +1 -1
- package/dist/{src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.cjs → format.cli-CKxfl-lR.cjs} +76 -16
- package/dist/format.cli-CKxfl-lR.cjs.map +1 -0
- package/dist/{src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.mjs → format.cli-CuTlvk8J.mjs} +4 -4
- package/dist/format.cli-CuTlvk8J.mjs.map +1 -0
- package/dist/{src/services/taskStore/index.d.cts → index-B7oVjSey.d.mts} +7 -6
- package/dist/index-B7oVjSey.d.mts.map +1 -0
- package/dist/{src/services/reconcile/index.d.cts → index-BNMm9g0K.d.mts} +8 -7
- package/dist/index-BNMm9g0K.d.mts.map +1 -0
- package/dist/{src/services/delegation/index.d.cts → index-BUmf786V.d.mts} +17 -18
- package/dist/index-BUmf786V.d.mts.map +1 -0
- package/dist/index-C3DgOhEm.d.mts +51 -0
- package/dist/index-C3DgOhEm.d.mts.map +1 -0
- package/dist/index-D4goIk4Z.d.mts +43 -0
- package/dist/index-D4goIk4Z.d.mts.map +1 -0
- package/dist/{src/services/reducer/index.d.cts → index-DIpc6_uJ.d.mts} +12 -11
- package/dist/index-DIpc6_uJ.d.mts.map +1 -0
- package/dist/index-XY9VPmfm.d.mts +26 -0
- package/dist/index-XY9VPmfm.d.mts.map +1 -0
- package/dist/index.cjs +88 -88
- package/dist/index.d.mts +15 -15
- package/dist/index.mjs +15 -15
- package/dist/{src/services/invariants/index.cjs → invariants-DhjEjBPU.cjs} +19 -4
- package/dist/invariants-DhjEjBPU.cjs.map +1 -0
- package/dist/{src/services/invariants/index.mjs → invariants-q_UamF7D.mjs} +2 -2
- package/dist/invariants-q_UamF7D.mjs.map +1 -0
- package/dist/{src/services/logSinkTelemetry/index.mjs → logSinkTelemetry-C5QjZipw.mjs} +3 -3
- package/dist/logSinkTelemetry-C5QjZipw.mjs.map +1 -0
- package/dist/{src/services/logSinkTelemetry/index.cjs → logSinkTelemetry-CqiTuh3a.cjs} +14 -5
- package/dist/logSinkTelemetry-CqiTuh3a.cjs.map +1 -0
- package/dist/logSinkTelemetry.cjs +4 -4
- package/dist/logSinkTelemetry.d.mts +23 -3
- package/dist/logSinkTelemetry.d.mts.map +1 -0
- package/dist/logSinkTelemetry.mjs +2 -2
- package/dist/{src/services/paths/index.mjs → paths-Bg8EEbk1.mjs} +4 -4
- package/dist/paths-Bg8EEbk1.mjs.map +1 -0
- package/dist/{src/services/paths/index.cjs → paths-BsFVRulr.cjs} +109 -22
- package/dist/paths-BsFVRulr.cjs.map +1 -0
- package/dist/{src/services/processLiveness/index.mjs → processLiveness-Ccd9wenT.mjs} +2 -2
- package/dist/processLiveness-Ccd9wenT.mjs.map +1 -0
- package/dist/{src/services/processLiveness/index.cjs → processLiveness-umpNgsPR.cjs} +7 -2
- package/dist/processLiveness-umpNgsPR.cjs.map +1 -0
- package/dist/{src/constants/promptGuidelines.d.cts → promptGuidelines-DaxWrqud.d.mts} +3 -2
- package/dist/promptGuidelines-DaxWrqud.d.mts.map +1 -0
- package/dist/{src/constants/promptGuidelines.mjs → promptGuidelines-g4QT8GNM.mjs} +2 -2
- package/dist/promptGuidelines-g4QT8GNM.mjs.map +1 -0
- package/dist/{src/constants/promptGuidelines.cjs → promptGuidelines-j_SZTzlH.cjs} +7 -2
- package/dist/promptGuidelines-j_SZTzlH.cjs.map +1 -0
- package/dist/{src/services/reconcile/index.mjs → reconcile-BcD-hTbd.mjs} +4 -4
- package/dist/reconcile-BcD-hTbd.mjs.map +1 -0
- package/dist/{src/services/reconcile/index.cjs → reconcile-cRL0NjDr.cjs} +22 -7
- package/dist/reconcile-cRL0NjDr.cjs.map +1 -0
- package/dist/{src/services/reducer/index.mjs → reducer-BEfJFM5L.mjs} +5 -5
- package/dist/reducer-BEfJFM5L.mjs.map +1 -0
- package/dist/{src/services/reducer/index.cjs → reducer-BV0YIZ2o.cjs} +41 -11
- package/dist/reducer-BV0YIZ2o.cjs.map +1 -0
- package/dist/root.cli-BfEKqt8s.d.mts +56 -0
- package/dist/root.cli-BfEKqt8s.d.mts.map +1 -0
- package/dist/{src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.mjs → selectors-BaS6dObz.mjs} +3 -3
- package/dist/selectors-BaS6dObz.mjs.map +1 -0
- package/dist/{src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.d.mts → selectors-DPDPPjH3.d.mts} +15 -14
- package/dist/selectors-DPDPPjH3.d.mts.map +1 -0
- package/dist/{src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.cjs → selectors-b-69vb4W.cjs} +52 -12
- package/dist/selectors-b-69vb4W.cjs.map +1 -0
- package/dist/storeInvariants.cjs +5 -0
- package/dist/{src/services/invariants/index.d.cts → storeInvariants.d.mts} +2 -2
- package/dist/storeInvariants.d.mts.map +1 -0
- package/dist/storeInvariants.mjs +2 -0
- package/dist/storePaths.cjs +14 -0
- package/dist/storePaths.d.mts +2 -0
- package/dist/storePaths.mjs +2 -0
- package/dist/storeProcessLiveness.cjs +3 -0
- package/dist/{src/services/processLiveness/index.d.mts → storeProcessLiveness.d.mts} +1 -1
- package/dist/storeProcessLiveness.d.mts.map +1 -0
- package/dist/storeProcessLiveness.mjs +2 -0
- package/dist/storeReconcile.cjs +5 -0
- package/dist/storeReconcile.d.mts +2 -0
- package/dist/storeReconcile.mjs +2 -0
- package/dist/storeReducer.cjs +8 -0
- package/dist/storeReducer.d.mts +2 -0
- package/dist/storeReducer.mjs +2 -0
- package/dist/{store-task-graph.cjs → storeTaskGraph.cjs} +1 -1
- package/dist/storeTaskGraph.d.mts +2 -0
- package/dist/storeTaskGraph.mjs +2 -0
- package/dist/storeTaskStore.cjs +3 -0
- package/dist/storeTaskStore.d.mts +2 -0
- package/dist/storeTaskStore.mjs +2 -0
- package/dist/{store-types.cjs → storeTypes.cjs} +1 -1
- package/dist/storeTypes.d.mts +2 -0
- package/dist/storeTypes.mjs +2 -0
- package/dist/{src/constants/task.mjs → task-B4aF5J9s.mjs} +2 -2
- package/dist/task-B4aF5J9s.mjs.map +1 -0
- package/dist/{src/models/task.cjs → task-CXF9VULl.cjs} +25 -5
- package/dist/task-CXF9VULl.cjs.map +1 -0
- package/dist/task-CkFjC3Fo.d.mts +5 -0
- package/dist/task-CkFjC3Fo.d.mts.map +1 -0
- package/dist/{src/schemas/task.d.cts → task-DHSvdK6E.d.mts} +19 -20
- package/dist/task-DHSvdK6E.d.mts.map +1 -0
- package/dist/{src/schemas/task.mjs → task-DKHKuems.mjs} +3 -4
- package/dist/task-DKHKuems.mjs.map +1 -0
- package/dist/task-DaagqdPK.cjs +11 -0
- package/dist/task-DaagqdPK.cjs.map +1 -0
- package/dist/{src/schemas/task.cjs → task-Dqy88_rr.cjs} +80 -17
- package/dist/task-Dqy88_rr.cjs.map +1 -0
- package/dist/{src/models/task.mjs → task-giCbpKzV.mjs} +2 -2
- package/dist/task-giCbpKzV.mjs.map +1 -0
- package/dist/{src/models/task.d.mts → task-hLh4BOO7.d.mts} +21 -20
- package/dist/task-hLh4BOO7.d.mts.map +1 -0
- package/dist/{src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.cjs → task-space.cli-BdDqn-_h.cjs} +33 -19
- package/dist/task-space.cli-BdDqn-_h.cjs.map +1 -0
- package/dist/{src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.mjs → task-space.cli-DowNll0k.mjs} +9 -9
- package/dist/task-space.cli-DowNll0k.mjs.map +1 -0
- package/dist/{src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.mjs → task.cli-BM34E7GG.mjs} +10 -10
- package/dist/task.cli-BM34E7GG.mjs.map +1 -0
- package/dist/{src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.cjs → task.cli-CiTkjUaX.cjs} +37 -23
- package/dist/task.cli-CiTkjUaX.cjs.map +1 -0
- package/dist/{src/models/taskGraph.mjs → taskGraph-BOQvT0-M.mjs} +2 -2
- package/dist/taskGraph-BOQvT0-M.mjs.map +1 -0
- package/dist/{src/models/taskGraph.cjs → taskGraph-BskRslrr.cjs} +31 -6
- package/dist/taskGraph-BskRslrr.cjs.map +1 -0
- package/dist/{src/models/taskGraph.d.mts → taskGraph-YQXCfXTn.d.mts} +8 -7
- package/dist/taskGraph-YQXCfXTn.d.mts.map +1 -0
- package/dist/{src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.cjs → taskOverlay-BKiu4cVj.cjs} +19 -9
- package/dist/taskOverlay-BKiu4cVj.cjs.map +1 -0
- package/dist/{src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.mjs → taskOverlay-DVvLdTtf.mjs} +5 -5
- package/dist/taskOverlay-DVvLdTtf.mjs.map +1 -0
- package/dist/{src/services/taskResult/index.cjs → taskResult-D2G7b4w-.cjs} +62 -12
- package/dist/taskResult-D2G7b4w-.cjs.map +1 -0
- package/dist/{src/services/taskResult/index.mjs → taskResult-edBAAKSH.mjs} +3 -3
- package/dist/taskResult-edBAAKSH.mjs.map +1 -0
- package/dist/{src/services/taskStore/index.mjs → taskStore-CFx12KJk.mjs} +8 -8
- package/dist/taskStore-CFx12KJk.mjs.map +1 -0
- package/dist/{src/services/taskStore/index.cjs → taskStore-T1pPy-UJ.cjs} +21 -17
- package/dist/{src/services/taskStore/index.mjs.map → taskStore-T1pPy-UJ.cjs.map} +1 -1
- package/dist/{src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.cjs → tasks.cli-8VvuN9YQ.cjs} +15 -5
- package/dist/tasks.cli-8VvuN9YQ.cjs.map +1 -0
- package/dist/{src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.mjs → tasks.cli-BZj83YD_.mjs} +4 -4
- package/dist/tasks.cli-BZj83YD_.mjs.map +1 -0
- package/dist/{src/types/telemetry.d.mts → telemetry-DOyZLj8E.d.mts} +8 -7
- package/dist/telemetry-DOyZLj8E.d.mts.map +1 -0
- package/dist/{src/types/telemetry.cjs → telemetry-I4md7Xzz.cjs} +7 -2
- package/dist/telemetry-I4md7Xzz.cjs.map +1 -0
- package/dist/{src/types/telemetry.mjs → telemetry-PmX_1Y8a.mjs} +2 -2
- package/dist/telemetry-PmX_1Y8a.mjs.map +1 -0
- package/dist/{tool-prompt-guidelines.cjs → toolPromptGuidelines.cjs} +1 -1
- package/dist/toolPromptGuidelines.d.mts +2 -0
- package/dist/toolPromptGuidelines.mjs +2 -0
- package/dist/toolResponseEnvelope.cjs +12 -0
- package/dist/toolResponseEnvelope.d.mts +2 -0
- package/dist/toolResponseEnvelope.mjs +2 -0
- package/dist/{tool-schema.cjs → toolSchema.cjs} +2 -2
- package/dist/toolSchema.d.mts +3 -0
- package/dist/toolSchema.mjs +3 -0
- package/dist/{tool-task-tool.cjs → toolTaskTool.cjs} +2 -2
- package/dist/toolTaskTool.d.mts +3 -0
- package/dist/toolTaskTool.mjs +3 -0
- package/dist/{tui-format.cjs → tuiFormat.cjs} +1 -1
- package/dist/{src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.d.cts → tuiFormat.d.mts} +4 -4
- package/dist/tuiFormat.d.mts.map +1 -0
- package/dist/tuiFormat.mjs +2 -0
- package/dist/{tui-selectors.cjs → tuiSelectors.cjs} +1 -1
- package/dist/tuiSelectors.d.mts +2 -0
- package/dist/tuiSelectors.mjs +2 -0
- package/dist/{tui-task-overlay.cjs → tuiTaskOverlay.cjs} +1 -1
- package/dist/{src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.d.cts → tuiTaskOverlay.d.mts} +3 -3
- package/dist/tuiTaskOverlay.d.mts.map +1 -0
- package/dist/tuiTaskOverlay.mjs +2 -0
- package/dist/{tui-task-space.cjs → tuiTaskSpace.cjs} +2 -2
- package/dist/{src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.d.mts → tuiTaskSpace.d.mts} +3 -4
- package/dist/tuiTaskSpace.d.mts.map +1 -0
- package/dist/tuiTaskSpace.mjs +2 -0
- package/package.json +95 -94
- package/dist/_virtual/_rolldown/runtime.cjs +0 -23
- 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/commands.d.cts +0 -2
- package/dist/config.d.cts +0 -2
- package/dist/delegation-manager.cjs +0 -10
- package/dist/delegation-manager.d.cts +0 -3
- package/dist/delegation-manager.d.mts +0 -3
- package/dist/delegation-manager.mjs +0 -3
- package/dist/extensions/mcp.d.cts +0 -5
- package/dist/extensions/mcp.d.cts.map +0 -1
- 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 -16
- package/dist/logSinkTelemetry.d.cts +0 -3
- package/dist/src/constants/promptGuidelines.cjs.map +0 -1
- package/dist/src/constants/promptGuidelines.d.cts.map +0 -1
- package/dist/src/constants/promptGuidelines.d.mts +0 -13
- package/dist/src/constants/promptGuidelines.d.mts.map +0 -1
- package/dist/src/constants/promptGuidelines.mjs.map +0 -1
- package/dist/src/constants/task.cjs +0 -6
- package/dist/src/constants/task.cjs.map +0 -1
- package/dist/src/constants/task.d.cts +0 -4
- package/dist/src/constants/task.d.cts.map +0 -1
- package/dist/src/constants/task.d.mts +0 -4
- package/dist/src/constants/task.d.mts.map +0 -1
- package/dist/src/constants/task.mjs.map +0 -1
- package/dist/src/extensions/(backend)/channel/_lib/task-graph.cjs +0 -90
- package/dist/src/extensions/(backend)/channel/_lib/task-graph.cjs.map +0 -1
- package/dist/src/extensions/(backend)/channel/_lib/task-graph.mjs +0 -89
- package/dist/src/extensions/(backend)/channel/_lib/task-graph.mjs.map +0 -1
- package/dist/src/extensions/(backend)/channel/task-graph.server.cjs +0 -7
- package/dist/src/extensions/(backend)/channel/task-graph.server.cjs.map +0 -1
- package/dist/src/extensions/(backend)/channel/task-graph.server.mjs +0 -8
- package/dist/src/extensions/(backend)/channel/task-graph.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.cjs +0 -317
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.d.cts +0 -39
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.d.cts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.d.mts +0 -39
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.d.mts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.mjs +0 -317
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.server.cjs +0 -95
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.server.mjs +0 -95
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/root.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.d.cts +0 -20
- package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.d.cts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.d.mts +0 -20
- package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.d.mts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.server.cjs +0 -19
- package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.server.mjs +0 -19
- package/dist/src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.cli.cjs +0 -8
- package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.cli.mjs +0 -9
- package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.server.cjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.server.mjs +0 -8
- package/dist/src/extensions/workspaces/sessions/(backend)/command/tasks.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-compact.cli.cjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-compact.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-compact.cli.mjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-compact.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-start.cli.cjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-start.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-start.cli.mjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-start.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-tree.cli.cjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-tree.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-tree.cli.mjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/session-tree.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/tool-execution-end.cli.cjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/tool-execution-end.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/tool-execution-end.cli.mjs +0 -6
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/_lib/tool-execution-end.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-compact.cli.cjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-compact.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-compact.cli.mjs +0 -8
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-compact.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.cjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.mjs +0 -8
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-tree.cli.cjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-tree.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-tree.cli.mjs +0 -8
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-tree.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.cjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.mjs +0 -8
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/tool-execution-end.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/task-board.server.cjs +0 -20
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/task-board.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/task-board.server.mjs +0 -20
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/_lib/task-board.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/task-board.server.cjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/task-board.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/task-board.server.mjs +0 -8
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/task-board.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs +0 -11
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs +0 -12
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs +0 -8
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.d.cts +0 -25
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.d.cts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.d.mts +0 -25
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.d.mts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.server.cjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.server.mjs +0 -8
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/_lib/task.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.cli.cjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.cli.mjs +0 -8
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.server.cjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.server.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.server.mjs +0 -8
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/task.server.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.d.cts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.d.mts +0 -61
- package/dist/src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.d.mts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/message/doom-task-notify.cli.cjs +0 -9
- package/dist/src/extensions/workspaces/sessions/(frontend)/message/doom-task-notify.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/message/doom-task-notify.cli.mjs +0 -9
- package/dist/src/extensions/workspaces/sessions/(frontend)/message/doom-task-notify.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.d.cts +0 -59
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.d.cts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.d.mts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/selectors.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.d.cts +0 -61
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.d.cts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.d.mts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/task-space.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.d.cts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.d.mts +0 -39
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.d.mts.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/overlay/_lib/taskOverlay.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/tool/_lib/task.cli.cjs +0 -13
- package/dist/src/extensions/workspaces/sessions/(frontend)/tool/_lib/task.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/tool/_lib/task.cli.mjs +0 -13
- package/dist/src/extensions/workspaces/sessions/(frontend)/tool/_lib/task.cli.mjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/tool/task.cli.cjs +0 -7
- package/dist/src/extensions/workspaces/sessions/(frontend)/tool/task.cli.cjs.map +0 -1
- package/dist/src/extensions/workspaces/sessions/(frontend)/tool/task.cli.mjs +0 -8
- package/dist/src/extensions/workspaces/sessions/(frontend)/tool/task.cli.mjs.map +0 -1
- package/dist/src/models/task.cjs.map +0 -1
- package/dist/src/models/task.d.cts +0 -186
- package/dist/src/models/task.d.cts.map +0 -1
- package/dist/src/models/task.d.mts.map +0 -1
- package/dist/src/models/task.mjs.map +0 -1
- package/dist/src/models/taskGraph.cjs.map +0 -1
- package/dist/src/models/taskGraph.d.cts +0 -24
- package/dist/src/models/taskGraph.d.cts.map +0 -1
- package/dist/src/models/taskGraph.d.mts.map +0 -1
- package/dist/src/models/taskGraph.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/task.cjs.map +0 -1
- package/dist/src/schemas/task.d.cts.map +0 -1
- package/dist/src/schemas/task.d.mts +0 -103
- package/dist/src/schemas/task.d.mts.map +0 -1
- package/dist/src/schemas/task.mjs.map +0 -1
- package/dist/src/services/config/index.cjs.map +0 -1
- package/dist/src/services/config/index.d.cts +0 -42
- package/dist/src/services/config/index.d.cts.map +0 -1
- package/dist/src/services/config/index.d.mts +0 -42
- package/dist/src/services/config/index.d.mts.map +0 -1
- package/dist/src/services/config/index.mjs.map +0 -1
- package/dist/src/services/contextContribution/index.cjs.map +0 -1
- package/dist/src/services/contextContribution/index.mjs.map +0 -1
- package/dist/src/services/delegation/index.cjs.map +0 -1
- package/dist/src/services/delegation/index.d.cts.map +0 -1
- package/dist/src/services/delegation/index.d.mts +0 -192
- package/dist/src/services/delegation/index.d.mts.map +0 -1
- package/dist/src/services/delegation/index.mjs.map +0 -1
- package/dist/src/services/delegationPlatform/index.cjs +0 -23
- package/dist/src/services/delegationPlatform/index.cjs.map +0 -1
- package/dist/src/services/delegationPlatform/index.mjs +0 -21
- package/dist/src/services/delegationPlatform/index.mjs.map +0 -1
- package/dist/src/services/invariants/index.cjs.map +0 -1
- package/dist/src/services/invariants/index.d.cts.map +0 -1
- package/dist/src/services/invariants/index.d.mts +0 -23
- package/dist/src/services/invariants/index.d.mts.map +0 -1
- package/dist/src/services/invariants/index.mjs.map +0 -1
- package/dist/src/services/logSinkTelemetry/index.cjs.map +0 -1
- package/dist/src/services/logSinkTelemetry/index.d.cts +0 -23
- package/dist/src/services/logSinkTelemetry/index.d.cts.map +0 -1
- package/dist/src/services/logSinkTelemetry/index.d.mts +0 -23
- package/dist/src/services/logSinkTelemetry/index.d.mts.map +0 -1
- package/dist/src/services/logSinkTelemetry/index.mjs.map +0 -1
- package/dist/src/services/paths/index.cjs.map +0 -1
- package/dist/src/services/paths/index.d.cts +0 -25
- package/dist/src/services/paths/index.d.cts.map +0 -1
- package/dist/src/services/paths/index.d.mts +0 -25
- package/dist/src/services/paths/index.d.mts.map +0 -1
- package/dist/src/services/paths/index.mjs.map +0 -1
- package/dist/src/services/processLiveness/index.cjs.map +0 -1
- package/dist/src/services/processLiveness/index.d.cts +0 -11
- package/dist/src/services/processLiveness/index.d.cts.map +0 -1
- package/dist/src/services/processLiveness/index.d.mts.map +0 -1
- package/dist/src/services/processLiveness/index.mjs.map +0 -1
- package/dist/src/services/reconcile/index.cjs.map +0 -1
- package/dist/src/services/reconcile/index.d.cts.map +0 -1
- package/dist/src/services/reconcile/index.d.mts +0 -33
- package/dist/src/services/reconcile/index.d.mts.map +0 -1
- package/dist/src/services/reconcile/index.mjs.map +0 -1
- package/dist/src/services/reducer/index.cjs.map +0 -1
- package/dist/src/services/reducer/index.d.cts.map +0 -1
- package/dist/src/services/reducer/index.d.mts +0 -71
- package/dist/src/services/reducer/index.d.mts.map +0 -1
- package/dist/src/services/reducer/index.mjs.map +0 -1
- package/dist/src/services/taskNarration/index.cjs +0 -32
- package/dist/src/services/taskNarration/index.cjs.map +0 -1
- package/dist/src/services/taskNarration/index.mjs +0 -32
- package/dist/src/services/taskNarration/index.mjs.map +0 -1
- package/dist/src/services/taskResult/index.cjs.map +0 -1
- package/dist/src/services/taskResult/index.d.cts +0 -50
- package/dist/src/services/taskResult/index.d.cts.map +0 -1
- package/dist/src/services/taskResult/index.d.mts +0 -50
- package/dist/src/services/taskResult/index.d.mts.map +0 -1
- package/dist/src/services/taskResult/index.mjs.map +0 -1
- package/dist/src/services/taskStore/index.cjs.map +0 -1
- package/dist/src/services/taskStore/index.d.cts.map +0 -1
- package/dist/src/services/taskStore/index.d.mts +0 -69
- package/dist/src/services/taskStore/index.d.mts.map +0 -1
- package/dist/src/services/taskTool/index.cjs +0 -106
- package/dist/src/services/taskTool/index.cjs.map +0 -1
- package/dist/src/services/taskTool/index.mjs +0 -105
- package/dist/src/services/taskTool/index.mjs.map +0 -1
- package/dist/src/types/delegation.cjs +0 -7
- package/dist/src/types/delegation.cjs.map +0 -1
- package/dist/src/types/delegation.d.cts +0 -5
- package/dist/src/types/delegation.d.cts.map +0 -1
- package/dist/src/types/delegation.d.mts +0 -5
- package/dist/src/types/delegation.d.mts.map +0 -1
- package/dist/src/types/delegation.mjs.map +0 -1
- package/dist/src/types/telemetry.cjs.map +0 -1
- package/dist/src/types/telemetry.d.cts +0 -35
- package/dist/src/types/telemetry.d.cts.map +0 -1
- package/dist/src/types/telemetry.d.mts.map +0 -1
- package/dist/src/types/telemetry.mjs.map +0 -1
- package/dist/src/types/webTasks.cjs +0 -7
- package/dist/src/types/webTasks.cjs.map +0 -1
- package/dist/src/types/webTasks.mjs +0 -7
- package/dist/src/types/webTasks.mjs.map +0 -1
- package/dist/store-invariants.cjs +0 -5
- package/dist/store-invariants.d.cts +0 -2
- package/dist/store-invariants.d.mts +0 -2
- package/dist/store-invariants.mjs +0 -2
- package/dist/store-paths.cjs +0 -14
- package/dist/store-paths.d.cts +0 -2
- package/dist/store-paths.d.mts +0 -2
- package/dist/store-paths.mjs +0 -2
- package/dist/store-process-liveness.cjs +0 -3
- package/dist/store-process-liveness.d.cts +0 -2
- package/dist/store-process-liveness.d.mts +0 -2
- package/dist/store-process-liveness.mjs +0 -2
- package/dist/store-reconcile.cjs +0 -5
- package/dist/store-reconcile.d.cts +0 -2
- package/dist/store-reconcile.d.mts +0 -2
- package/dist/store-reconcile.mjs +0 -2
- package/dist/store-reducer.cjs +0 -8
- package/dist/store-reducer.d.cts +0 -2
- package/dist/store-reducer.d.mts +0 -2
- package/dist/store-reducer.mjs +0 -2
- package/dist/store-task-graph.d.cts +0 -2
- package/dist/store-task-graph.d.mts +0 -2
- package/dist/store-task-graph.mjs +0 -2
- package/dist/store-task-store.cjs +0 -3
- package/dist/store-task-store.d.cts +0 -2
- package/dist/store-task-store.d.mts +0 -2
- package/dist/store-task-store.mjs +0 -2
- package/dist/store-types.d.cts +0 -2
- package/dist/store-types.d.mts +0 -2
- package/dist/store-types.mjs +0 -2
- package/dist/tool-prompt-guidelines.d.cts +0 -2
- package/dist/tool-prompt-guidelines.d.mts +0 -2
- package/dist/tool-prompt-guidelines.mjs +0 -2
- package/dist/tool-response-envelope.cjs +0 -12
- package/dist/tool-response-envelope.d.cts +0 -2
- package/dist/tool-response-envelope.d.mts +0 -2
- package/dist/tool-response-envelope.mjs +0 -2
- package/dist/tool-schema.d.cts +0 -3
- package/dist/tool-schema.d.mts +0 -3
- package/dist/tool-schema.mjs +0 -3
- package/dist/tool-task-tool.d.cts +0 -3
- package/dist/tool-task-tool.d.mts +0 -3
- package/dist/tool-task-tool.mjs +0 -3
- package/dist/tui-format.d.cts +0 -2
- package/dist/tui-format.d.mts +0 -2
- package/dist/tui-format.mjs +0 -2
- package/dist/tui-selectors.d.cts +0 -2
- package/dist/tui-selectors.d.mts +0 -2
- package/dist/tui-selectors.mjs +0 -2
- package/dist/tui-task-overlay.d.cts +0 -2
- package/dist/tui-task-overlay.d.mts +0 -2
- package/dist/tui-task-overlay.mjs +0 -2
- package/dist/tui-task-space.d.cts +0 -2
- package/dist/tui-task-space.d.mts +0 -2
- package/dist/tui-task-space.mjs +0 -2
- /package/dist/{src/schemas/apiContracts.d.mts → apiContracts.d.mts} +0 -0
|
@@ -1,10 +1,333 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { t as COMMAND_NAME } from "../task-B4aF5J9s.mjs";
|
|
2
|
+
import { f as TaskParamsSchema } from "../task-DKHKuems.mjs";
|
|
3
|
+
import { f as getDelegationTimeoutMs, h as getStoreTtlMs, p as getMaxTasks } from "../config-DmsCPDuF.mjs";
|
|
4
|
+
import { n as DelegationManager } from "../delegation-CTFGZtwp.mjs";
|
|
5
|
+
import { a as buildAssignmentResult, c as formatAssignmentResults, o as buildTextResult, s as buildToolResult } from "../taskResult-edBAAKSH.mjs";
|
|
6
|
+
import { a as isCommittingOp, r as applyTaskMutation } from "../reducer-BEfJFM5L.mjs";
|
|
7
|
+
import { a as removeLegacyStoreDirectoryAsync, c as resolveSessionKey, d as sweepStoreFilesAsync, l as resolveStorePath } from "../paths-Bg8EEbk1.mjs";
|
|
8
|
+
import { t as TaskStore } from "../taskStore-CFx12KJk.mjs";
|
|
9
|
+
import { a as formatTaskSnapshots, r as activeTaskSnapshots, t as createNodeDelegationPlatform } from "../delegationPlatform-DZ4SZ8a5.mjs";
|
|
10
|
+
import { DOOM_DELEGATION_SERVICE, readDoomDelegationService } from "@agimon-ai/doompi-core/delegation";
|
|
11
|
+
import { composeRootHooks, defineChannel, defineResource, defineRoot, defineServerCommand, defineServerTool } from "@agimon-ai/doompi-core/extensionFile";
|
|
12
|
+
import { defineServerPlugin } from "@agimon-ai/doompi-core/serverFacet";
|
|
13
|
+
import { Check } from "typebox/value";
|
|
14
|
+
//#region src/types/webTasks.ts
|
|
15
|
+
/** Browser-safe task view published by the cockpit hub channel. */
|
|
16
|
+
const TASKS_CHANNEL_TYPE = "task_graph";
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/extensions/workspaces/sessions/(backend)/_lib/root.server.ts
|
|
19
|
+
const SOURCE = "@agimon-ai/doompi-task";
|
|
20
|
+
/** The notification body: one line, since `client.notify` collapses the rest anyway. */
|
|
21
|
+
function headlineOf(content) {
|
|
22
|
+
return content.split("\n").find((line) => line.trim().length > 0) ?? content;
|
|
23
|
+
}
|
|
24
|
+
const root = defineRoot(({ host: serverHost, agent: host }) => {
|
|
25
|
+
if (!host) throw new Error("Task session requires the headless host.");
|
|
26
|
+
const execution = host.context;
|
|
27
|
+
if (serverHost.context.directEvents === void 0) throw new Error("Task headless facet requires the session direct event bus.");
|
|
28
|
+
const directEvents = serverHost.context.directEvents;
|
|
29
|
+
const maxTasks = getMaxTasks(execution.environment);
|
|
30
|
+
const store = new TaskStore({
|
|
31
|
+
env: execution.environment,
|
|
32
|
+
onCommitted: (_previous, committed) => {
|
|
33
|
+
execution.client.setStatus(SOURCE, `tasks: ${committed.tasks.length}`);
|
|
34
|
+
directEvents.publish(TASKS_CHANNEL_TYPE, execution.sessionId, committed);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
store.configureSession(resolveSessionKey(execution.sessionId, execution.environment));
|
|
38
|
+
let notifications = Promise.resolve();
|
|
39
|
+
const manager = new DelegationManager({
|
|
40
|
+
store,
|
|
41
|
+
cwd: execution.cwd,
|
|
42
|
+
platform: createNodeDelegationPlatform(execution.environment),
|
|
43
|
+
getSessionId: () => execution.sessionId,
|
|
44
|
+
notify: (message, options) => {
|
|
45
|
+
notifications = notifications.then(async () => {
|
|
46
|
+
await execution.client.notify({
|
|
47
|
+
body: headlineOf(message.content),
|
|
48
|
+
level: "info"
|
|
49
|
+
});
|
|
50
|
+
await execution.session.appendCustomEntry(message.customType, { content: message.content });
|
|
51
|
+
if (options?.triggerTurn === false) return;
|
|
52
|
+
if (!execution.session.admitPrompt) throw new Error("The session cannot admit a task notification.");
|
|
53
|
+
await execution.session.admitPrompt(message.content, "steer");
|
|
54
|
+
}).catch((error) => {
|
|
55
|
+
execution.client.notify({
|
|
56
|
+
body: String(error),
|
|
57
|
+
level: "warning"
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
onChange: () => execution.client.setStatus(SOURCE, `tasks: ${store.snapshot.tasks.length}`),
|
|
62
|
+
runTimeoutMs: getDelegationTimeoutMs(execution.environment),
|
|
63
|
+
onNotifyError: (error) => void execution.client.notify({
|
|
64
|
+
body: String(error),
|
|
65
|
+
level: "warning"
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
return {
|
|
69
|
+
value: {
|
|
70
|
+
store,
|
|
71
|
+
manager,
|
|
72
|
+
maxTasks
|
|
73
|
+
},
|
|
74
|
+
services: [(serviceContextOwner) => {
|
|
75
|
+
serviceContextOwner.inject([DOOM_DELEGATION_SERVICE], (serviceContext) => {
|
|
76
|
+
const service = readDoomDelegationService(serviceContext);
|
|
77
|
+
if (service) manager.bind(serviceContext, service);
|
|
78
|
+
});
|
|
79
|
+
}],
|
|
80
|
+
activities: [{
|
|
81
|
+
name: SOURCE,
|
|
82
|
+
async start(activityContext) {
|
|
83
|
+
store.configureSession(resolveSessionKey(activityContext.sessionId, activityContext.environment));
|
|
84
|
+
await removeLegacyStoreDirectoryAsync(store.storePath, activityContext.cwd);
|
|
85
|
+
if (!activityContext.environment.DOOM_TASK_STORE_PATH) await sweepStoreFilesAsync(store.storePath, getStoreTtlMs(activityContext.environment));
|
|
86
|
+
await store.readAsync();
|
|
87
|
+
await manager.reconcile();
|
|
88
|
+
execution.client.setStatus(SOURCE, `tasks: ${store.snapshot.tasks.length}`);
|
|
89
|
+
return () => {
|
|
90
|
+
manager.reset();
|
|
91
|
+
execution.client.setStatus(SOURCE, void 0);
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}],
|
|
95
|
+
onDispose() {
|
|
96
|
+
manager.dispose();
|
|
97
|
+
store.dispose();
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
//#endregion
|
|
102
|
+
//#region src/extensions/workspaces/sessions/(backend)/root.server.ts
|
|
103
|
+
var root_server_default = defineRoot(root);
|
|
104
|
+
//#endregion
|
|
105
|
+
//#region src/extensions/(backend)/channel/_lib/task-graph.ts
|
|
106
|
+
function isTaskDocument(value) {
|
|
107
|
+
return typeof value === "object" && value !== null && typeof value.rev === "number" && Array.isArray(value.tasks);
|
|
108
|
+
}
|
|
109
|
+
function present(document) {
|
|
110
|
+
return {
|
|
111
|
+
tasks: document.tasks.flatMap((task) => {
|
|
112
|
+
if (task.status === "deleted") return [];
|
|
113
|
+
const view = {
|
|
114
|
+
id: task.id,
|
|
115
|
+
subject: task.subject,
|
|
116
|
+
status: task.status,
|
|
117
|
+
blockedBy: task.blockedBy ?? []
|
|
118
|
+
};
|
|
119
|
+
if (task.description) view.description = task.description;
|
|
120
|
+
if (task.activeForm) view.activeForm = task.activeForm;
|
|
121
|
+
if (task.owner) view.owner = task.owner;
|
|
122
|
+
if (task.updatedAt) view.updatedAt = task.updatedAt;
|
|
123
|
+
if (task.delegation) view.delegation = {
|
|
124
|
+
...task.delegation.agent === void 0 ? {} : { agent: task.delegation.agent },
|
|
125
|
+
...task.delegation.state === void 0 ? {} : { state: task.delegation.state }
|
|
126
|
+
};
|
|
127
|
+
return [view];
|
|
128
|
+
}),
|
|
129
|
+
rev: document.rev
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/** Publishes each managed session's durable task graph and follows direct session commits. */
|
|
133
|
+
function createTasksChannel(options = {}) {
|
|
134
|
+
return {
|
|
135
|
+
frameType: TASKS_CHANNEL_TYPE,
|
|
136
|
+
start(host) {
|
|
137
|
+
const stores = /* @__PURE__ */ new Map();
|
|
138
|
+
const open = (scope) => {
|
|
139
|
+
if (stores.has(scope.sessionId)) return;
|
|
140
|
+
let store = options.storeFor?.(scope);
|
|
141
|
+
if (store === void 0) {
|
|
142
|
+
if (scope.environment === void 0) throw new Error(`Task channel requires an admitted environment for session '${scope.sessionId}'.`);
|
|
143
|
+
store = new TaskStore({
|
|
144
|
+
cwd: scope.cwd,
|
|
145
|
+
env: scope.environment,
|
|
146
|
+
storePath: resolveStorePath(scope.cwd, scope.environment, scope.sessionId)
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
store.read();
|
|
150
|
+
const source = {
|
|
151
|
+
store,
|
|
152
|
+
unsubscribe: () => void 0
|
|
153
|
+
};
|
|
154
|
+
stores.set(scope.sessionId, source);
|
|
155
|
+
source.unsubscribe = host.directEvents.subscribe(TASKS_CHANNEL_TYPE, scope.sessionId, (payload) => {
|
|
156
|
+
if (!isTaskDocument(payload)) return;
|
|
157
|
+
const current = stores.get(scope.sessionId);
|
|
158
|
+
if (current === void 0) return;
|
|
159
|
+
current.latest = payload;
|
|
160
|
+
host.publish(scope.sessionId, present(payload));
|
|
161
|
+
}, { replayLatest: true });
|
|
162
|
+
};
|
|
163
|
+
const close = (sessionId) => {
|
|
164
|
+
const source = stores.get(sessionId);
|
|
165
|
+
if (!source) return;
|
|
166
|
+
source.unsubscribe();
|
|
167
|
+
source.store.dispose();
|
|
168
|
+
stores.delete(sessionId);
|
|
169
|
+
};
|
|
170
|
+
for (const scope of host.sessions()) open(scope);
|
|
171
|
+
return {
|
|
172
|
+
payloadFor(scope) {
|
|
173
|
+
open(scope);
|
|
174
|
+
const source = stores.get(scope.sessionId);
|
|
175
|
+
const document = source?.latest ?? source?.store.snapshot;
|
|
176
|
+
return document === void 0 ? void 0 : present(document);
|
|
177
|
+
},
|
|
178
|
+
sessionAdded: open,
|
|
179
|
+
sessionRemoved: close,
|
|
180
|
+
close() {
|
|
181
|
+
for (const sessionId of stores.keys()) close(sessionId);
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
//#endregion
|
|
188
|
+
//#region src/extensions/(backend)/channel/task-graph.server.ts
|
|
189
|
+
var task_graph_server_default = defineChannel(createTasksChannel);
|
|
190
|
+
//#endregion
|
|
191
|
+
//#region src/services/taskTool/index.ts
|
|
192
|
+
function output(value) {
|
|
193
|
+
if (typeof value === "object" && value !== null && "content" in value) return value;
|
|
194
|
+
return {
|
|
195
|
+
content: [{
|
|
196
|
+
type: "text",
|
|
197
|
+
text: typeof value === "string" ? value : JSON.stringify(value, null, 2)
|
|
198
|
+
}],
|
|
199
|
+
details: value
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
function failure(error) {
|
|
203
|
+
return {
|
|
204
|
+
content: [{
|
|
205
|
+
type: "text",
|
|
206
|
+
text: error instanceof Error ? error.message : String(error)
|
|
207
|
+
}],
|
|
208
|
+
isError: true
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
async function reducerAction(store, action, params, maxTasks) {
|
|
212
|
+
const { document, value } = await store.mutate((current) => {
|
|
213
|
+
const result = applyTaskMutation(current, action, params, void 0, maxTasks);
|
|
214
|
+
return {
|
|
215
|
+
...isCommittingOp(result.op) ? { document: result.document } : {},
|
|
216
|
+
value: result
|
|
217
|
+
};
|
|
218
|
+
});
|
|
219
|
+
if (value.op.kind === "error") throw new Error(value.op.message);
|
|
220
|
+
return buildToolResult(action, params, document, value.op);
|
|
221
|
+
}
|
|
222
|
+
async function assignmentBatch(manager, assignments, signal) {
|
|
223
|
+
const result = [];
|
|
224
|
+
for (const [index, assignment] of assignments.entries()) try {
|
|
225
|
+
const outcome = await manager.assign(assignment.id, {
|
|
226
|
+
agent: assignment.agent,
|
|
227
|
+
inlineAgent: assignment.inlineAgent,
|
|
228
|
+
instructions: assignment.instructions,
|
|
229
|
+
relevantFiles: assignment.relevantFiles,
|
|
230
|
+
priorFindings: assignment.priorFindings,
|
|
231
|
+
model: assignment.model,
|
|
232
|
+
...assignment.context === "fork" || assignment.context === "fresh" ? { context: assignment.context } : {},
|
|
233
|
+
signal
|
|
234
|
+
});
|
|
235
|
+
result.push({
|
|
236
|
+
index,
|
|
237
|
+
id: assignment.id,
|
|
238
|
+
agent: assignment.agent,
|
|
239
|
+
...outcome
|
|
240
|
+
});
|
|
241
|
+
} catch (error) {
|
|
242
|
+
result.push({
|
|
243
|
+
index,
|
|
244
|
+
id: assignment.id,
|
|
245
|
+
agent: assignment.agent,
|
|
246
|
+
ok: false,
|
|
247
|
+
message: String(error)
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
return result;
|
|
251
|
+
}
|
|
252
|
+
function createHeadlessTaskTool(store, manager, maxTasks) {
|
|
253
|
+
return {
|
|
254
|
+
name: "task",
|
|
255
|
+
label: "Task",
|
|
256
|
+
description: "Maintain a persistent task graph and delegate ready tasks to background agents.",
|
|
257
|
+
parameters: TaskParamsSchema,
|
|
258
|
+
promptSnippet: "Track complex work persistently and delegate ready tasks",
|
|
259
|
+
executionMode: "serial",
|
|
260
|
+
async execute(_toolCallId, rawParams, signal, onUpdate) {
|
|
261
|
+
if (!Check(TaskParamsSchema, rawParams)) return failure("Invalid task parameters.");
|
|
262
|
+
const params = rawParams;
|
|
263
|
+
try {
|
|
264
|
+
if (params.action === "assign") {
|
|
265
|
+
if (!params.assignments?.length) throw new Error("assign requires a non-empty assignments[] array");
|
|
266
|
+
onUpdate?.(output(`Delegating ${params.assignments.length} task${params.assignments.length === 1 ? "" : "s"}...`));
|
|
267
|
+
const items = await assignmentBatch(manager, params.assignments, signal);
|
|
268
|
+
const assigned = items.filter((item) => item.ok).map((item) => item.id);
|
|
269
|
+
const text = formatAssignmentResults(items);
|
|
270
|
+
if (assigned.length === 0) throw new Error(text);
|
|
271
|
+
return buildAssignmentResult(params, store.snapshot, text, {
|
|
272
|
+
assigned,
|
|
273
|
+
failed: items.length - assigned.length
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
if (params.action === "cancel") {
|
|
277
|
+
const outcome = await manager.cancel(params.id ?? NaN);
|
|
278
|
+
if (!outcome.ok) throw new Error(outcome.message);
|
|
279
|
+
return buildTextResult("cancel", params, store.snapshot, outcome.message);
|
|
280
|
+
}
|
|
281
|
+
return reducerAction(store, params.action, params, maxTasks);
|
|
282
|
+
} catch (error) {
|
|
283
|
+
return failure(error);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
//#endregion
|
|
289
|
+
//#region src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.server.ts
|
|
290
|
+
var tasks_server_default$1 = (context) => ({
|
|
291
|
+
name: COMMAND_NAME,
|
|
292
|
+
description: "List or clear the persistent task graph.",
|
|
293
|
+
async execute(args, commandContext) {
|
|
294
|
+
const action = args.trim() === "clear" ? "clear" : "list";
|
|
295
|
+
const content = (await reducerAction(context.root.store, action, { action }, context.root.maxTasks)).content[0];
|
|
296
|
+
await commandContext.client.notify({
|
|
297
|
+
body: content?.type === "text" ? content.text : "No tasks",
|
|
298
|
+
level: "info"
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
//#endregion
|
|
303
|
+
//#region src/extensions/workspaces/sessions/(backend)/command/tasks.server.ts
|
|
304
|
+
var tasks_server_default = defineServerCommand(tasks_server_default$1);
|
|
305
|
+
//#endregion
|
|
306
|
+
//#region src/extensions/workspaces/sessions/(backend)/resource/_lib/task-board.server.ts
|
|
307
|
+
var task_board_server_default$1 = (context) => ({
|
|
308
|
+
name: "doompi/task-board",
|
|
309
|
+
kind: "context",
|
|
310
|
+
/**
|
|
311
|
+
* The same bounded projection the Pi facet renders: open work only, one line each.
|
|
312
|
+
* Dumping the whole TaskDocument put every completed task plus the store's own
|
|
313
|
+
* version/rev/nextId bookkeeping in the prompt, and an idle board still cost a
|
|
314
|
+
* paragraph. '' is dropped by the prompt composer.
|
|
315
|
+
*/
|
|
316
|
+
read: () => {
|
|
317
|
+
const rendered = formatTaskSnapshots(activeTaskSnapshots(context.root.store.snapshot.tasks));
|
|
318
|
+
return rendered === "(no active tasks)" ? "" : rendered;
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
//#endregion
|
|
322
|
+
//#region src/extensions/workspaces/sessions/(backend)/resource/task-board.server.ts
|
|
323
|
+
var task_board_server_default = defineResource(task_board_server_default$1);
|
|
324
|
+
//#endregion
|
|
325
|
+
//#region src/extensions/workspaces/sessions/(backend)/tool/_lib/task.server.ts
|
|
326
|
+
var task_server_default$1 = defineServerTool((context) => createHeadlessTaskTool(context.root.store, context.root.manager, context.root.maxTasks));
|
|
327
|
+
//#endregion
|
|
328
|
+
//#region src/extensions/workspaces/sessions/(backend)/tool/task.server.ts
|
|
329
|
+
var task_server_default = defineServerTool(task_server_default$1);
|
|
330
|
+
//#endregion
|
|
8
331
|
//#region generated/server.ts
|
|
9
332
|
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
10
333
|
const via = (identity, value) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.mjs","names":["channelTaskGraph","rootSession","commandTasks","resourceTaskBoard","toolTask"],"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 channelTaskGraph from '../src/extensions/(backend)/channel/task-graph.server';\nimport commandTasks from '../src/extensions/workspaces/sessions/(backend)/command/tasks.server';\nimport resourceTaskBoard from '../src/extensions/workspaces/sessions/(backend)/resource/task-board.server';\nimport toolTask from '../src/extensions/workspaces/sessions/(backend)/tool/task.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;\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-task',\n global: () => ({\n get channels(): DoomServerSessionPlugin['channels'] { return [() => via({ frameType: 'task_graph' }, channelTaskGraph())]; },\n }),\n workspace: () => ({\n get channels(): DoomServerSessionPlugin['channels'] { return [() => via({ frameType: 'task_graph' }, channelTaskGraph())]; },\n }),\n session: async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get channels(): DoomServerSessionPlugin['channels'] { return [() => via({ frameType: 'task_graph' }, channelTaskGraph())]; },\n get commands(): DoomServerSessionPlugin['commands'] { return [via({ name: 'tasks' }, at(commandTasks, contextSession))]; },\n get resources(): DoomServerSessionPlugin['resources'] { return [at(resourceTaskBoard, contextSession)]; },\n get tools(): DoomServerSessionPlugin['tools'] { return [via({ name: 'task' }, at(toolTask, contextSession))]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): DoomServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default facet;\n"],"mappings":";;;;;;;;AAWA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AACpE,MAAM,OAAU,UAAmC,WAAuB;CAAE,GAAG;CAAU,GAAI;AAAiB;AAE9G,MAAa,QAAQ,mBAAmB;CACtC,MAAM;CACN,eAAe,EACb,IAAI,WAAgD;EAAE,OAAO,OAAO,IAAI,EAAE,WAAW,aAAa,GAAGA,0BAAiB,CAAC,CAAC;CAAG,EAC7H;CACA,kBAAkB,EAChB,IAAI,WAAgD;EAAE,OAAO,OAAO,IAAI,EAAE,WAAW,aAAa,GAAGA,0BAAiB,CAAC,CAAC;CAAG,EAC7H;CACA,SAAS,OAAO,YAAY;EAC1B,MAAM,eAAe,MAAMC,oBAAY,OAAO;EAC9C,MAAM,iBAAiB;GAAE,GAAG;GAAS,MAAM,aAAa;EAAM;EAC9D,OAAO;GACL,GAAG,iBAAiB,YAAY;GAChC,IAAI,WAAgD;IAAE,OAAO,OAAO,IAAI,EAAE,WAAW,aAAa,GAAGD,0BAAiB,CAAC,CAAC;GAAG;GAC3H,IAAI,WAAgD;IAAE,OAAO,CAAC,IAAI,EAAE,MAAM,QAAQ,GAAG,GAAGE,sBAAc,cAAc,CAAC,CAAC;GAAG;GACzH,IAAI,YAAkD;IAAE,OAAO,CAAC,GAAGC,2BAAmB,cAAc,CAAC;GAAG;GACxG,IAAI,QAA0C;IAAE,OAAO,CAAC,IAAI,EAAE,MAAM,OAAO,GAAG,GAAGC,qBAAU,cAAc,CAAC,CAAC;GAAG;GAC9G,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;GAC3C,IAAI,aAAoD;IAAE,OAAO,CAAC,GAAI,aAAa,cAAc,CAAC,CAAE;GAAG;EACzG;CACF;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.mjs","names":["contribution","contribution","contribution","contribution","contribution","channelTaskGraph","rootSession","commandTasks","resourceTaskBoard","toolTask"],"sources":["../../src/types/webTasks.ts","../../src/extensions/workspaces/sessions/(backend)/_lib/root.server.ts","../../src/extensions/workspaces/sessions/(backend)/root.server.ts","../../src/extensions/(backend)/channel/_lib/task-graph.ts","../../src/extensions/(backend)/channel/task-graph.server.ts","../../src/services/taskTool/index.ts","../../src/extensions/workspaces/sessions/(backend)/command/_lib/tasks.server.ts","../../src/extensions/workspaces/sessions/(backend)/command/tasks.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/_lib/task-board.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/task-board.server.ts","../../src/extensions/workspaces/sessions/(backend)/tool/_lib/task.server.ts","../../src/extensions/workspaces/sessions/(backend)/tool/task.server.ts","../../generated/server.ts"],"sourcesContent":["/** Browser-safe task view published by the cockpit hub channel. */\nexport const TASKS_CHANNEL_TYPE = 'task_graph';\n\nexport type WebTaskStatus = 'pending' | 'in_progress' | 'completed' | 'failed' | 'deleted';\n\nexport interface WebTask {\n id: number;\n subject: string;\n description?: string;\n activeForm?: string;\n status: WebTaskStatus;\n blockedBy: number[];\n owner?: string;\n updatedAt?: string;\n delegation?: {\n agent?: string;\n state?: string;\n };\n}\n\nexport interface WebTasksPayload {\n tasks: WebTask[];\n rev: number;\n}\n","import { DOOM_DELEGATION_SERVICE, readDoomDelegationService } from '@agimon-ai/doompi-core/delegation';\nimport { defineRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/serverFacet';\nimport type { Context } from '@deepseek-ai/cordis';\n\nimport { getDelegationTimeoutMs, getMaxTasks, getStoreTtlMs } from '../../../../../services/config';\nimport { DelegationManager } from '../../../../../services/delegation';\nimport { createNodeDelegationPlatform } from '../../../../../services/delegationPlatform';\nimport {\n removeLegacyStoreDirectoryAsync,\n resolveSessionKey,\n sweepStoreFilesAsync,\n} from '../../../../../services/paths';\nimport { TaskStore } from '../../../../../services/taskStore';\nimport { TASKS_CHANNEL_TYPE } from '../../../../../types/webTasks';\n\nconst SOURCE = '@agimon-ai/doompi-task';\n\n/** The notification body: one line, since `client.notify` collapses the rest anyway. */\nfunction headlineOf(content: string): string {\n return content.split('\\n').find((line) => line.trim().length > 0) ?? content;\n}\n\nconst root = defineRoot(({ host: serverHost, agent: host }: DoomServerPluginContext) => {\n if (!host) throw new Error('Task session requires the headless host.');\n const execution = host.context;\n if (serverHost.context.directEvents === undefined)\n throw new Error('Task headless facet requires the session direct event bus.');\n const directEvents = serverHost.context.directEvents;\n const maxTasks = getMaxTasks(execution.environment);\n const store = new TaskStore({\n env: execution.environment,\n onCommitted: (_previous, committed) => {\n execution.client.setStatus(SOURCE, `tasks: ${committed.tasks.length}`);\n directEvents.publish(TASKS_CHANNEL_TYPE, execution.sessionId, committed);\n },\n });\n store.configureSession(resolveSessionKey(execution.sessionId, execution.environment));\n let notifications: Promise<void> = Promise.resolve();\n const manager = new DelegationManager({\n store,\n cwd: execution.cwd,\n platform: createNodeDelegationPlatform(execution.environment),\n getSessionId: () => execution.sessionId,\n notify: (message, options) => {\n // `DelegationNotifier` is Pi's `sendMessage` shape, and the Pi facet\n // forwards it verbatim (`root.cli.ts`). A headless session has no such\n // single call, so the three jobs are done by hand:\n //\n // toast `client.notify` - operator-facing only, flattened to one\n // line and capped at 4096 chars, and the model never sees a\n // custom entry. It gets the headline, not the whole result.\n // transcript `session.appendCustomEntry` under the same custom type,\n // carrying the full multi-line content.\n // wake `session.admitPrompt(content, 'steer')` - the only call\n // that puts the completion in front of the model.\n // `session.prompt(_, 'steer')` is enqueue-only and parks the\n // message on an idle lane, which is why a finished subagent\n // used to leave the agent sitting idle.\n //\n // Sequenced so two delegations settling in the same tick each observe\n // settled lane state rather than racing.\n notifications = notifications\n .then(async () => {\n await execution.client.notify({ body: headlineOf(message.content), level: 'info' });\n await execution.session.appendCustomEntry(message.customType, { content: message.content });\n // `triggerTurn: false` has no faithful headless mapping - there is no\n // way to reach model context without starting or joining a turn - so\n // it stays a toast, as it is today. `DelegationManager` always sends\n // `true`, so this is defensive rather than live.\n if (options?.triggerTurn === false) return;\n // Matching the voice facet, which also refuses rather than degrading:\n // `session.prompt(_, 'steer')` is NOT a fallback here, because it is\n // enqueue-only and would park the message on an idle lane - the\n // original bug.\n if (!execution.session.admitPrompt) throw new Error('The session cannot admit a task notification.');\n await execution.session.admitPrompt(message.content, 'steer');\n })\n .catch((error: unknown) => {\n // Mirrors `onNotifyError` below. The delegation is already committed,\n // so a failed notification costs the model its wake-up, not the\n // result, and must not stall later notifications.\n void execution.client.notify({ body: String(error), level: 'warning' });\n });\n },\n onChange: () => execution.client.setStatus(SOURCE, `tasks: ${store.snapshot.tasks.length}`),\n runTimeoutMs: getDelegationTimeoutMs(execution.environment),\n onNotifyError: (error) => void execution.client.notify({ body: String(error), level: 'warning' }),\n });\n return {\n value: { store, manager, maxTasks },\n services: [\n (serviceContextOwner: Context) => {\n serviceContextOwner.inject([DOOM_DELEGATION_SERVICE], (serviceContext) => {\n const service = readDoomDelegationService(serviceContext);\n if (service) manager.bind(serviceContext, service);\n });\n },\n ],\n activities: [\n {\n name: SOURCE,\n async start(activityContext) {\n store.configureSession(resolveSessionKey(activityContext.sessionId, activityContext.environment));\n await removeLegacyStoreDirectoryAsync(store.storePath, activityContext.cwd);\n if (!activityContext.environment.DOOM_TASK_STORE_PATH)\n await sweepStoreFilesAsync(store.storePath, getStoreTtlMs(activityContext.environment));\n await store.readAsync();\n await manager.reconcile();\n execution.client.setStatus(SOURCE, `tasks: ${store.snapshot.tasks.length}`);\n return () => {\n manager.reset();\n execution.client.setStatus(SOURCE, undefined);\n };\n },\n },\n ],\n onDispose() {\n manager.dispose();\n store.dispose();\n },\n };\n});\n\nexport type TaskServerScope = Awaited<ReturnType<typeof root>>['value'];\nexport default root;\n","import { defineRoot } from '@agimon-ai/doompi-core/extensionFile';\n\nimport contribution from './_lib/root.server';\n\nexport default defineRoot(contribution);\n","import type { DoomHubChannelSource, DoomHubSessionScope, DoomHubChannel } from '@agimon-ai/doompi-core/hubChannel';\n\nimport type { TaskDocument } from '../../../../models/task';\nimport { resolveStorePath } from '../../../../services/paths';\nimport { TaskStore } from '../../../../services/taskStore';\nimport { TASKS_CHANNEL_TYPE, type WebTask, type WebTasksPayload } from '../../../../types/webTasks';\n\ninterface TaskStoreSource {\n readonly snapshot: TaskDocument;\n read(): TaskDocument;\n dispose(): void;\n}\n\nfunction isTaskDocument(value: unknown): value is TaskDocument {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as TaskDocument).rev === 'number' &&\n Array.isArray((value as TaskDocument).tasks)\n );\n}\n\nexport interface TasksChannelOptions {\n /** Injectable for tests. The default opens the session tree's durable task store. */\n storeFor?: (scope: DoomHubSessionScope) => TaskStoreSource;\n}\n\nfunction present(document: TaskDocument): WebTasksPayload {\n const tasks: WebTask[] = document.tasks.flatMap((task) => {\n if (task.status === 'deleted') return [];\n const view: WebTask = {\n id: task.id,\n subject: task.subject,\n status: task.status,\n blockedBy: task.blockedBy ?? [],\n };\n if (task.description) view.description = task.description;\n if (task.activeForm) view.activeForm = task.activeForm;\n if (task.owner) view.owner = task.owner;\n if (task.updatedAt) view.updatedAt = task.updatedAt;\n if (task.delegation) {\n view.delegation = {\n ...(task.delegation.agent === undefined ? {} : { agent: task.delegation.agent }),\n ...(task.delegation.state === undefined ? {} : { state: task.delegation.state }),\n };\n }\n return [view];\n });\n return { tasks, rev: document.rev };\n}\n\n/** Publishes each managed session's durable task graph and follows direct session commits. */\nexport function createTasksChannel(options: TasksChannelOptions = {}): DoomHubChannel {\n return {\n frameType: TASKS_CHANNEL_TYPE,\n start(host) {\n const stores = new Map<string, { store: TaskStoreSource; unsubscribe: () => void; latest?: TaskDocument }>();\n const open = (scope: DoomHubSessionScope): void => {\n if (stores.has(scope.sessionId)) return;\n let store = options.storeFor?.(scope);\n if (store === undefined) {\n if (scope.environment === undefined)\n throw new Error(`Task channel requires an admitted environment for session '${scope.sessionId}'.`);\n store = new TaskStore({\n cwd: scope.cwd,\n env: scope.environment,\n storePath: resolveStorePath(scope.cwd, scope.environment, scope.sessionId),\n });\n }\n store.read();\n const source = { store, unsubscribe: () => undefined as void };\n stores.set(scope.sessionId, source);\n source.unsubscribe = host.directEvents.subscribe(\n TASKS_CHANNEL_TYPE,\n scope.sessionId,\n (payload) => {\n if (!isTaskDocument(payload)) return;\n const current = stores.get(scope.sessionId);\n if (current === undefined) return;\n current.latest = payload;\n host.publish(scope.sessionId, present(payload));\n },\n { replayLatest: true },\n );\n };\n const close = (sessionId: string): void => {\n const source = stores.get(sessionId);\n if (!source) return;\n source.unsubscribe();\n source.store.dispose();\n stores.delete(sessionId);\n };\n for (const scope of host.sessions()) open(scope);\n\n const source: DoomHubChannelSource = {\n payloadFor(scope) {\n open(scope);\n const source = stores.get(scope.sessionId);\n const document = source?.latest ?? source?.store.snapshot;\n return document === undefined ? undefined : present(document);\n },\n sessionAdded: open,\n sessionRemoved: close,\n close() {\n for (const sessionId of stores.keys()) close(sessionId);\n },\n };\n return source;\n },\n };\n}\n\nexport default createTasksChannel;\n","import { defineChannel } from '@agimon-ai/doompi-core/extensionFile';\n\nimport contribution from './_lib/task-graph';\n\nexport default defineChannel(contribution);\n","import type { DoomHeadlessTool, DoomHeadlessToolResult } from '@agimon-ai/doompi-core/headless';\nimport { Check } from 'typebox/value';\n\nimport type { TaskMutationParams } from '../../models/task';\nimport { TaskParamsSchema, type TaskParams, type TaskAssignmentParams } from '../../schemas/task';\nimport type { DelegationManager } from '../delegation';\nimport { applyTaskMutation, isCommittingOp, type ReducerAction } from '../reducer';\nimport { buildAssignmentResult, buildTextResult, buildToolResult, formatAssignmentResults } from '../taskResult';\nimport type { TaskStore } from '../taskStore';\n\nfunction output(value: unknown): DoomHeadlessToolResult {\n if (typeof value === 'object' && value !== null && 'content' in value) return value as DoomHeadlessToolResult;\n const text = typeof value === 'string' ? value : JSON.stringify(value, null, 2);\n return { content: [{ type: 'text', text }], details: value };\n}\n\nfunction failure(error: unknown): DoomHeadlessToolResult {\n return { content: [{ type: 'text', text: error instanceof Error ? error.message : String(error) }], isError: true };\n}\n\nexport async function reducerAction(\n store: TaskStore,\n action: ReducerAction,\n params: TaskMutationParams,\n maxTasks: number,\n): Promise<DoomHeadlessToolResult> {\n const { document, value } = await store.mutate((current) => {\n const result = applyTaskMutation(current, action, params, undefined, maxTasks);\n return { ...(isCommittingOp(result.op) ? { document: result.document } : {}), value: result };\n });\n if (value.op.kind === 'error') throw new Error(value.op.message);\n return buildToolResult(action, params, document, value.op);\n}\n\ninterface AssignmentItemResult {\n index: number;\n id: number;\n agent: string;\n ok: boolean;\n message: string;\n}\n\nasync function assignmentBatch(\n manager: DelegationManager,\n assignments: readonly TaskAssignmentParams[],\n signal?: AbortSignal,\n): Promise<AssignmentItemResult[]> {\n const result: AssignmentItemResult[] = [];\n for (const [index, assignment] of assignments.entries()) {\n try {\n const outcome = await manager.assign(assignment.id, {\n agent: assignment.agent,\n inlineAgent: assignment.inlineAgent,\n instructions: assignment.instructions,\n relevantFiles: assignment.relevantFiles,\n priorFindings: assignment.priorFindings,\n model: assignment.model,\n ...(assignment.context === 'fork' || assignment.context === 'fresh' ? { context: assignment.context } : {}),\n signal,\n });\n result.push({ index, id: assignment.id, agent: assignment.agent, ...outcome });\n } catch (error) {\n result.push({ index, id: assignment.id, agent: assignment.agent, ok: false, message: String(error) });\n }\n }\n return result;\n}\n\nexport function createHeadlessTaskTool(\n store: TaskStore,\n manager: DelegationManager,\n maxTasks: number,\n): DoomHeadlessTool<typeof TaskParamsSchema> {\n return {\n name: 'task',\n label: 'Task',\n description: 'Maintain a persistent task graph and delegate ready tasks to background agents.',\n parameters: TaskParamsSchema,\n promptSnippet: 'Track complex work persistently and delegate ready tasks',\n executionMode: 'serial',\n async execute(_toolCallId, rawParams, signal, onUpdate) {\n if (!Check(TaskParamsSchema, rawParams)) return failure('Invalid task parameters.');\n const params = rawParams as TaskParams;\n try {\n if (params.action === 'assign') {\n if (!params.assignments?.length) throw new Error('assign requires a non-empty assignments[] array');\n onUpdate?.(\n output(`Delegating ${params.assignments.length} task${params.assignments.length === 1 ? '' : 's'}...`),\n );\n const items = await assignmentBatch(manager, params.assignments, signal);\n const assigned = items.filter((item) => item.ok).map((item) => item.id);\n const text = formatAssignmentResults(items);\n if (assigned.length === 0) throw new Error(text);\n return buildAssignmentResult(params as TaskMutationParams, store.snapshot, text, {\n assigned,\n failed: items.length - assigned.length,\n });\n }\n if (params.action === 'cancel') {\n const outcome = await manager.cancel(params.id ?? Number.NaN);\n if (!outcome.ok) throw new Error(outcome.message);\n return buildTextResult('cancel', params as TaskMutationParams, store.snapshot, outcome.message);\n }\n return reducerAction(store, params.action as ReducerAction, params as TaskMutationParams, maxTasks);\n } catch (error) {\n return failure(error);\n }\n },\n };\n}\n","import type { WithRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport type { DoomHeadlessExecutionContext } from '@agimon-ai/doompi-core/headless';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/serverFacet';\n\nimport { COMMAND_NAME } from '../../../../../../constants/task';\nimport { reducerAction } from '../../../../../../services/taskTool';\nimport type { TaskServerScope } from '../../_lib/root.server';\n\nexport default (context: WithRoot<DoomServerPluginContext, TaskServerScope>) => ({\n name: COMMAND_NAME,\n description: 'List or clear the persistent task graph.',\n async execute(args: string, commandContext: DoomHeadlessExecutionContext) {\n const action = args.trim() === 'clear' ? 'clear' : 'list';\n const response = await reducerAction(context.root.store, action, { action }, context.root.maxTasks);\n const content = response.content[0];\n await commandContext.client.notify({\n body: content?.type === 'text' ? content.text : 'No tasks',\n level: 'info',\n });\n },\n});\n","import { defineServerCommand } from '@agimon-ai/doompi-core/extensionFile';\n\nimport contribution from './_lib/tasks.server';\n\nexport default defineServerCommand(contribution);\n","import type { WithRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/serverFacet';\n\nimport { activeTaskSnapshots, formatTaskSnapshots } from '../../../../../../services/contextContribution';\nimport type { TaskServerScope } from '../../_lib/root.server';\n\nexport default (context: WithRoot<DoomServerPluginContext, TaskServerScope>) => ({\n name: 'doompi/task-board',\n kind: 'context' as const,\n /**\n * The same bounded projection the Pi facet renders: open work only, one line each.\n * Dumping the whole TaskDocument put every completed task plus the store's own\n * version/rev/nextId bookkeeping in the prompt, and an idle board still cost a\n * paragraph. '' is dropped by the prompt composer.\n */\n read: () => {\n const rendered = formatTaskSnapshots(activeTaskSnapshots(context.root.store.snapshot.tasks));\n return rendered === '(no active tasks)' ? '' : rendered;\n },\n});\n","import { defineResource } from '@agimon-ai/doompi-core/extensionFile';\n\nimport contribution from './_lib/task-board.server';\n\nexport default defineResource(contribution);\n","import { defineServerTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/serverFacet';\n\nimport { createHeadlessTaskTool } from '../../../../../../services/taskTool';\nimport type { TaskServerScope } from '../../_lib/root.server';\n\nexport default defineServerTool((context: WithRoot<DoomServerPluginContext, TaskServerScope>) =>\n createHeadlessTaskTool(context.root.store, context.root.manager, context.root.maxTasks),\n);\n","import { defineServerTool } from '@agimon-ai/doompi-core/extensionFile';\n\nimport contribution from './_lib/task.server';\n\nexport default defineServerTool(contribution);\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineServerPlugin, type DoomServerSessionPlugin } from '@agimon-ai/doompi-core/serverFacet';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport channelTaskGraph from '../src/extensions/(backend)/channel/task-graph.server';\nimport commandTasks from '../src/extensions/workspaces/sessions/(backend)/command/tasks.server';\nimport resourceTaskBoard from '../src/extensions/workspaces/sessions/(backend)/resource/task-board.server';\nimport toolTask from '../src/extensions/workspaces/sessions/(backend)/tool/task.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;\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-task',\n global: () => ({\n get channels(): DoomServerSessionPlugin['channels'] { return [() => via({ frameType: 'task_graph' }, channelTaskGraph())]; },\n }),\n workspace: () => ({\n get channels(): DoomServerSessionPlugin['channels'] { return [() => via({ frameType: 'task_graph' }, channelTaskGraph())]; },\n }),\n session: async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get channels(): DoomServerSessionPlugin['channels'] { return [() => via({ frameType: 'task_graph' }, channelTaskGraph())]; },\n get commands(): DoomServerSessionPlugin['commands'] { return [via({ name: 'tasks' }, at(commandTasks, contextSession))]; },\n get resources(): DoomServerSessionPlugin['resources'] { return [at(resourceTaskBoard, contextSession)]; },\n get tools(): DoomServerSessionPlugin['tools'] { return [via({ name: 'task' }, at(toolTask, contextSession))]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): DoomServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default facet;\n"],"mappings":";;;;;;;;;;;;;;;AACA,MAAa,qBAAqB;;;ACelC,MAAM,SAAS;;AAGf,SAAS,WAAW,SAAyB;CAC3C,OAAO,QAAQ,MAAM,IAAI,CAAC,CAAC,MAAM,SAAS,KAAK,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK;AACvE;AAEA,MAAM,OAAO,YAAY,EAAE,MAAM,YAAY,OAAO,WAAoC;CACtF,IAAI,CAAC,MAAM,MAAM,IAAI,MAAM,0CAA0C;CACrE,MAAM,YAAY,KAAK;CACvB,IAAI,WAAW,QAAQ,iBAAiB,KAAA,GACtC,MAAM,IAAI,MAAM,4DAA4D;CAC9E,MAAM,eAAe,WAAW,QAAQ;CACxC,MAAM,WAAW,YAAY,UAAU,WAAW;CAClD,MAAM,QAAQ,IAAI,UAAU;EAC1B,KAAK,UAAU;EACf,cAAc,WAAW,cAAc;GACrC,UAAU,OAAO,UAAU,QAAQ,UAAU,UAAU,MAAM,QAAQ;GACrE,aAAa,QAAQ,oBAAoB,UAAU,WAAW,SAAS;EACzE;CACF,CAAC;CACD,MAAM,iBAAiB,kBAAkB,UAAU,WAAW,UAAU,WAAW,CAAC;CACpF,IAAI,gBAA+B,QAAQ,QAAQ;CACnD,MAAM,UAAU,IAAI,kBAAkB;EACpC;EACA,KAAK,UAAU;EACf,UAAU,6BAA6B,UAAU,WAAW;EAC5D,oBAAoB,UAAU;EAC9B,SAAS,SAAS,YAAY;GAkB5B,gBAAgB,cACb,KAAK,YAAY;IAChB,MAAM,UAAU,OAAO,OAAO;KAAE,MAAM,WAAW,QAAQ,OAAO;KAAG,OAAO;IAAO,CAAC;IAClF,MAAM,UAAU,QAAQ,kBAAkB,QAAQ,YAAY,EAAE,SAAS,QAAQ,QAAQ,CAAC;IAK1F,IAAI,SAAS,gBAAgB,OAAO;IAKpC,IAAI,CAAC,UAAU,QAAQ,aAAa,MAAM,IAAI,MAAM,+CAA+C;IACnG,MAAM,UAAU,QAAQ,YAAY,QAAQ,SAAS,OAAO;GAC9D,CAAC,CAAC,CACD,OAAO,UAAmB;IAIzB,UAAe,OAAO,OAAO;KAAE,MAAM,OAAO,KAAK;KAAG,OAAO;IAAU,CAAC;GACxE,CAAC;EACL;EACA,gBAAgB,UAAU,OAAO,UAAU,QAAQ,UAAU,MAAM,SAAS,MAAM,QAAQ;EAC1F,cAAc,uBAAuB,UAAU,WAAW;EAC1D,gBAAgB,UAAU,KAAK,UAAU,OAAO,OAAO;GAAE,MAAM,OAAO,KAAK;GAAG,OAAO;EAAU,CAAC;CAClG,CAAC;CACD,OAAO;EACL,OAAO;GAAE;GAAO;GAAS;EAAS;EAClC,UAAU,EACP,wBAAiC;GAChC,oBAAoB,OAAO,CAAC,uBAAuB,IAAI,mBAAmB;IACxE,MAAM,UAAU,0BAA0B,cAAc;IACxD,IAAI,SAAS,QAAQ,KAAK,gBAAgB,OAAO;GACnD,CAAC;EACH,CACF;EACA,YAAY,CACV;GACE,MAAM;GACN,MAAM,MAAM,iBAAiB;IAC3B,MAAM,iBAAiB,kBAAkB,gBAAgB,WAAW,gBAAgB,WAAW,CAAC;IAChG,MAAM,gCAAgC,MAAM,WAAW,gBAAgB,GAAG;IAC1E,IAAI,CAAC,gBAAgB,YAAY,sBAC/B,MAAM,qBAAqB,MAAM,WAAW,cAAc,gBAAgB,WAAW,CAAC;IACxF,MAAM,MAAM,UAAU;IACtB,MAAM,QAAQ,UAAU;IACxB,UAAU,OAAO,UAAU,QAAQ,UAAU,MAAM,SAAS,MAAM,QAAQ;IAC1E,aAAa;KACX,QAAQ,MAAM;KACd,UAAU,OAAO,UAAU,QAAQ,KAAA,CAAS;IAC9C;GACF;EACF,CACF;EACA,YAAY;GACV,QAAQ,QAAQ;GAChB,MAAM,QAAQ;EAChB;CACF;AACF,CAAC;;;ACtHD,IAAA,sBAAe,WAAWA,IAAY;;;ACStC,SAAS,eAAe,OAAuC;CAC7D,OACE,OAAO,UAAU,YACjB,UAAU,QACV,OAAQ,MAAuB,QAAQ,YACvC,MAAM,QAAS,MAAuB,KAAK;AAE/C;AAOA,SAAS,QAAQ,UAAyC;CAqBxD,OAAO;EAAE,OApBgB,SAAS,MAAM,SAAS,SAAS;GACxD,IAAI,KAAK,WAAW,WAAW,OAAO,CAAC;GACvC,MAAM,OAAgB;IACpB,IAAI,KAAK;IACT,SAAS,KAAK;IACd,QAAQ,KAAK;IACb,WAAW,KAAK,aAAa,CAAC;GAChC;GACA,IAAI,KAAK,aAAa,KAAK,cAAc,KAAK;GAC9C,IAAI,KAAK,YAAY,KAAK,aAAa,KAAK;GAC5C,IAAI,KAAK,OAAO,KAAK,QAAQ,KAAK;GAClC,IAAI,KAAK,WAAW,KAAK,YAAY,KAAK;GAC1C,IAAI,KAAK,YACP,KAAK,aAAa;IAChB,GAAI,KAAK,WAAW,UAAU,KAAA,IAAY,CAAC,IAAI,EAAE,OAAO,KAAK,WAAW,MAAM;IAC9E,GAAI,KAAK,WAAW,UAAU,KAAA,IAAY,CAAC,IAAI,EAAE,OAAO,KAAK,WAAW,MAAM;GAChF;GAEF,OAAO,CAAC,IAAI;EACd,CACa;EAAG,KAAK,SAAS;CAAI;AACpC;;AAGA,SAAgB,mBAAmB,UAA+B,CAAC,GAAmB;CACpF,OAAO;EACL,WAAW;EACX,MAAM,MAAM;GACV,MAAM,yBAAS,IAAI,IAAwF;GAC3G,MAAM,QAAQ,UAAqC;IACjD,IAAI,OAAO,IAAI,MAAM,SAAS,GAAG;IACjC,IAAI,QAAQ,QAAQ,WAAW,KAAK;IACpC,IAAI,UAAU,KAAA,GAAW;KACvB,IAAI,MAAM,gBAAgB,KAAA,GACxB,MAAM,IAAI,MAAM,8DAA8D,MAAM,UAAU,GAAG;KACnG,QAAQ,IAAI,UAAU;MACpB,KAAK,MAAM;MACX,KAAK,MAAM;MACX,WAAW,iBAAiB,MAAM,KAAK,MAAM,aAAa,MAAM,SAAS;KAC3E,CAAC;IACH;IACA,MAAM,KAAK;IACX,MAAM,SAAS;KAAE;KAAO,mBAAmB,KAAA;IAAkB;IAC7D,OAAO,IAAI,MAAM,WAAW,MAAM;IAClC,OAAO,cAAc,KAAK,aAAa,UACrC,oBACA,MAAM,YACL,YAAY;KACX,IAAI,CAAC,eAAe,OAAO,GAAG;KAC9B,MAAM,UAAU,OAAO,IAAI,MAAM,SAAS;KAC1C,IAAI,YAAY,KAAA,GAAW;KAC3B,QAAQ,SAAS;KACjB,KAAK,QAAQ,MAAM,WAAW,QAAQ,OAAO,CAAC;IAChD,GACA,EAAE,cAAc,KAAK,CACvB;GACF;GACA,MAAM,SAAS,cAA4B;IACzC,MAAM,SAAS,OAAO,IAAI,SAAS;IACnC,IAAI,CAAC,QAAQ;IACb,OAAO,YAAY;IACnB,OAAO,MAAM,QAAQ;IACrB,OAAO,OAAO,SAAS;GACzB;GACA,KAAK,MAAM,SAAS,KAAK,SAAS,GAAG,KAAK,KAAK;GAe/C,OAAO;IAZL,WAAW,OAAO;KAChB,KAAK,KAAK;KACV,MAAM,SAAS,OAAO,IAAI,MAAM,SAAS;KACzC,MAAM,WAAW,QAAQ,UAAU,QAAQ,MAAM;KACjD,OAAO,aAAa,KAAA,IAAY,KAAA,IAAY,QAAQ,QAAQ;IAC9D;IACA,cAAc;IACd,gBAAgB;IAChB,QAAQ;KACN,KAAK,MAAM,aAAa,OAAO,KAAK,GAAG,MAAM,SAAS;IACxD;GAEU;EACd;CACF;AACF;;;AC1GA,IAAA,4BAAe,cAAcC,kBAAY;;;ACMzC,SAAS,OAAO,OAAwC;CACtD,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,aAAa,OAAO,OAAO;CAE9E,OAAO;EAAE,SAAS,CAAC;GAAE,MAAM;GAAQ,MADtB,OAAO,UAAU,WAAW,QAAQ,KAAK,UAAU,OAAO,MAAM,CAAC;EACtC,CAAC;EAAG,SAAS;CAAM;AAC7D;AAEA,SAAS,QAAQ,OAAwC;CACvD,OAAO;EAAE,SAAS,CAAC;GAAE,MAAM;GAAQ,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;EAAE,CAAC;EAAG,SAAS;CAAK;AACpH;AAEA,eAAsB,cACpB,OACA,QACA,QACA,UACiC;CACjC,MAAM,EAAE,UAAU,UAAU,MAAM,MAAM,QAAQ,YAAY;EAC1D,MAAM,SAAS,kBAAkB,SAAS,QAAQ,QAAQ,KAAA,GAAW,QAAQ;EAC7E,OAAO;GAAE,GAAI,eAAe,OAAO,EAAE,IAAI,EAAE,UAAU,OAAO,SAAS,IAAI,CAAC;GAAI,OAAO;EAAO;CAC9F,CAAC;CACD,IAAI,MAAM,GAAG,SAAS,SAAS,MAAM,IAAI,MAAM,MAAM,GAAG,OAAO;CAC/D,OAAO,gBAAgB,QAAQ,QAAQ,UAAU,MAAM,EAAE;AAC3D;AAUA,eAAe,gBACb,SACA,aACA,QACiC;CACjC,MAAM,SAAiC,CAAC;CACxC,KAAK,MAAM,CAAC,OAAO,eAAe,YAAY,QAAQ,GACpD,IAAI;EACF,MAAM,UAAU,MAAM,QAAQ,OAAO,WAAW,IAAI;GAClD,OAAO,WAAW;GAClB,aAAa,WAAW;GACxB,cAAc,WAAW;GACzB,eAAe,WAAW;GAC1B,eAAe,WAAW;GAC1B,OAAO,WAAW;GAClB,GAAI,WAAW,YAAY,UAAU,WAAW,YAAY,UAAU,EAAE,SAAS,WAAW,QAAQ,IAAI,CAAC;GACzG;EACF,CAAC;EACD,OAAO,KAAK;GAAE;GAAO,IAAI,WAAW;GAAI,OAAO,WAAW;GAAO,GAAG;EAAQ,CAAC;CAC/E,SAAS,OAAO;EACd,OAAO,KAAK;GAAE;GAAO,IAAI,WAAW;GAAI,OAAO,WAAW;GAAO,IAAI;GAAO,SAAS,OAAO,KAAK;EAAE,CAAC;CACtG;CAEF,OAAO;AACT;AAEA,SAAgB,uBACd,OACA,SACA,UAC2C;CAC3C,OAAO;EACL,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY;EACZ,eAAe;EACf,eAAe;EACf,MAAM,QAAQ,aAAa,WAAW,QAAQ,UAAU;GACtD,IAAI,CAAC,MAAM,kBAAkB,SAAS,GAAG,OAAO,QAAQ,0BAA0B;GAClF,MAAM,SAAS;GACf,IAAI;IACF,IAAI,OAAO,WAAW,UAAU;KAC9B,IAAI,CAAC,OAAO,aAAa,QAAQ,MAAM,IAAI,MAAM,iDAAiD;KAClG,WACE,OAAO,cAAc,OAAO,YAAY,OAAO,OAAO,OAAO,YAAY,WAAW,IAAI,KAAK,IAAI,IAAI,CACvG;KACA,MAAM,QAAQ,MAAM,gBAAgB,SAAS,OAAO,aAAa,MAAM;KACvE,MAAM,WAAW,MAAM,QAAQ,SAAS,KAAK,EAAE,CAAC,CAAC,KAAK,SAAS,KAAK,EAAE;KACtE,MAAM,OAAO,wBAAwB,KAAK;KAC1C,IAAI,SAAS,WAAW,GAAG,MAAM,IAAI,MAAM,IAAI;KAC/C,OAAO,sBAAsB,QAA8B,MAAM,UAAU,MAAM;MAC/E;MACA,QAAQ,MAAM,SAAS,SAAS;KAClC,CAAC;IACH;IACA,IAAI,OAAO,WAAW,UAAU;KAC9B,MAAM,UAAU,MAAM,QAAQ,OAAO,OAAO,MAAM,GAAU;KAC5D,IAAI,CAAC,QAAQ,IAAI,MAAM,IAAI,MAAM,QAAQ,OAAO;KAChD,OAAO,gBAAgB,UAAU,QAA8B,MAAM,UAAU,QAAQ,OAAO;IAChG;IACA,OAAO,cAAc,OAAO,OAAO,QAAyB,QAA8B,QAAQ;GACpG,SAAS,OAAO;IACd,OAAO,QAAQ,KAAK;GACtB;EACF;CACF;AACF;;;ACrGA,IAAA,0BAAgB,aAAiE;CAC/E,MAAM;CACN,aAAa;CACb,MAAM,QAAQ,MAAc,gBAA8C;EACxE,MAAM,SAAS,KAAK,KAAK,MAAM,UAAU,UAAU;EAEnD,MAAM,WAAU,MADO,cAAc,QAAQ,KAAK,OAAO,QAAQ,EAAE,OAAO,GAAG,QAAQ,KAAK,QAAQ,EAAA,CACzE,QAAQ;EACjC,MAAM,eAAe,OAAO,OAAO;GACjC,MAAM,SAAS,SAAS,SAAS,QAAQ,OAAO;GAChD,OAAO;EACT,CAAC;CACH;AACF;;;AChBA,IAAA,uBAAe,oBAAoBC,sBAAY;;;ACE/C,IAAA,+BAAgB,aAAiE;CAC/E,MAAM;CACN,MAAM;;;;;;;CAON,YAAY;EACV,MAAM,WAAW,oBAAoB,oBAAoB,QAAQ,KAAK,MAAM,SAAS,KAAK,CAAC;EAC3F,OAAO,aAAa,sBAAsB,KAAK;CACjD;AACF;;;ACfA,IAAA,4BAAe,eAAeC,2BAAY;;;ACE1C,IAAA,wBAAe,kBAAkB,YAC/B,uBAAuB,QAAQ,KAAK,OAAO,QAAQ,KAAK,SAAS,QAAQ,KAAK,QAAQ,CACxF;;;ACJA,IAAA,sBAAe,iBAAiBC,qBAAY;;;ACO5C,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AACpE,MAAM,OAAU,UAAmC,WAAuB;CAAE,GAAG;CAAU,GAAI;AAAiB;AAE9G,MAAa,QAAQ,mBAAmB;CACtC,MAAM;CACN,eAAe,EACb,IAAI,WAAgD;EAAE,OAAO,OAAO,IAAI,EAAE,WAAW,aAAa,GAAGC,0BAAiB,CAAC,CAAC;CAAG,EAC7H;CACA,kBAAkB,EAChB,IAAI,WAAgD;EAAE,OAAO,OAAO,IAAI,EAAE,WAAW,aAAa,GAAGA,0BAAiB,CAAC,CAAC;CAAG,EAC7H;CACA,SAAS,OAAO,YAAY;EAC1B,MAAM,eAAe,MAAMC,oBAAY,OAAO;EAC9C,MAAM,iBAAiB;GAAE,GAAG;GAAS,MAAM,aAAa;EAAM;EAC9D,OAAO;GACL,GAAG,iBAAiB,YAAY;GAChC,IAAI,WAAgD;IAAE,OAAO,OAAO,IAAI,EAAE,WAAW,aAAa,GAAGD,0BAAiB,CAAC,CAAC;GAAG;GAC3H,IAAI,WAAgD;IAAE,OAAO,CAAC,IAAI,EAAE,MAAM,QAAQ,GAAG,GAAGE,sBAAc,cAAc,CAAC,CAAC;GAAG;GACzH,IAAI,YAAkD;IAAE,OAAO,CAAC,GAAGC,2BAAmB,cAAc,CAAC;GAAG;GACxG,IAAI,QAA0C;IAAE,OAAO,CAAC,IAAI,EAAE,MAAM,OAAO,GAAG,GAAGC,qBAAU,cAAc,CAAC,CAAC;GAAG;GAC9G,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;GAC3C,IAAI,aAAoD;IAAE,OAAO,CAAC,GAAI,aAAa,cAAc,CAAC,CAAE;GAAG;EACzG;CACF;AACF,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const
|
|
1
|
+
const require_delegation = require("./delegation-BtzyLnYM.cjs");
|
|
2
2
|
let _agimon_ai_doompi_ui_theme = require("@agimon-ai/doompi-ui/theme");
|
|
3
|
-
let _earendil_works_pi_tui = require("@earendil-works/pi-tui");
|
|
4
3
|
let _agimon_ai_doompi_ui_toolChrome = require("@agimon-ai/doompi-ui/toolChrome");
|
|
4
|
+
let _earendil_works_pi_tui = require("@earendil-works/pi-tui");
|
|
5
5
|
//#region src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.ts
|
|
6
6
|
const STATUS_GLYPH = {
|
|
7
7
|
pending: "○",
|
|
@@ -106,7 +106,7 @@ function formatOverlayTaskLine(task, theme, showId, progress, nowMs = Date.now()
|
|
|
106
106
|
if (agentLabel && task.delegation?.state === "running") {
|
|
107
107
|
const chips = [];
|
|
108
108
|
if (progress) {
|
|
109
|
-
chips.push(theme.fg("muted", `[${formatElapsedMs(
|
|
109
|
+
chips.push(theme.fg("muted", `[${formatElapsedMs(require_delegation.DelegationManager.elapsedMs(progress, nowMs))}]`));
|
|
110
110
|
if (progress.tokens !== void 0) chips.push(theme.fg("muted", `[${formatTokenCount(progress.tokens)}]`));
|
|
111
111
|
}
|
|
112
112
|
const identity = task.delegation.runId ?? task.delegation.requestId;
|
|
@@ -317,17 +317,77 @@ function renderTaskResult(result, options, theme) {
|
|
|
317
317
|
return new TaskResultFrame(renderTaskResultBody(result, options, theme), theme);
|
|
318
318
|
}
|
|
319
319
|
//#endregion
|
|
320
|
-
exports
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
exports
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
320
|
+
Object.defineProperty(exports, "ACTION_GLYPH", {
|
|
321
|
+
enumerable: true,
|
|
322
|
+
get: function() {
|
|
323
|
+
return ACTION_GLYPH;
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
Object.defineProperty(exports, "JustifiedRows", {
|
|
327
|
+
enumerable: true,
|
|
328
|
+
get: function() {
|
|
329
|
+
return JustifiedRows;
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
Object.defineProperty(exports, "STATUS_COLOR", {
|
|
333
|
+
enumerable: true,
|
|
334
|
+
get: function() {
|
|
335
|
+
return STATUS_COLOR;
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
Object.defineProperty(exports, "STATUS_GLYPH", {
|
|
339
|
+
enumerable: true,
|
|
340
|
+
get: function() {
|
|
341
|
+
return STATUS_GLYPH;
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
Object.defineProperty(exports, "STATUS_LABEL", {
|
|
345
|
+
enumerable: true,
|
|
346
|
+
get: function() {
|
|
347
|
+
return STATUS_LABEL;
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
Object.defineProperty(exports, "formatCommandTaskLine", {
|
|
351
|
+
enumerable: true,
|
|
352
|
+
get: function() {
|
|
353
|
+
return formatCommandTaskLine;
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
Object.defineProperty(exports, "formatElapsedMs", {
|
|
357
|
+
enumerable: true,
|
|
358
|
+
get: function() {
|
|
359
|
+
return formatElapsedMs;
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
Object.defineProperty(exports, "formatOverlayTaskLine", {
|
|
363
|
+
enumerable: true,
|
|
364
|
+
get: function() {
|
|
365
|
+
return formatOverlayTaskLine;
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
Object.defineProperty(exports, "formatTokenCount", {
|
|
369
|
+
enumerable: true,
|
|
370
|
+
get: function() {
|
|
371
|
+
return formatTokenCount;
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
Object.defineProperty(exports, "overlayStatusGlyph", {
|
|
375
|
+
enumerable: true,
|
|
376
|
+
get: function() {
|
|
377
|
+
return overlayStatusGlyph;
|
|
378
|
+
}
|
|
379
|
+
});
|
|
380
|
+
Object.defineProperty(exports, "renderTaskCall", {
|
|
381
|
+
enumerable: true,
|
|
382
|
+
get: function() {
|
|
383
|
+
return renderTaskCall;
|
|
384
|
+
}
|
|
385
|
+
});
|
|
386
|
+
Object.defineProperty(exports, "renderTaskResult", {
|
|
387
|
+
enumerable: true,
|
|
388
|
+
get: function() {
|
|
389
|
+
return renderTaskResult;
|
|
390
|
+
}
|
|
391
|
+
});
|
|
332
392
|
|
|
333
|
-
//# sourceMappingURL=format.cli.cjs.map
|
|
393
|
+
//# sourceMappingURL=format.cli-CKxfl-lR.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.cli-CKxfl-lR.cjs","names":["DelegationManager","agentIdentityColor","renderToolHeading","DoomToolCall","truncateToWidth","visibleWidth","Text"],"sources":["../src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.ts"],"sourcesContent":["import { agentIdentityColor } from '@agimon-ai/doompi-ui/theme';\nimport { DoomToolCall, renderToolHeading } from '@agimon-ai/doompi-ui/toolChrome';\nimport type { Theme } from '@earendil-works/pi-coding-agent';\nimport { type Component, Text, truncateToWidth, visibleWidth } from '@earendil-works/pi-tui';\n\nimport type {\n Task,\n TaskAction,\n TaskDetails,\n TaskItemMutation,\n TaskMutationParams,\n TaskStatus,\n} from '../../../../../models/task';\nimport { DelegationManager, type DelegationProgress } from '../../../../../services/delegation';\n\nexport const STATUS_GLYPH: Record<TaskStatus, string> = {\n pending: '○',\n in_progress: '◐',\n completed: '●',\n failed: '✗',\n deleted: '⊘',\n};\n\ntype TaskStatusColor = 'dim' | 'warning' | 'success' | 'error' | 'muted';\n\nexport const STATUS_COLOR: Record<TaskStatus, TaskStatusColor> = {\n pending: 'dim',\n in_progress: 'warning',\n completed: 'success',\n failed: 'error',\n deleted: 'muted',\n};\n\nexport const STATUS_LABEL: Record<TaskStatus, string> = {\n pending: 'pending',\n in_progress: 'in progress',\n completed: 'completed',\n failed: 'failed',\n deleted: 'deleted',\n};\n\nconst OVERLAY_STATUS_GLYPH: Record<TaskStatus, string> = {\n ...STATUS_GLYPH,\n completed: '✓',\n deleted: STATUS_GLYPH.failed,\n};\n\nconst OVERLAY_STATUS_COLOR: Record<TaskStatus, TaskStatusColor> = {\n ...STATUS_COLOR,\n deleted: 'error',\n};\nconst MILLISECONDS_PER_SECOND = 1000;\nconst SECONDS_PER_MINUTE = 60;\nconst MINUTES_PER_HOUR = 60;\nconst TOKENS_PER_KILO = 1000;\nconst TOKEN_DECIMAL_LIMIT = 10_000;\nconst REDUNDANT_WORKING_PREFIX = /^working:\\s*/i;\nconst INLINE_WHITESPACE = /\\s+/gu;\n\n/** Keep dynamic content inside the overlay's one-physical-line contract. */\nfunction inlineText(text: string): string {\n return text.replace(INLINE_WHITESPACE, ' ').trim();\n}\n\n/** Thinking text already communicates activity; keep only its useful content. */\nfunction progressText(currentTool: string | undefined): string | undefined {\n if (!currentTool) return undefined;\n const text = inlineText(currentTool.replace(REDUNDANT_WORKING_PREFIX, ''));\n return text || undefined;\n}\n\nexport const ACTION_GLYPH: Record<TaskAction, string> = {\n upsert: '✎',\n delete: '×',\n get: '›',\n list: '☰',\n clear: '∅',\n assign: '⇒',\n cancel: '⊗',\n};\n\n/**\n * `upsert` is two operations behind one name, so a homogeneous batch narrows to\n * the glyph the operator already reads: `+` means new work appeared, `→` means\n * work moved. A mixed batch keeps the neutral write glyph.\n */\nconst UPSERT_CREATE_GLYPH = '+';\nconst UPSERT_UPDATE_GLYPH = '→';\n\nfunction upsertGlyph(items: readonly TaskItemMutation[]): string {\n if (items.length === 0) return ACTION_GLYPH.upsert;\n if (items.every((item) => item.id === undefined)) return UPSERT_CREATE_GLYPH;\n if (items.every((item) => item.id !== undefined)) return UPSERT_UPDATE_GLYPH;\n return ACTION_GLYPH.upsert;\n}\n\nexport function overlayStatusGlyph(status: TaskStatus, theme: Theme): string {\n return theme.fg(OVERLAY_STATUS_COLOR[status], OVERLAY_STATUS_GLYPH[status]);\n}\n\nexport function formatElapsedMs(durationMs: number): string {\n const totalSeconds = Math.max(0, Math.floor(durationMs / MILLISECONDS_PER_SECOND));\n const seconds = totalSeconds % SECONDS_PER_MINUTE;\n const totalMinutes = Math.floor(totalSeconds / SECONDS_PER_MINUTE);\n if (totalMinutes < MINUTES_PER_HOUR) {\n return totalMinutes === 0 ? `${seconds}s` : `${totalMinutes}m${String(seconds).padStart(2, '0')}s`;\n }\n const minutes = totalMinutes % MINUTES_PER_HOUR;\n const hours = Math.floor(totalMinutes / MINUTES_PER_HOUR);\n return `${hours}h${String(minutes).padStart(2, '0')}m${String(seconds).padStart(2, '0')}s`;\n}\n\nexport function formatTokenCount(tokens: number): string {\n const count = Math.max(0, Math.round(tokens));\n if (count < TOKENS_PER_KILO) return String(count);\n if (count < TOKEN_DECIMAL_LIMIT) return `${(count / TOKENS_PER_KILO).toFixed(1)}k`;\n return `${Math.round(count / TOKENS_PER_KILO)}k`;\n}\n\n/**\n * One task row for the persistent overlay.\n *\n * A delegated row carries the agent name and its current tool so the operator\n * can see that background work is progressing without opening a transcript.\n */\nexport function formatOverlayTaskLine(\n task: Task,\n theme: Theme,\n showId: boolean,\n progress?: DelegationProgress,\n nowMs = Date.now(),\n agentColor?: Parameters<Theme['fg']>[0],\n): string {\n const subjectColor =\n task.status === 'in_progress'\n ? 'accent'\n : task.status === 'completed' || task.status === 'deleted'\n ? 'muted'\n : 'text';\n let subject = theme.fg(subjectColor, inlineText(task.subject));\n if (task.status === 'completed' || task.status === 'deleted') {\n subject = theme.strikethrough(subject);\n }\n\n let line = overlayStatusGlyph(task.status, theme);\n if (showId) line += ` ${theme.fg('dim', `#${task.id}`)}`;\n line += ` ${subject}`;\n\n const agent = task.delegation?.agent;\n const agentLabel = agent ? inlineText(agent) : undefined;\n if (agentLabel && task.delegation?.state === 'running') {\n // No progress means no timing is known, so the chips are omitted rather than\n // reported as `[0s]`. The transcript renderer has no progress feed at all.\n const chips: string[] = [];\n if (progress) {\n chips.push(theme.fg('muted', `[${formatElapsedMs(DelegationManager.elapsedMs(progress, nowMs))}]`));\n if (progress.tokens !== undefined) chips.push(theme.fg('muted', `[${formatTokenCount(progress.tokens)}]`));\n }\n const identity = task.delegation.runId ?? task.delegation.requestId;\n chips.push(theme.fg(agentColor ?? agentIdentityColor(identity), `[${agentLabel}]`));\n line += ` ${chips.join('')}`;\n const activity = progressText(progress?.currentTool);\n if (activity) line += ` ${theme.fg('muted', `· ${activity}`)}`;\n } else if (agentLabel) {\n line += ` ${theme.fg('muted', `[${agentLabel}]`)}`;\n }\n\n if (task.status === 'in_progress' && task.activeForm) {\n line += ` ${theme.fg('muted', `(${inlineText(task.activeForm)})`)}`;\n }\n if (task.blockedBy?.length) {\n line += ` ${theme.fg('muted', `⛓ ${task.blockedBy.map((id) => `#${id}`).join(',')}`)}`;\n }\n return line;\n}\n\n/** One task line for the `/tasks` command output. */\nexport function formatCommandTaskLine(task: Task, glyph: string): string {\n const form = task.status === 'in_progress' && task.activeForm ? ` (${task.activeForm})` : '';\n const agent = task.delegation?.agent ? ` [${task.delegation.agent}]` : '';\n const block = task.blockedBy?.length ? ` ⛓ ${task.blockedBy.map((id) => `#${id}`).join(',')}` : '';\n return ` ${glyph} #${task.id} ${task.subject}${form}${agent}${block}`;\n}\n\nexport function renderTaskCall(\n args: TaskMutationParams & { action: TaskAction },\n theme: Theme,\n tasks: readonly Task[],\n): Component {\n const items = args.action === 'upsert' ? (args.tasks ?? []) : [];\n const glyph = args.action === 'upsert' ? upsertGlyph(items) : (ACTION_GLYPH[args.action] ?? args.action);\n let text = renderToolHeading('task', `${glyph} ${args.action}`, theme);\n\n if (args.action === 'upsert') {\n // One entry reads exactly as create or update did; a batch reads as a count\n // rather than a subject it would have to pick arbitrarily.\n if (items.length === 1) {\n const only = items[0];\n if (only.id === undefined) {\n if (only.subject) text += ` ${theme.fg('dim', only.subject)}`;\n } else {\n const subject = tasks.find((task) => task.id === only.id)?.subject ?? only.subject ?? `#${only.id}`;\n text += ` ${theme.fg('accent', subject)}`;\n }\n } else if (items.length > 1) {\n text += ` ${theme.fg('dim', `${items.length} tasks`)}`;\n }\n } else if (args.action === 'assign') {\n const assignments = args.assignments ?? [];\n if (assignments.length === 1) {\n const only = assignments[0];\n const subject = tasks.find((task) => task.id === only.id)?.subject ?? `#${only.id}`;\n text += ` ${theme.fg('accent', subject)}`;\n if (only.agent) text += ` ${theme.fg('muted', `→ ${only.agent}`)}`;\n } else if (assignments.length > 1) {\n text += ` ${theme.fg('dim', `${assignments.length} tasks`)}`;\n }\n } else if ((args.action === 'get' || args.action === 'delete' || args.action === 'cancel') && args.id !== undefined) {\n const subject = tasks.find((task) => task.id === args.id)?.subject ?? `#${args.id}`;\n text += ` ${theme.fg('accent', subject)}`;\n } else if (args.action === 'list' && args.status) {\n text += ` ${theme.fg('muted', STATUS_LABEL[args.status])}`;\n }\n return new DoomToolCall(text);\n}\n\n/** Task rows kept in a collapsed result, before `ctrl+o` reveals the rest. */\nconst TRANSCRIPT_TASK_ROWS = 8;\n/** Minimum gap between a row's subject and its right-aligned status. */\nconst STATUS_GUTTER = 2;\n\nexport interface JustifiedRow {\n left: string;\n /** Pinned to the right edge. The subject is truncated before this is dropped. */\n right?: string;\n}\n\n/**\n * Rows whose trailing text is flushed right.\n *\n * `Text` cannot do this: the status has to be placed against the viewport edge,\n * which is only known at render time.\n */\nexport class JustifiedRows implements Component {\n constructor(private readonly rows: readonly JustifiedRow[]) {}\n\n /**\n * Nothing to discard: the rows are themed by the caller and held verbatim, and\n * Pi rebuilds this component from `renderResult` whenever the theme changes.\n */\n invalidate(): void {}\n\n render(width: number): string[] {\n return this.rows.map(({ left, right }) => {\n if (right === undefined || right.length === 0) return truncateToWidth(left, width);\n const rightWidth = visibleWidth(right);\n const room = width - rightWidth - STATUS_GUTTER;\n if (room <= 0) return truncateToWidth(left, width);\n const subject = truncateToWidth(left, room);\n const gap = Math.max(STATUS_GUTTER, width - visibleWidth(subject) - rightWidth);\n return subject + ' '.repeat(gap) + right;\n });\n }\n}\n\n/**\n * Self-owned task shell with the same structural divider as the bash tool.\n *\n * Task rows already carry precise per-task state, so the divider stays neutral\n * instead of competing with or appearing to animate between those states.\n */\nclass TaskResultFrame implements Component {\n constructor(\n private readonly content: Component,\n private readonly theme: Theme,\n ) {}\n\n render(width: number): string[] {\n if (width <= 0) return [];\n if (width < 3) return this.content.render(width);\n\n const contentWidth = width - 2;\n const divider = this.theme.fg('borderMuted', '─'.repeat(contentWidth));\n const lines = this.content.render(contentWidth).map((line) => ` ${line}`);\n return [` ${divider}`, ...lines, ''];\n }\n\n invalidate(): void {\n this.content.invalidate();\n }\n}\n\nexport interface TaskResultLike {\n content?: Array<{ type: string; text?: string }>;\n details?: unknown;\n isError?: boolean;\n}\n\nexport interface TaskResultOptions {\n expanded: boolean;\n isPartial: boolean;\n}\n\n/** Concatenated result text, which is all a thrown failure leaves behind. */\nfunction contentText(result: TaskResultLike): string {\n return (result.content ?? []).map((block) => block.text ?? '').join('');\n}\n\nfunction nonEmptyLines(text: string): string[] {\n return text.split('\\n').filter((line) => line.trim().length > 0);\n}\n\n/**\n * The rows `list` reported to the model.\n *\n * `details.tasks` is the whole post-mutation document, so the filters applied by\n * `formatContent` have to be applied again here or the transcript would disagree\n * with the text the model was given.\n */\nfunction listedTasks(details: TaskDetails): Task[] {\n const params = details.params as TaskMutationParams;\n let view = details.tasks;\n if (params.includeDeleted !== true) view = view.filter((task) => task.status !== 'deleted');\n if (params.status) view = view.filter((task) => task.status === params.status);\n return view;\n}\n\n/** The single task an id-bearing action acted on, so the transcript names it rather than a bare tick. */\nfunction subjectTask(details: TaskDetails): Task | undefined {\n const params = details.params as TaskMutationParams;\n if (params.id === undefined) return undefined;\n return details.tasks.find((task) => task.id === params.id);\n}\n\n/**\n * Tasks an upsert applied, resolved from the ids the reducer reported.\n *\n * The ids are read rather than guessed from the tail of the list: a batch\n * touches many rows, and a failed entry contributes none.\n */\nfunction upsertTasks(details: TaskDetails): Task[] {\n return (details.upsert?.applied ?? []).flatMap((id) => details.tasks.find((task) => task.id === id) ?? []);\n}\n\n/** Tasks successfully handed off by a native assignment batch. */\nfunction assignedTasks(details: TaskDetails): Task[] {\n return (details.assignment?.assigned ?? []).flatMap((id) => details.tasks.find((task) => task.id === id) ?? []);\n}\n\nfunction renderTaskResultBody(result: TaskResultLike, options: TaskResultOptions, theme: Theme): Component {\n const details = result.details as TaskDetails | undefined;\n\n // Running. `assign` and `cancel` stream a placeholder before the run settles.\n if (options.isPartial) {\n const text = nonEmptyLines(contentText(result)).at(-1) ?? 'working';\n return new Text(theme.fg('warning', '◐') + theme.fg('dim', ` ${text}`), 0, 0);\n }\n\n // Failed. Every failure path throws, so Pi hands back error text and no\n // details; without this the block would render a green tick on a failure.\n if (result.isError === true || details?.error !== undefined) {\n const message = details?.error ?? contentText(result);\n const all = nonEmptyLines(message);\n if (all.length <= 1) {\n return new Text(theme.fg('error', '✗') + theme.fg('dim', all[0] ? ` ${all[0]}` : ''), 0, 0);\n }\n const body = options.expanded ? all : all.slice(0, TRANSCRIPT_TASK_ROWS);\n return new Text([...body.map((line) => theme.fg('toolOutput', line)), theme.fg('error', '✗')].join('\\n'), 0, 0);\n }\n\n if (!details) return new Text(theme.fg('success', '✓'), 0, 0);\n\n /** Status rides on the task's own row, flushed right, rather than costing a line. */\n const row = (task: Task): JustifiedRow => ({\n left: formatOverlayTaskLine(task, theme, true),\n right: theme.fg(STATUS_COLOR[task.status], STATUS_LABEL[task.status]),\n });\n\n if (details.action === 'list') {\n const tasks = listedTasks(details);\n const shown = options.expanded ? tasks : tasks.slice(0, TRANSCRIPT_TASK_ROWS);\n const rows: JustifiedRow[] = shown.map(row);\n let summary = tasks.length === 0 ? 'no tasks' : `${tasks.length} task${tasks.length === 1 ? '' : 's'}`;\n if (tasks.length > shown.length) summary += ' · ctrl+o';\n rows.push({ left: theme.fg('success', '✓') + theme.fg('dim', ` ${summary}`) });\n return new JustifiedRows(rows);\n }\n\n if (details.action === 'clear') {\n return new Text(theme.fg('success', '✓') + theme.fg('dim', ' cleared'), 0, 0);\n }\n\n if (details.action === 'assign' && details.assignment) {\n const assigned = assignedTasks(details);\n const failed = details.assignment.failed;\n if (assigned.length === 1 && failed === 0) return new JustifiedRows([row(assigned[0])]);\n\n const shown = options.expanded ? assigned : assigned.slice(0, TRANSCRIPT_TASK_ROWS);\n const rows: JustifiedRow[] = shown.map(row);\n let summary = `${assigned.length} assigned`;\n if (failed > 0) summary += ` · ${failed} failed`;\n if (assigned.length > shown.length) summary += ' · ctrl+o';\n const mark = failed > 0 ? theme.fg('warning', '!') : theme.fg('success', '✓');\n rows.push({ left: mark + theme.fg('dim', ` ${summary}`) });\n return new JustifiedRows(rows);\n }\n\n if (details.action === 'upsert') {\n const touched = upsertTasks(details);\n const failed = details.upsert?.failed ?? 0;\n // One applied task and nothing failed is the common case: keep the single\n // row it has always had rather than dressing it as a bulk report.\n if (touched.length === 1 && failed === 0) return new JustifiedRows([row(touched[0])]);\n\n const shown = options.expanded ? touched : touched.slice(0, TRANSCRIPT_TASK_ROWS);\n const rows: JustifiedRow[] = shown.map(row);\n let summary = `${touched.length} applied`;\n if (failed > 0) summary += ` · ${failed} failed`;\n if (touched.length > shown.length) summary += ' · ctrl+o';\n // Failed entries get no row: there is no task to render, and their messages\n // are already in the text the model was given.\n const mark = failed > 0 ? theme.fg('warning', '!') : theme.fg('success', '✓');\n rows.push({ left: mark + theme.fg('dim', ` ${summary}`) });\n return new JustifiedRows(rows);\n }\n\n const task = subjectTask(details);\n if (!task) return new Text(theme.fg('success', '✓'), 0, 0);\n return new JustifiedRows([row(task)]);\n}\n\nexport function renderTaskResult(result: TaskResultLike, options: TaskResultOptions, theme: Theme): Component {\n return new TaskResultFrame(renderTaskResultBody(result, options, theme), theme);\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DelegationManager } from "
|
|
1
|
+
import { n as DelegationManager } from "./delegation-CTFGZtwp.mjs";
|
|
2
2
|
import { agentIdentityColor } from "@agimon-ai/doompi-ui/theme";
|
|
3
|
-
import { Text, truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
|
|
4
3
|
import { DoomToolCall, renderToolHeading } from "@agimon-ai/doompi-ui/toolChrome";
|
|
4
|
+
import { Text, truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
|
|
5
5
|
//#region src/extensions/workspaces/sessions/(frontend)/_shared/format.cli.ts
|
|
6
6
|
const STATUS_GLYPH = {
|
|
7
7
|
pending: "○",
|
|
@@ -317,6 +317,6 @@ function renderTaskResult(result, options, theme) {
|
|
|
317
317
|
return new TaskResultFrame(renderTaskResultBody(result, options, theme), theme);
|
|
318
318
|
}
|
|
319
319
|
//#endregion
|
|
320
|
-
export {
|
|
320
|
+
export { STATUS_LABEL as a, formatOverlayTaskLine as c, renderTaskCall as d, renderTaskResult as f, STATUS_GLYPH as i, formatTokenCount as l, JustifiedRows as n, formatCommandTaskLine as o, STATUS_COLOR as r, formatElapsedMs as s, ACTION_GLYPH as t, overlayStatusGlyph as u };
|
|
321
321
|
|
|
322
|
-
//# sourceMappingURL=format.cli.mjs.map
|
|
322
|
+
//# sourceMappingURL=format.cli-CuTlvk8J.mjs.map
|