@agimon-ai/doompi-team 0.0.1-alpha.30 → 0.0.1-alpha.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/capabilityCeiling.cjs +1 -1
- package/dist/api/capabilityCeiling.d.cts +3 -4
- package/dist/api/capabilityCeiling.d.mts +3 -4
- package/dist/api/capabilityCeiling.mjs +1 -1
- package/dist/api/capabilityCeiling.mjs.map +1 -1
- package/dist/api/teamSnapshot.cjs +1 -1
- package/dist/api/teamSnapshot.d.cts +1 -1
- package/dist/api/teamSnapshot.d.mts +1 -1
- package/dist/api/teamSnapshot.mjs +1 -1
- package/dist/env.cjs +1 -1
- package/dist/env.d.cts +1 -1
- package/dist/env.d.mts +1 -1
- package/dist/env.mjs +1 -1
- package/dist/env.mjs.map +1 -1
- package/dist/extensions/subagentPromptRuntimeEntry.cjs +1 -1
- package/dist/extensions/subagentPromptRuntimeEntry.cjs.map +1 -1
- package/dist/extensions/subagentPromptRuntimeEntry.d.cts +1 -1
- package/dist/extensions/subagentPromptRuntimeEntry.d.mts +1 -1
- package/dist/extensions/subagentPromptRuntimeEntry.mjs +1 -1
- package/dist/extensions/subagentPromptRuntimeEntry.mjs.map +1 -1
- package/dist/runs/background/cliRunnerEntry.cjs +2 -1
- package/dist/runs/background/cliRunnerEntry.cjs.map +1 -0
- package/dist/runs/background/cliRunnerEntry.mjs +2 -1
- package/dist/runs/background/cliRunnerEntry.mjs.map +1 -0
- package/dist/runs/sdkRunnerEntry.cjs +2 -1
- package/dist/runs/sdkRunnerEntry.cjs.map +1 -0
- package/dist/runs/sdkRunnerEntry.d.cts +5 -2
- package/dist/runs/sdkRunnerEntry.d.cts.map +1 -0
- package/dist/runs/sdkRunnerEntry.d.mts +5 -2
- package/dist/runs/sdkRunnerEntry.d.mts.map +1 -0
- package/dist/runs/sdkRunnerEntry.mjs +2 -1
- package/dist/runs/sdkRunnerEntry.mjs.map +1 -0
- package/dist/src/adapters/agents/discovery.cjs +2 -0
- package/dist/src/adapters/agents/discovery.cjs.map +1 -0
- package/dist/src/adapters/agents/discovery.mjs +2 -0
- package/dist/src/adapters/agents/discovery.mjs.map +1 -0
- package/dist/src/{services → adapters}/agents/frontmatter.cjs.map +1 -1
- package/dist/src/{services → adapters}/agents/frontmatter.mjs.map +1 -1
- package/dist/src/adapters/agents/loader.cjs +2 -0
- package/dist/src/adapters/agents/loader.cjs.map +1 -0
- package/dist/src/adapters/agents/loader.mjs +2 -0
- package/dist/src/adapters/agents/loader.mjs.map +1 -0
- package/dist/src/adapters/agents/memory.cjs.map +1 -0
- package/dist/src/adapters/agents/memory.mjs.map +1 -0
- package/dist/src/adapters/agents/projectRoot.cjs +2 -0
- package/dist/src/adapters/agents/projectRoot.cjs.map +1 -0
- package/dist/src/adapters/agents/projectRoot.mjs +2 -0
- package/dist/src/adapters/agents/projectRoot.mjs.map +1 -0
- package/dist/src/adapters/agents/settings.cjs +2 -0
- package/dist/src/adapters/agents/settings.cjs.map +1 -0
- package/dist/src/adapters/agents/settings.mjs +2 -0
- package/dist/src/adapters/agents/settings.mjs.map +1 -0
- package/dist/src/{services → adapters}/agents/skills.cjs +0 -0
- package/dist/src/adapters/agents/skills.cjs.map +1 -0
- package/dist/src/{services → adapters}/agents/skills.mjs +0 -0
- package/dist/src/adapters/agents/skills.mjs.map +1 -0
- package/dist/src/{services → adapters}/agents/types.d.cts +1 -1
- package/dist/src/{services → adapters}/agents/types.d.cts.map +1 -1
- package/dist/src/{services → adapters}/agents/types.d.mts +1 -1
- package/dist/src/{services → adapters}/agents/types.d.mts.map +1 -1
- package/dist/src/adapters/api/teamSnapshot.cjs +3 -0
- package/dist/src/adapters/api/teamSnapshot.cjs.map +1 -0
- package/dist/src/{services → adapters}/api/teamSnapshot.d.cts +2 -3
- package/dist/src/adapters/api/teamSnapshot.d.cts.map +1 -0
- package/dist/src/{services → adapters}/api/teamSnapshot.d.mts +2 -3
- package/dist/src/adapters/api/teamSnapshot.d.mts.map +1 -0
- package/dist/src/adapters/api/teamSnapshot.mjs +3 -0
- package/dist/src/adapters/api/teamSnapshot.mjs.map +1 -0
- package/dist/src/adapters/asyncJobTracker.cjs +1 -1
- package/dist/src/adapters/asyncJobTracker.cjs.map +1 -1
- package/dist/src/adapters/asyncJobTracker.mjs +1 -1
- package/dist/src/adapters/asyncJobTracker.mjs.map +1 -1
- package/dist/src/adapters/atomicJson.cjs +1 -1
- package/dist/src/adapters/atomicJson.cjs.map +1 -1
- package/dist/src/adapters/atomicJson.mjs +1 -1
- package/dist/src/adapters/atomicJson.mjs.map +1 -1
- package/dist/src/adapters/filesystem/artifacts.cjs +2 -0
- package/dist/src/adapters/filesystem/artifacts.cjs.map +1 -0
- package/dist/src/adapters/filesystem/artifacts.mjs +2 -0
- package/dist/src/adapters/filesystem/artifacts.mjs.map +1 -0
- package/dist/src/adapters/filesystem/configDir.cjs +2 -0
- package/dist/src/adapters/filesystem/configDir.cjs.map +1 -0
- package/dist/src/adapters/filesystem/configDir.mjs +2 -0
- package/dist/src/{shared/configDir.cjs.map → adapters/filesystem/configDir.mjs.map} +1 -1
- package/dist/src/adapters/filesystem/fileSystemRetry.cjs.map +1 -0
- package/dist/src/adapters/filesystem/fileSystemRetry.mjs +2 -0
- package/dist/src/adapters/filesystem/fileSystemRetry.mjs.map +1 -0
- package/dist/src/adapters/filesystem/paths.cjs +2 -0
- package/dist/src/adapters/filesystem/paths.cjs.map +1 -0
- package/dist/src/adapters/filesystem/paths.mjs +2 -0
- package/dist/src/adapters/filesystem/paths.mjs.map +1 -0
- package/dist/src/adapters/intercom/nativeTeamChannel.cjs +4 -4
- package/dist/src/adapters/intercom/nativeTeamChannel.cjs.map +1 -1
- package/dist/src/adapters/intercom/nativeTeamChannel.mjs +4 -4
- package/dist/src/adapters/intercom/nativeTeamChannel.mjs.map +1 -1
- package/dist/src/adapters/intercom/supervisorControlChannel.cjs +2 -0
- package/dist/src/adapters/intercom/supervisorControlChannel.cjs.map +1 -0
- package/dist/src/adapters/intercom/supervisorControlChannel.mjs +2 -0
- package/dist/src/{services/intercom/supervisorControlChannel.cjs.map → adapters/intercom/supervisorControlChannel.mjs.map} +1 -1
- package/dist/src/adapters/pi/collaboration.cjs.map +1 -1
- package/dist/src/adapters/pi/collaboration.mjs.map +1 -1
- package/dist/src/adapters/pi/commands/slash/chainExpression.cjs.map +1 -0
- package/dist/src/adapters/pi/commands/slash/chainExpression.mjs.map +1 -0
- package/dist/src/adapters/pi/commands/slash/doctor.cjs +5 -0
- package/dist/src/adapters/pi/commands/slash/doctor.cjs.map +1 -0
- package/dist/src/adapters/pi/commands/slash/doctor.mjs +5 -0
- package/dist/src/adapters/pi/commands/slash/doctor.mjs.map +1 -0
- package/dist/src/{commands → adapters/pi/commands}/slash/slashCommands.cjs +1 -1
- package/dist/src/adapters/pi/commands/slash/slashCommands.cjs.map +1 -0
- package/dist/src/{commands → adapters/pi/commands}/slash/slashCommands.mjs +2 -2
- package/dist/src/adapters/pi/commands/slash/slashCommands.mjs.map +1 -0
- package/dist/src/adapters/pi/commands/slash/spawnRequestMapping.cjs.map +1 -0
- package/dist/src/adapters/pi/commands/slash/spawnRequestMapping.mjs.map +1 -0
- package/dist/src/adapters/pi/commands/slash/subagentLaunch.cjs +2 -0
- package/dist/src/adapters/pi/commands/slash/subagentLaunch.cjs.map +1 -0
- package/dist/src/adapters/pi/commands/slash/subagentLaunch.mjs +2 -0
- package/dist/src/adapters/pi/commands/slash/subagentLaunch.mjs.map +1 -0
- package/dist/src/adapters/pi/extension.cjs +1 -1
- package/dist/src/adapters/pi/extension.cjs.map +1 -1
- package/dist/src/adapters/pi/extension.mjs +1 -1
- package/dist/src/adapters/pi/extension.mjs.map +1 -1
- package/dist/src/adapters/pi/extensions/config.cjs +2 -0
- package/dist/src/adapters/pi/extensions/config.cjs.map +1 -0
- package/dist/src/adapters/pi/extensions/config.mjs +2 -0
- package/dist/src/adapters/pi/extensions/config.mjs.map +1 -0
- package/dist/src/adapters/pi/extensions/delegationBridge.cjs.map +1 -0
- package/dist/src/adapters/pi/extensions/delegationBridge.mjs.map +1 -0
- package/dist/src/{extensions → adapters/pi/extensions}/fablePlanBridge.cjs +1 -1
- package/dist/src/adapters/pi/extensions/fablePlanBridge.cjs.map +1 -0
- package/dist/src/adapters/pi/extensions/fablePlanBridge.mjs +2 -0
- package/dist/src/adapters/pi/extensions/fablePlanBridge.mjs.map +1 -0
- package/dist/src/adapters/pi/extensions/managementActions.cjs +2 -0
- package/dist/src/adapters/pi/extensions/managementActions.cjs.map +1 -0
- package/dist/src/adapters/pi/extensions/managementActions.mjs +2 -0
- package/dist/src/adapters/pi/extensions/managementActions.mjs.map +1 -0
- package/dist/src/adapters/pi/extensions/operationJournal.cjs +2 -0
- package/dist/src/adapters/pi/extensions/operationJournal.cjs.map +1 -0
- package/dist/src/adapters/pi/extensions/operationJournal.mjs +2 -0
- package/dist/src/adapters/pi/extensions/operationJournal.mjs.map +1 -0
- package/dist/src/adapters/pi/extensions/orchestratorPrompt.cjs.map +1 -0
- package/dist/src/adapters/pi/extensions/orchestratorPrompt.mjs.map +1 -0
- package/dist/src/{extensions → adapters/pi/extensions}/spawnPlan.cjs +3 -3
- package/dist/src/adapters/pi/extensions/spawnPlan.cjs.map +1 -0
- package/dist/src/{extensions → adapters/pi/extensions}/spawnPlan.mjs +3 -3
- package/dist/src/adapters/pi/extensions/spawnPlan.mjs.map +1 -0
- package/dist/src/adapters/pi/extensions/statusViews.cjs +7 -0
- package/dist/src/adapters/pi/extensions/statusViews.cjs.map +1 -0
- package/dist/src/adapters/pi/extensions/statusViews.mjs +7 -0
- package/dist/src/adapters/pi/extensions/statusViews.mjs.map +1 -0
- package/dist/src/{extensions → adapters/pi/extensions}/subagentPromptRuntime.cjs +3 -3
- package/dist/src/adapters/pi/extensions/subagentPromptRuntime.cjs.map +1 -0
- package/dist/src/{extensions → adapters/pi/extensions}/subagentPromptRuntime.d.cts +5 -5
- package/dist/src/adapters/pi/extensions/subagentPromptRuntime.d.cts.map +1 -0
- package/dist/src/{extensions → adapters/pi/extensions}/subagentPromptRuntime.d.mts +4 -4
- package/dist/src/adapters/pi/extensions/subagentPromptRuntime.d.mts.map +1 -0
- package/dist/src/adapters/pi/extensions/subagentPromptRuntime.mjs +19 -0
- package/dist/src/adapters/pi/extensions/subagentPromptRuntime.mjs.map +1 -0
- package/dist/src/adapters/pi/extensions/subagentTool.cjs +6 -0
- package/dist/src/adapters/pi/extensions/subagentTool.cjs.map +1 -0
- package/dist/src/adapters/pi/extensions/subagentTool.mjs +6 -0
- package/dist/src/adapters/pi/extensions/subagentTool.mjs.map +1 -0
- package/dist/src/adapters/pi/extensions/toolDescription.cjs +2 -0
- package/dist/src/adapters/pi/extensions/toolDescription.cjs.map +1 -0
- package/dist/src/adapters/pi/extensions/toolDescription.mjs +2 -0
- package/dist/src/adapters/pi/extensions/toolDescription.mjs.map +1 -0
- package/dist/src/adapters/pi/promptRuntime.cjs +1 -1
- package/dist/src/adapters/pi/promptRuntime.cjs.map +1 -1
- package/dist/src/adapters/pi/promptRuntime.mjs +1 -1
- package/dist/src/adapters/pi/promptRuntime.mjs.map +1 -1
- package/dist/src/adapters/pi/standard.cjs.map +1 -1
- package/dist/src/adapters/pi/standard.d.cts +1 -1
- package/dist/src/adapters/pi/standard.mjs.map +1 -1
- package/dist/src/adapters/pi/teamRuntime.cjs +1 -1
- package/dist/src/adapters/pi/teamRuntime.cjs.map +1 -1
- package/dist/src/adapters/pi/teamRuntime.mjs +1 -1
- package/dist/src/adapters/pi/teamRuntime.mjs.map +1 -1
- package/dist/src/adapters/pi/tui/agentCatalog.cjs.map +1 -0
- package/dist/src/adapters/pi/tui/agentCatalog.mjs.map +1 -0
- package/dist/src/adapters/pi/tui/agentResourceProjection.cjs +2 -0
- package/dist/src/adapters/pi/tui/agentResourceProjection.cjs.map +1 -0
- package/dist/src/adapters/pi/tui/agentResourceProjection.mjs +2 -0
- package/dist/src/adapters/pi/tui/agentResourceProjection.mjs.map +1 -0
- package/dist/src/{tui → adapters/pi/tui}/completionNotice.cjs +1 -1
- package/dist/src/adapters/pi/tui/completionNotice.cjs.map +1 -0
- package/dist/src/{tui → adapters/pi/tui}/completionNotice.mjs +1 -1
- package/dist/src/adapters/pi/tui/completionNotice.mjs.map +1 -0
- package/dist/src/adapters/pi/tui/fleet.cjs +3 -0
- package/dist/src/adapters/pi/tui/fleet.cjs.map +1 -0
- package/dist/src/adapters/pi/tui/fleet.mjs +3 -0
- package/dist/src/adapters/pi/tui/fleet.mjs.map +1 -0
- package/dist/src/adapters/pi/tui/fleetAgentView.cjs +2 -0
- package/dist/src/adapters/pi/tui/fleetAgentView.cjs.map +1 -0
- package/dist/src/adapters/pi/tui/fleetAgentView.mjs +2 -0
- package/dist/src/adapters/pi/tui/fleetAgentView.mjs.map +1 -0
- package/dist/src/adapters/pi/tui/fleetStatus.cjs +2 -0
- package/dist/src/adapters/pi/tui/fleetStatus.cjs.map +1 -0
- package/dist/src/adapters/pi/tui/fleetStatus.mjs +2 -0
- package/dist/src/adapters/pi/tui/fleetStatus.mjs.map +1 -0
- package/dist/src/{tui → adapters/pi/tui}/fleetTranscript.cjs +1 -1
- package/dist/src/adapters/pi/tui/fleetTranscript.cjs.map +1 -0
- package/dist/src/{tui → adapters/pi/tui}/fleetTranscript.mjs +1 -1
- package/dist/src/adapters/pi/tui/fleetTranscript.mjs.map +1 -0
- package/dist/src/adapters/pi/tui/formatters.cjs +2 -0
- package/dist/src/adapters/pi/tui/formatters.cjs.map +1 -0
- package/dist/src/adapters/pi/tui/formatters.mjs +2 -0
- package/dist/src/adapters/pi/tui/formatters.mjs.map +1 -0
- package/dist/src/adapters/pi/tui/register.cjs +2 -0
- package/dist/src/adapters/pi/tui/register.cjs.map +1 -0
- package/dist/src/adapters/pi/tui/register.mjs +2 -0
- package/dist/src/adapters/pi/tui/register.mjs.map +1 -0
- package/dist/src/adapters/pi/tui/subagentToolRender.cjs.map +1 -0
- package/dist/src/adapters/pi/tui/subagentToolRender.mjs.map +1 -0
- package/dist/src/adapters/pollScheduler.cjs.map +1 -1
- package/dist/src/adapters/pollScheduler.mjs.map +1 -1
- package/dist/src/adapters/processTerminal.cjs +1 -1
- package/dist/src/adapters/processTerminal.cjs.map +1 -1
- package/dist/src/adapters/processTerminal.mjs +1 -1
- package/dist/src/adapters/processTerminal.mjs.map +1 -1
- package/dist/src/adapters/resultWatcher.cjs +1 -1
- package/dist/src/adapters/resultWatcher.cjs.map +1 -1
- package/dist/src/adapters/resultWatcher.mjs +1 -1
- package/dist/src/adapters/resultWatcher.mjs.map +1 -1
- package/dist/src/adapters/runIdResolver.cjs +1 -1
- package/dist/src/adapters/runIdResolver.cjs.map +1 -1
- package/dist/src/adapters/runIdResolver.mjs +1 -1
- package/dist/src/adapters/runIdResolver.mjs.map +1 -1
- package/dist/src/adapters/runRegistry.cjs +1 -1
- package/dist/src/adapters/runRegistry.cjs.map +1 -1
- package/dist/src/adapters/runRegistry.mjs +1 -1
- package/dist/src/adapters/runRegistry.mjs.map +1 -1
- package/dist/src/adapters/runs/background/asyncExecution.cjs +2 -0
- package/dist/src/adapters/runs/background/asyncExecution.cjs.map +1 -0
- package/dist/src/adapters/runs/background/asyncExecution.mjs +2 -0
- package/dist/src/adapters/runs/background/asyncExecution.mjs.map +1 -0
- package/dist/src/{services → adapters}/runs/background/completionBatcher.cjs.map +1 -1
- package/dist/src/{services → adapters}/runs/background/completionBatcher.mjs.map +1 -1
- package/dist/src/adapters/runs/background/notify.cjs.map +1 -0
- package/dist/src/adapters/runs/background/notify.mjs.map +1 -0
- package/dist/src/{services → adapters}/runs/background/parentWatchdog.cjs.map +1 -1
- package/dist/src/{services → adapters}/runs/background/parentWatchdog.mjs.map +1 -1
- package/dist/src/adapters/runs/background/runnerBootstrap.cjs +2 -0
- package/dist/src/adapters/runs/background/runnerBootstrap.cjs.map +1 -0
- package/dist/src/adapters/runs/background/runnerBootstrap.mjs +2 -0
- package/dist/src/adapters/runs/background/runnerBootstrap.mjs.map +1 -0
- package/dist/src/adapters/runs/background/runnerExecution.cjs.map +1 -0
- package/dist/src/adapters/runs/background/runnerExecution.mjs.map +1 -0
- package/dist/src/{services → adapters}/runs/background/runnerReporting.cjs +1 -1
- package/dist/src/adapters/runs/background/runnerReporting.cjs.map +1 -0
- package/dist/src/{services → adapters}/runs/background/runnerReporting.mjs +2 -2
- package/dist/src/adapters/runs/background/runnerReporting.mjs.map +1 -0
- package/dist/src/adapters/runs/background/runnerTeamMembership.cjs +2 -0
- package/dist/src/adapters/runs/background/runnerTeamMembership.cjs.map +1 -0
- package/dist/src/adapters/runs/background/runnerTeamMembership.mjs +2 -0
- package/dist/src/adapters/runs/background/runnerTeamMembership.mjs.map +1 -0
- package/dist/src/adapters/runs/background/spawnHandshake.cjs.map +1 -0
- package/dist/src/adapters/runs/background/spawnHandshake.mjs.map +1 -0
- package/dist/src/adapters/runs/background/statusWriter.cjs +2 -0
- package/dist/src/adapters/runs/background/statusWriter.cjs.map +1 -0
- package/dist/src/adapters/runs/background/statusWriter.mjs +2 -0
- package/dist/src/adapters/runs/background/statusWriter.mjs.map +1 -0
- package/dist/src/adapters/runs/background/subagentWait.cjs.map +1 -0
- package/dist/src/adapters/runs/background/subagentWait.mjs.map +1 -0
- package/dist/src/adapters/runs/background/terminalPersistence.cjs +2 -0
- package/dist/src/adapters/runs/background/terminalPersistence.cjs.map +1 -0
- package/dist/src/adapters/runs/background/terminalPersistence.mjs +2 -0
- package/dist/src/adapters/runs/background/terminalPersistence.mjs.map +1 -0
- package/dist/src/{services → adapters}/runs/registry/processGroup.cjs.map +1 -1
- package/dist/src/{services → adapters}/runs/registry/processGroup.mjs.map +1 -1
- package/dist/src/adapters/runs/registry/sessionLifecycle.cjs +2 -0
- package/dist/src/adapters/runs/registry/sessionLifecycle.cjs.map +1 -0
- package/dist/src/adapters/runs/registry/sessionLifecycle.mjs +2 -0
- package/dist/src/adapters/runs/registry/sessionLifecycle.mjs.map +1 -0
- package/dist/src/adapters/runs/shared/claudeFableProfile.cjs +4 -0
- package/dist/src/adapters/runs/shared/claudeFableProfile.cjs.map +1 -0
- package/dist/src/adapters/runs/shared/claudeFableProfile.mjs +4 -0
- package/dist/src/adapters/runs/shared/claudeFableProfile.mjs.map +1 -0
- package/dist/src/adapters/runs/shared/depthGuard.cjs +2 -0
- package/dist/src/adapters/runs/shared/depthGuard.cjs.map +1 -0
- package/dist/src/adapters/runs/shared/depthGuard.mjs +2 -0
- package/dist/src/adapters/runs/shared/depthGuard.mjs.map +1 -0
- package/dist/src/{services → adapters}/runs/shared/mcpDirectToolAllowlist.cjs.map +1 -1
- package/dist/src/{services → adapters}/runs/shared/mcpDirectToolAllowlist.mjs.map +1 -1
- package/dist/src/adapters/runs/shared/modelFallback.cjs +2 -0
- package/dist/src/adapters/runs/shared/modelFallback.cjs.map +1 -0
- package/dist/src/adapters/runs/shared/modelFallback.mjs +2 -0
- package/dist/src/adapters/runs/shared/modelFallback.mjs.map +1 -0
- package/dist/src/adapters/runs/shared/modelScope.cjs +2 -0
- package/dist/src/adapters/runs/shared/modelScope.cjs.map +1 -0
- package/dist/src/adapters/runs/shared/modelScope.mjs +2 -0
- package/dist/src/adapters/runs/shared/modelScope.mjs.map +1 -0
- package/dist/src/{services → adapters}/runs/shared/nestedPath.cjs.map +1 -1
- package/dist/src/{services → adapters}/runs/shared/nestedPath.mjs.map +1 -1
- package/dist/src/adapters/runs/shared/piArgs.cjs +2 -0
- package/dist/src/adapters/runs/shared/piArgs.cjs.map +1 -0
- package/dist/src/{services → adapters}/runs/shared/piArgs.d.cts +1 -1
- package/dist/src/{services → adapters}/runs/shared/piArgs.d.mts +1 -1
- package/dist/src/adapters/runs/shared/piArgs.mjs +2 -0
- package/dist/src/adapters/runs/shared/piArgs.mjs.map +1 -0
- package/dist/src/adapters/runs/shared/piSpawn.cjs +2 -0
- package/dist/src/adapters/runs/shared/piSpawn.cjs.map +1 -0
- package/dist/src/adapters/runs/shared/piSpawn.mjs +2 -0
- package/dist/src/adapters/runs/shared/piSpawn.mjs.map +1 -0
- package/dist/src/{services → adapters}/runs/shared/runWithConcurrency.cjs.map +1 -1
- package/dist/src/{services → adapters}/runs/shared/runWithConcurrency.mjs.map +1 -1
- package/dist/src/adapters/runs/shared/runtimeRegistry.cjs +2 -0
- package/dist/src/adapters/runs/shared/runtimeRegistry.cjs.map +1 -0
- package/dist/src/adapters/runs/shared/runtimeRegistry.mjs +2 -0
- package/dist/src/adapters/runs/shared/runtimeRegistry.mjs.map +1 -0
- package/dist/src/adapters/runs/shared/structuredOutput.cjs +2 -0
- package/dist/src/adapters/runs/shared/structuredOutput.cjs.map +1 -0
- package/dist/src/adapters/runs/shared/structuredOutput.mjs +2 -0
- package/dist/src/adapters/runs/shared/structuredOutput.mjs.map +1 -0
- package/dist/src/adapters/runs/shared/toolAvailability.cjs +2 -0
- package/dist/src/adapters/runs/shared/toolAvailability.cjs.map +1 -0
- package/dist/src/adapters/runs/shared/toolAvailability.mjs +2 -0
- package/dist/src/adapters/runs/shared/toolAvailability.mjs.map +1 -0
- package/dist/src/adapters/runs/shared/toolBudget.cjs +2 -0
- package/dist/src/adapters/runs/shared/toolBudget.cjs.map +1 -0
- package/dist/src/adapters/runs/shared/toolBudget.mjs +2 -0
- package/dist/src/adapters/runs/shared/toolBudget.mjs.map +1 -0
- package/dist/src/adapters/scopeOwner.cjs +1 -1
- package/dist/src/adapters/scopeOwner.cjs.map +1 -1
- package/dist/src/adapters/scopeOwner.mjs +1 -1
- package/dist/src/adapters/scopeOwner.mjs.map +1 -1
- package/dist/src/adapters/staleRunReconciler.cjs +1 -1
- package/dist/src/adapters/staleRunReconciler.cjs.map +1 -1
- package/dist/src/adapters/staleRunReconciler.mjs +1 -1
- package/dist/src/adapters/staleRunReconciler.mjs.map +1 -1
- package/dist/src/adapters/statusReader.cjs +1 -1
- package/dist/src/adapters/statusReader.cjs.map +1 -1
- package/dist/src/adapters/statusReader.mjs +1 -1
- package/dist/src/adapters/statusReader.mjs.map +1 -1
- package/dist/src/adapters/subagentLaunchContract.cjs +1 -1
- package/dist/src/adapters/subagentLaunchContract.cjs.map +1 -1
- package/dist/src/adapters/subagentLaunchContract.d.cts +1 -1
- package/dist/src/adapters/subagentLaunchContract.d.mts +1 -1
- package/dist/src/adapters/subagentLaunchContract.mjs +1 -1
- package/dist/src/adapters/subagentLaunchContract.mjs.map +1 -1
- package/dist/src/adapters/suspendedRuns.cjs +1 -1
- package/dist/src/adapters/suspendedRuns.cjs.map +1 -1
- package/dist/src/adapters/suspendedRuns.mjs +1 -1
- package/dist/src/adapters/suspendedRuns.mjs.map +1 -1
- package/dist/src/schemas/team/capabilityCeiling.cjs +1 -1
- package/dist/src/schemas/team/capabilityCeiling.cjs.map +1 -1
- package/dist/src/schemas/team/capabilityCeiling.d.cts +11 -3
- package/dist/src/schemas/team/capabilityCeiling.d.cts.map +1 -1
- package/dist/src/schemas/team/capabilityCeiling.d.mts +11 -3
- package/dist/src/schemas/team/capabilityCeiling.d.mts.map +1 -1
- package/dist/src/schemas/team/capabilityCeiling.mjs +1 -1
- package/dist/src/schemas/team/capabilityCeiling.mjs.map +1 -1
- package/dist/src/services/models/modelInfo.cjs.map +1 -0
- package/dist/src/services/models/modelInfo.mjs +2 -0
- package/dist/src/services/models/modelInfo.mjs.map +1 -0
- package/dist/src/services/models/modelResolution.cjs.map +1 -0
- package/dist/src/services/models/modelResolution.mjs.map +1 -0
- package/dist/src/services/subagentPolicyService.cjs.map +1 -1
- package/dist/src/services/subagentPolicyService.mjs.map +1 -1
- package/dist/src/services/support/boundedKeySet.cjs.map +1 -0
- package/dist/src/services/support/boundedKeySet.mjs +2 -0
- package/dist/src/services/support/boundedKeySet.mjs.map +1 -0
- package/dist/src/services/support/errors.cjs.map +1 -0
- package/dist/src/services/support/errors.mjs +2 -0
- package/dist/src/services/support/errors.mjs.map +1 -0
- package/dist/src/services/support/lruCache.cjs.map +1 -0
- package/dist/src/services/support/lruCache.mjs +2 -0
- package/dist/src/services/support/lruCache.mjs.map +1 -0
- package/dist/src/services/support/versioned.cjs.map +1 -0
- package/dist/src/services/support/versioned.mjs +2 -0
- package/dist/src/services/support/versioned.mjs.map +1 -0
- package/dist/src/{adapters/process/env.cjs → types/environment.cjs} +1 -1
- package/dist/src/types/environment.cjs.map +1 -0
- package/dist/src/{adapters/process/env.d.mts → types/environment.d.cts} +2 -2
- package/dist/src/types/environment.d.cts.map +1 -0
- package/dist/src/{adapters/process/env.d.cts → types/environment.d.mts} +2 -2
- package/dist/src/types/environment.d.mts.map +1 -0
- package/dist/src/types/environment.mjs +2 -0
- package/dist/src/types/environment.mjs.map +1 -0
- package/package.json +5 -5
- package/dist/src/adapters/process/env.cjs.map +0 -1
- package/dist/src/adapters/process/env.d.cts.map +0 -1
- package/dist/src/adapters/process/env.d.mts.map +0 -1
- package/dist/src/adapters/process/env.mjs +0 -2
- package/dist/src/adapters/process/env.mjs.map +0 -1
- package/dist/src/adapters/process/sdkRunnerEntry.cjs +0 -2
- package/dist/src/adapters/process/sdkRunnerEntry.cjs.map +0 -1
- package/dist/src/adapters/process/sdkRunnerEntry.d.cts +0 -5
- package/dist/src/adapters/process/sdkRunnerEntry.d.cts.map +0 -1
- package/dist/src/adapters/process/sdkRunnerEntry.d.mts +0 -5
- package/dist/src/adapters/process/sdkRunnerEntry.d.mts.map +0 -1
- package/dist/src/adapters/process/sdkRunnerEntry.mjs +0 -2
- package/dist/src/adapters/process/sdkRunnerEntry.mjs.map +0 -1
- package/dist/src/commands/slash/chainExpression.cjs.map +0 -1
- package/dist/src/commands/slash/chainExpression.mjs.map +0 -1
- package/dist/src/commands/slash/doctor.cjs +0 -5
- package/dist/src/commands/slash/doctor.cjs.map +0 -1
- package/dist/src/commands/slash/doctor.mjs +0 -5
- package/dist/src/commands/slash/doctor.mjs.map +0 -1
- package/dist/src/commands/slash/slashCommands.cjs.map +0 -1
- package/dist/src/commands/slash/slashCommands.mjs.map +0 -1
- package/dist/src/commands/slash/spawnRequestMapping.cjs.map +0 -1
- package/dist/src/commands/slash/spawnRequestMapping.mjs.map +0 -1
- package/dist/src/commands/slash/subagentLaunch.cjs +0 -2
- package/dist/src/commands/slash/subagentLaunch.cjs.map +0 -1
- package/dist/src/commands/slash/subagentLaunch.mjs +0 -2
- package/dist/src/commands/slash/subagentLaunch.mjs.map +0 -1
- package/dist/src/extensions/config.cjs +0 -2
- package/dist/src/extensions/config.cjs.map +0 -1
- package/dist/src/extensions/config.mjs +0 -2
- package/dist/src/extensions/config.mjs.map +0 -1
- package/dist/src/extensions/delegationBridge.cjs.map +0 -1
- package/dist/src/extensions/delegationBridge.mjs.map +0 -1
- package/dist/src/extensions/fablePlanBridge.cjs.map +0 -1
- package/dist/src/extensions/fablePlanBridge.mjs +0 -2
- package/dist/src/extensions/fablePlanBridge.mjs.map +0 -1
- package/dist/src/extensions/managementActions.cjs +0 -2
- package/dist/src/extensions/managementActions.cjs.map +0 -1
- package/dist/src/extensions/managementActions.mjs +0 -2
- package/dist/src/extensions/managementActions.mjs.map +0 -1
- package/dist/src/extensions/operationJournal.cjs +0 -2
- package/dist/src/extensions/operationJournal.cjs.map +0 -1
- package/dist/src/extensions/operationJournal.mjs +0 -2
- package/dist/src/extensions/operationJournal.mjs.map +0 -1
- package/dist/src/extensions/orchestratorPrompt.cjs.map +0 -1
- package/dist/src/extensions/orchestratorPrompt.mjs.map +0 -1
- package/dist/src/extensions/schemas.cjs +0 -1
- package/dist/src/extensions/schemas.mjs +0 -1
- package/dist/src/extensions/spawnPlan.cjs.map +0 -1
- package/dist/src/extensions/spawnPlan.mjs.map +0 -1
- package/dist/src/extensions/statusViews.cjs +0 -7
- package/dist/src/extensions/statusViews.cjs.map +0 -1
- package/dist/src/extensions/statusViews.mjs +0 -7
- package/dist/src/extensions/statusViews.mjs.map +0 -1
- package/dist/src/extensions/subagentPromptRuntime.cjs.map +0 -1
- package/dist/src/extensions/subagentPromptRuntime.d.cts.map +0 -1
- package/dist/src/extensions/subagentPromptRuntime.d.mts.map +0 -1
- package/dist/src/extensions/subagentPromptRuntime.mjs +0 -19
- package/dist/src/extensions/subagentPromptRuntime.mjs.map +0 -1
- package/dist/src/extensions/subagentTool.cjs +0 -6
- package/dist/src/extensions/subagentTool.cjs.map +0 -1
- package/dist/src/extensions/subagentTool.mjs +0 -6
- package/dist/src/extensions/subagentTool.mjs.map +0 -1
- package/dist/src/extensions/toolDescription.cjs +0 -2
- package/dist/src/extensions/toolDescription.cjs.map +0 -1
- package/dist/src/extensions/toolDescription.mjs +0 -2
- package/dist/src/extensions/toolDescription.mjs.map +0 -1
- package/dist/src/services/agents/discovery.cjs +0 -2
- package/dist/src/services/agents/discovery.cjs.map +0 -1
- package/dist/src/services/agents/discovery.mjs +0 -2
- package/dist/src/services/agents/discovery.mjs.map +0 -1
- package/dist/src/services/agents/loader.cjs +0 -2
- package/dist/src/services/agents/loader.cjs.map +0 -1
- package/dist/src/services/agents/loader.mjs +0 -2
- package/dist/src/services/agents/loader.mjs.map +0 -1
- package/dist/src/services/agents/memory.cjs.map +0 -1
- package/dist/src/services/agents/memory.mjs.map +0 -1
- package/dist/src/services/agents/projectRoot.cjs +0 -2
- package/dist/src/services/agents/projectRoot.cjs.map +0 -1
- package/dist/src/services/agents/projectRoot.mjs +0 -2
- package/dist/src/services/agents/projectRoot.mjs.map +0 -1
- package/dist/src/services/agents/settings.cjs +0 -2
- package/dist/src/services/agents/settings.cjs.map +0 -1
- package/dist/src/services/agents/settings.mjs +0 -2
- package/dist/src/services/agents/settings.mjs.map +0 -1
- package/dist/src/services/agents/skills.cjs.map +0 -1
- package/dist/src/services/agents/skills.mjs.map +0 -1
- package/dist/src/services/api/capabilityCeiling.cjs +0 -1
- package/dist/src/services/api/capabilityCeiling.d.cts +0 -3
- package/dist/src/services/api/capabilityCeiling.d.mts +0 -3
- package/dist/src/services/api/capabilityCeiling.mjs +0 -2
- package/dist/src/services/api/capabilityCeiling.mjs.map +0 -1
- package/dist/src/services/api/teamSnapshot.cjs +0 -3
- package/dist/src/services/api/teamSnapshot.cjs.map +0 -1
- package/dist/src/services/api/teamSnapshot.d.cts.map +0 -1
- package/dist/src/services/api/teamSnapshot.d.mts.map +0 -1
- package/dist/src/services/api/teamSnapshot.mjs +0 -3
- package/dist/src/services/api/teamSnapshot.mjs.map +0 -1
- package/dist/src/services/intercom/nativeTeamChannel.cjs +0 -1
- package/dist/src/services/intercom/nativeTeamChannel.d.cts +0 -2
- package/dist/src/services/intercom/nativeTeamChannel.d.mts +0 -2
- package/dist/src/services/intercom/nativeTeamChannel.mjs +0 -2
- package/dist/src/services/intercom/nativeTeamChannel.mjs.map +0 -1
- package/dist/src/services/intercom/supervisorControlChannel.cjs +0 -2
- package/dist/src/services/intercom/supervisorControlChannel.mjs +0 -2
- package/dist/src/services/intercom/supervisorControlChannel.mjs.map +0 -1
- package/dist/src/services/runs/background/asyncExecution.cjs +0 -2
- package/dist/src/services/runs/background/asyncExecution.cjs.map +0 -1
- package/dist/src/services/runs/background/asyncExecution.mjs +0 -2
- package/dist/src/services/runs/background/asyncExecution.mjs.map +0 -1
- package/dist/src/services/runs/background/asyncJobTracker.cjs +0 -1
- package/dist/src/services/runs/background/asyncJobTracker.mjs +0 -2
- package/dist/src/services/runs/background/asyncJobTracker.mjs.map +0 -1
- package/dist/src/services/runs/background/cliRunnerEntry.cjs +0 -2
- package/dist/src/services/runs/background/cliRunnerEntry.cjs.map +0 -1
- package/dist/src/services/runs/background/cliRunnerEntry.mjs +0 -2
- package/dist/src/services/runs/background/cliRunnerEntry.mjs.map +0 -1
- package/dist/src/services/runs/background/notify.cjs.map +0 -1
- package/dist/src/services/runs/background/notify.mjs.map +0 -1
- package/dist/src/services/runs/background/resultWatcher.cjs +0 -1
- package/dist/src/services/runs/background/resultWatcher.mjs +0 -2
- package/dist/src/services/runs/background/resultWatcher.mjs.map +0 -1
- package/dist/src/services/runs/background/runnerBootstrap.cjs +0 -2
- package/dist/src/services/runs/background/runnerBootstrap.cjs.map +0 -1
- package/dist/src/services/runs/background/runnerBootstrap.mjs +0 -2
- package/dist/src/services/runs/background/runnerBootstrap.mjs.map +0 -1
- package/dist/src/services/runs/background/runnerExecution.cjs.map +0 -1
- package/dist/src/services/runs/background/runnerExecution.mjs.map +0 -1
- package/dist/src/services/runs/background/runnerReporting.cjs.map +0 -1
- package/dist/src/services/runs/background/runnerReporting.mjs.map +0 -1
- package/dist/src/services/runs/background/runnerTeamMembership.cjs +0 -2
- package/dist/src/services/runs/background/runnerTeamMembership.cjs.map +0 -1
- package/dist/src/services/runs/background/runnerTeamMembership.mjs +0 -2
- package/dist/src/services/runs/background/runnerTeamMembership.mjs.map +0 -1
- package/dist/src/services/runs/background/spawnHandshake.cjs.map +0 -1
- package/dist/src/services/runs/background/spawnHandshake.mjs.map +0 -1
- package/dist/src/services/runs/background/statusReader.cjs +0 -1
- package/dist/src/services/runs/background/statusReader.mjs +0 -2
- package/dist/src/services/runs/background/statusReader.mjs.map +0 -1
- package/dist/src/services/runs/background/statusWriter.cjs +0 -2
- package/dist/src/services/runs/background/statusWriter.cjs.map +0 -1
- package/dist/src/services/runs/background/statusWriter.mjs +0 -2
- package/dist/src/services/runs/background/statusWriter.mjs.map +0 -1
- package/dist/src/services/runs/background/subagentWait.cjs.map +0 -1
- package/dist/src/services/runs/background/subagentWait.mjs.map +0 -1
- package/dist/src/services/runs/background/terminalPersistence.cjs +0 -2
- package/dist/src/services/runs/background/terminalPersistence.cjs.map +0 -1
- package/dist/src/services/runs/background/terminalPersistence.mjs +0 -2
- package/dist/src/services/runs/background/terminalPersistence.mjs.map +0 -1
- package/dist/src/services/runs/registry/runRegistry.cjs +0 -1
- package/dist/src/services/runs/registry/runRegistry.mjs +0 -2
- package/dist/src/services/runs/registry/runRegistry.mjs.map +0 -1
- package/dist/src/services/runs/registry/sessionLifecycle.cjs +0 -2
- package/dist/src/services/runs/registry/sessionLifecycle.cjs.map +0 -1
- package/dist/src/services/runs/registry/sessionLifecycle.mjs +0 -2
- package/dist/src/services/runs/registry/sessionLifecycle.mjs.map +0 -1
- package/dist/src/services/runs/registry/suspendedRuns.cjs +0 -1
- package/dist/src/services/runs/registry/suspendedRuns.mjs +0 -1
- package/dist/src/services/runs/sdkRunnerEntry.cjs +0 -1
- package/dist/src/services/runs/sdkRunnerEntry.mjs +0 -1
- package/dist/src/services/runs/shared/claudeFableProfile.cjs +0 -4
- package/dist/src/services/runs/shared/claudeFableProfile.cjs.map +0 -1
- package/dist/src/services/runs/shared/claudeFableProfile.mjs +0 -4
- package/dist/src/services/runs/shared/claudeFableProfile.mjs.map +0 -1
- package/dist/src/services/runs/shared/depthGuard.cjs +0 -2
- package/dist/src/services/runs/shared/depthGuard.cjs.map +0 -1
- package/dist/src/services/runs/shared/depthGuard.mjs +0 -2
- package/dist/src/services/runs/shared/depthGuard.mjs.map +0 -1
- package/dist/src/services/runs/shared/modelFallback.cjs +0 -2
- package/dist/src/services/runs/shared/modelFallback.cjs.map +0 -1
- package/dist/src/services/runs/shared/modelFallback.mjs +0 -2
- package/dist/src/services/runs/shared/modelFallback.mjs.map +0 -1
- package/dist/src/services/runs/shared/modelScope.cjs +0 -2
- package/dist/src/services/runs/shared/modelScope.cjs.map +0 -1
- package/dist/src/services/runs/shared/modelScope.mjs +0 -2
- package/dist/src/services/runs/shared/modelScope.mjs.map +0 -1
- package/dist/src/services/runs/shared/piArgs.cjs +0 -2
- package/dist/src/services/runs/shared/piArgs.cjs.map +0 -1
- package/dist/src/services/runs/shared/piArgs.mjs +0 -2
- package/dist/src/services/runs/shared/piArgs.mjs.map +0 -1
- package/dist/src/services/runs/shared/piSpawn.cjs +0 -2
- package/dist/src/services/runs/shared/piSpawn.cjs.map +0 -1
- package/dist/src/services/runs/shared/piSpawn.mjs +0 -2
- package/dist/src/services/runs/shared/piSpawn.mjs.map +0 -1
- package/dist/src/services/runs/shared/runtimeRegistry.cjs +0 -2
- package/dist/src/services/runs/shared/runtimeRegistry.cjs.map +0 -1
- package/dist/src/services/runs/shared/runtimeRegistry.mjs +0 -2
- package/dist/src/services/runs/shared/runtimeRegistry.mjs.map +0 -1
- package/dist/src/services/runs/shared/structuredOutput.cjs +0 -2
- package/dist/src/services/runs/shared/structuredOutput.cjs.map +0 -1
- package/dist/src/services/runs/shared/structuredOutput.mjs +0 -2
- package/dist/src/services/runs/shared/structuredOutput.mjs.map +0 -1
- package/dist/src/services/runs/shared/toolAvailability.cjs +0 -2
- package/dist/src/services/runs/shared/toolAvailability.cjs.map +0 -1
- package/dist/src/services/runs/shared/toolAvailability.mjs +0 -2
- package/dist/src/services/runs/shared/toolAvailability.mjs.map +0 -1
- package/dist/src/services/runs/shared/toolBudget.cjs +0 -2
- package/dist/src/services/runs/shared/toolBudget.cjs.map +0 -1
- package/dist/src/services/runs/shared/toolBudget.mjs +0 -2
- package/dist/src/services/runs/shared/toolBudget.mjs.map +0 -1
- package/dist/src/shared/artifacts.cjs +0 -2
- package/dist/src/shared/artifacts.cjs.map +0 -1
- package/dist/src/shared/artifacts.mjs +0 -2
- package/dist/src/shared/artifacts.mjs.map +0 -1
- package/dist/src/shared/atomicJson.cjs +0 -1
- package/dist/src/shared/atomicJson.mjs +0 -2
- package/dist/src/shared/atomicJson.mjs.map +0 -1
- package/dist/src/shared/boundedKeySet.cjs.map +0 -1
- package/dist/src/shared/boundedKeySet.mjs +0 -2
- package/dist/src/shared/boundedKeySet.mjs.map +0 -1
- package/dist/src/shared/childTranscript.cjs +0 -1
- package/dist/src/shared/childTranscript.mjs +0 -2
- package/dist/src/shared/childTranscript.mjs.map +0 -1
- package/dist/src/shared/configDir.cjs +0 -2
- package/dist/src/shared/configDir.mjs +0 -2
- package/dist/src/shared/configDir.mjs.map +0 -1
- package/dist/src/shared/errors.cjs.map +0 -1
- package/dist/src/shared/errors.mjs +0 -2
- package/dist/src/shared/errors.mjs.map +0 -1
- package/dist/src/shared/fileSystemRetry.cjs.map +0 -1
- package/dist/src/shared/fileSystemRetry.mjs +0 -2
- package/dist/src/shared/fileSystemRetry.mjs.map +0 -1
- package/dist/src/shared/formatters.cjs +0 -2
- package/dist/src/shared/formatters.cjs.map +0 -1
- package/dist/src/shared/formatters.mjs +0 -2
- package/dist/src/shared/formatters.mjs.map +0 -1
- package/dist/src/shared/lruCache.cjs.map +0 -1
- package/dist/src/shared/lruCache.mjs +0 -2
- package/dist/src/shared/lruCache.mjs.map +0 -1
- package/dist/src/shared/modelInfo.cjs.map +0 -1
- package/dist/src/shared/modelInfo.mjs +0 -2
- package/dist/src/shared/modelInfo.mjs.map +0 -1
- package/dist/src/shared/modelResolution.cjs.map +0 -1
- package/dist/src/shared/modelResolution.mjs.map +0 -1
- package/dist/src/shared/paths.cjs +0 -2
- package/dist/src/shared/paths.cjs.map +0 -1
- package/dist/src/shared/paths.mjs +0 -2
- package/dist/src/shared/paths.mjs.map +0 -1
- package/dist/src/shared/scopeOwner.cjs +0 -1
- package/dist/src/shared/scopeOwner.mjs +0 -2
- package/dist/src/shared/scopeOwner.mjs.map +0 -1
- package/dist/src/shared/versioned.cjs.map +0 -1
- package/dist/src/shared/versioned.mjs +0 -2
- package/dist/src/shared/versioned.mjs.map +0 -1
- package/dist/src/tui/agentCatalog.cjs.map +0 -1
- package/dist/src/tui/agentCatalog.mjs.map +0 -1
- package/dist/src/tui/agentResourceProjection.cjs +0 -2
- package/dist/src/tui/agentResourceProjection.cjs.map +0 -1
- package/dist/src/tui/agentResourceProjection.mjs +0 -2
- package/dist/src/tui/agentResourceProjection.mjs.map +0 -1
- package/dist/src/tui/completionNotice.cjs.map +0 -1
- package/dist/src/tui/completionNotice.mjs.map +0 -1
- package/dist/src/tui/fleet.cjs +0 -3
- package/dist/src/tui/fleet.cjs.map +0 -1
- package/dist/src/tui/fleet.mjs +0 -3
- package/dist/src/tui/fleet.mjs.map +0 -1
- package/dist/src/tui/fleetAgentView.cjs +0 -2
- package/dist/src/tui/fleetAgentView.cjs.map +0 -1
- package/dist/src/tui/fleetAgentView.mjs +0 -2
- package/dist/src/tui/fleetAgentView.mjs.map +0 -1
- package/dist/src/tui/fleetStatus.cjs +0 -2
- package/dist/src/tui/fleetStatus.cjs.map +0 -1
- package/dist/src/tui/fleetStatus.mjs +0 -2
- package/dist/src/tui/fleetStatus.mjs.map +0 -1
- package/dist/src/tui/fleetTranscript.cjs.map +0 -1
- package/dist/src/tui/fleetTranscript.mjs.map +0 -1
- package/dist/src/tui/register.cjs +0 -2
- package/dist/src/tui/register.cjs.map +0 -1
- package/dist/src/tui/register.mjs +0 -2
- package/dist/src/tui/register.mjs.map +0 -1
- package/dist/src/tui/subagentToolRender.cjs.map +0 -1
- package/dist/src/tui/subagentToolRender.mjs.map +0 -1
- /package/dist/src/{services → adapters}/agents/frontmatter.cjs +0 -0
- /package/dist/src/{services → adapters}/agents/frontmatter.mjs +0 -0
- /package/dist/src/{services → adapters}/agents/memory.cjs +0 -0
- /package/dist/src/{services → adapters}/agents/memory.mjs +0 -0
- /package/dist/src/{shared → adapters/filesystem}/fileSystemRetry.cjs +0 -0
- /package/dist/src/{commands → adapters/pi/commands}/slash/chainExpression.cjs +0 -0
- /package/dist/src/{commands → adapters/pi/commands}/slash/chainExpression.mjs +0 -0
- /package/dist/src/{commands → adapters/pi/commands}/slash/spawnRequestMapping.cjs +0 -0
- /package/dist/src/{commands → adapters/pi/commands}/slash/spawnRequestMapping.mjs +0 -0
- /package/dist/src/{extensions → adapters/pi/extensions}/delegationBridge.cjs +0 -0
- /package/dist/src/{extensions → adapters/pi/extensions}/delegationBridge.mjs +0 -0
- /package/dist/src/{extensions → adapters/pi/extensions}/orchestratorPrompt.cjs +0 -0
- /package/dist/src/{extensions → adapters/pi/extensions}/orchestratorPrompt.mjs +0 -0
- /package/dist/src/{tui → adapters/pi/tui}/agentCatalog.cjs +0 -0
- /package/dist/src/{tui → adapters/pi/tui}/agentCatalog.mjs +0 -0
- /package/dist/src/{tui → adapters/pi/tui}/subagentToolRender.cjs +0 -0
- /package/dist/src/{tui → adapters/pi/tui}/subagentToolRender.mjs +0 -0
- /package/dist/src/{services → adapters}/runs/background/asyncExecution.d.cts +0 -0
- /package/dist/src/{services → adapters}/runs/background/asyncExecution.d.mts +0 -0
- /package/dist/src/{services → adapters}/runs/background/completionBatcher.cjs +0 -0
- /package/dist/src/{services → adapters}/runs/background/completionBatcher.mjs +0 -0
- /package/dist/src/{services → adapters}/runs/background/notify.cjs +0 -0
- /package/dist/src/{services → adapters}/runs/background/notify.mjs +0 -0
- /package/dist/src/{services → adapters}/runs/background/parentWatchdog.cjs +0 -0
- /package/dist/src/{services → adapters}/runs/background/parentWatchdog.mjs +0 -0
- /package/dist/src/{services → adapters}/runs/background/runnerBootstrap.d.cts +0 -0
- /package/dist/src/{services → adapters}/runs/background/runnerBootstrap.d.mts +0 -0
- /package/dist/src/{services → adapters}/runs/background/runnerExecution.cjs +0 -0
- /package/dist/src/{services → adapters}/runs/background/runnerExecution.d.cts +0 -0
- /package/dist/src/{services → adapters}/runs/background/runnerExecution.d.mts +0 -0
- /package/dist/src/{services → adapters}/runs/background/runnerExecution.mjs +0 -0
- /package/dist/src/{services → adapters}/runs/background/runnerReporting.d.cts +0 -0
- /package/dist/src/{services → adapters}/runs/background/runnerReporting.d.mts +0 -0
- /package/dist/src/{services → adapters}/runs/background/runnerTeamMembership.d.cts +0 -0
- /package/dist/src/{services → adapters}/runs/background/runnerTeamMembership.d.mts +0 -0
- /package/dist/src/{services → adapters}/runs/background/spawnHandshake.cjs +0 -0
- /package/dist/src/{services → adapters}/runs/background/spawnHandshake.mjs +0 -0
- /package/dist/src/{services → adapters}/runs/background/subagentWait.cjs +0 -0
- /package/dist/src/{services → adapters}/runs/background/subagentWait.mjs +0 -0
- /package/dist/src/{services → adapters}/runs/registry/processGroup.cjs +0 -0
- /package/dist/src/{services → adapters}/runs/registry/processGroup.mjs +0 -0
- /package/dist/src/{services → adapters}/runs/shared/mcpDirectToolAllowlist.cjs +0 -0
- /package/dist/src/{services → adapters}/runs/shared/mcpDirectToolAllowlist.d.cts +0 -0
- /package/dist/src/{services → adapters}/runs/shared/mcpDirectToolAllowlist.d.mts +0 -0
- /package/dist/src/{services → adapters}/runs/shared/mcpDirectToolAllowlist.mjs +0 -0
- /package/dist/src/{services → adapters}/runs/shared/nestedPath.cjs +0 -0
- /package/dist/src/{services → adapters}/runs/shared/nestedPath.mjs +0 -0
- /package/dist/src/{services → adapters}/runs/shared/runWithConcurrency.cjs +0 -0
- /package/dist/src/{services → adapters}/runs/shared/runWithConcurrency.mjs +0 -0
- /package/dist/src/{shared → services/models}/modelInfo.cjs +0 -0
- /package/dist/src/{shared → services/models}/modelResolution.cjs +0 -0
- /package/dist/src/{shared → services/models}/modelResolution.mjs +0 -0
- /package/dist/src/{shared → services/support}/boundedKeySet.cjs +0 -0
- /package/dist/src/{shared → services/support}/errors.cjs +0 -0
- /package/dist/src/{shared → services/support}/lruCache.cjs +0 -0
- /package/dist/src/{shared → services/support}/versioned.cjs +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../src/
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../src/types/environment.cjs"),t=require("../src/schemas/team/capabilityCeiling.cjs");exports.SUBAGENT_CAPABILITY_CEILING_ENV=e.SUBAGENT_CAPABILITY_CEILING_ENV,exports.SUBAGENT_CAPABILITY_CEILING_VERSION=t.SUBAGENT_CAPABILITY_CEILING_VERSION,exports.SubagentCapabilityPolicyStore=t.SubagentCapabilityPolicyStore,exports.decodeSubagentCapabilityCeiling=t.decodeSubagentCapabilityCeiling,exports.encodeSubagentCapabilityCeiling=t.encodeSubagentCapabilityCeiling,exports.intersectSubagentCapabilityCeilings=t.intersectSubagentCapabilityCeilings,exports.parseSubagentCapabilityCeiling=t.parseSubagentCapabilityCeiling;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { SUBAGENT_CAPABILITY_CEILING_ENV } from "../src/
|
|
2
|
-
import { ResolvedSubagentCapabilityCeiling, SUBAGENT_CAPABILITY_CEILING_VERSION, SubagentCapabilityAudit, SubagentCapabilityCeiling, decodeSubagentCapabilityCeiling, encodeSubagentCapabilityCeiling, intersectSubagentCapabilityCeilings, parseSubagentCapabilityCeiling } from "../src/schemas/team/capabilityCeiling.cjs";
|
|
3
|
-
|
|
4
|
-
export { type ResolvedSubagentCapabilityCeiling, SUBAGENT_CAPABILITY_CEILING_ENV, SUBAGENT_CAPABILITY_CEILING_VERSION, type SubagentCapabilityAudit, type SubagentCapabilityCeiling, decodeSubagentCapabilityCeiling, encodeSubagentCapabilityCeiling, intersectSubagentCapabilityCeilings, parseSubagentCapabilityCeiling };
|
|
1
|
+
import { SUBAGENT_CAPABILITY_CEILING_ENV } from "../src/types/environment.cjs";
|
|
2
|
+
import { ResolvedSubagentCapabilityCeiling, SUBAGENT_CAPABILITY_CEILING_VERSION, SubagentCapabilityAudit, SubagentCapabilityCeiling, SubagentCapabilityPolicyStore, decodeSubagentCapabilityCeiling, encodeSubagentCapabilityCeiling, intersectSubagentCapabilityCeilings, parseSubagentCapabilityCeiling } from "../src/schemas/team/capabilityCeiling.cjs";
|
|
3
|
+
export { ResolvedSubagentCapabilityCeiling, SUBAGENT_CAPABILITY_CEILING_ENV, SUBAGENT_CAPABILITY_CEILING_VERSION, SubagentCapabilityAudit, SubagentCapabilityCeiling, SubagentCapabilityPolicyStore, decodeSubagentCapabilityCeiling, encodeSubagentCapabilityCeiling, intersectSubagentCapabilityCeilings, parseSubagentCapabilityCeiling };
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { SUBAGENT_CAPABILITY_CEILING_ENV } from "../src/
|
|
2
|
-
import { ResolvedSubagentCapabilityCeiling, SUBAGENT_CAPABILITY_CEILING_VERSION, SubagentCapabilityAudit, SubagentCapabilityCeiling, decodeSubagentCapabilityCeiling, encodeSubagentCapabilityCeiling, intersectSubagentCapabilityCeilings, parseSubagentCapabilityCeiling } from "../src/schemas/team/capabilityCeiling.mjs";
|
|
3
|
-
|
|
4
|
-
export { type ResolvedSubagentCapabilityCeiling, SUBAGENT_CAPABILITY_CEILING_ENV, SUBAGENT_CAPABILITY_CEILING_VERSION, type SubagentCapabilityAudit, type SubagentCapabilityCeiling, decodeSubagentCapabilityCeiling, encodeSubagentCapabilityCeiling, intersectSubagentCapabilityCeilings, parseSubagentCapabilityCeiling };
|
|
1
|
+
import { SUBAGENT_CAPABILITY_CEILING_ENV } from "../src/types/environment.mjs";
|
|
2
|
+
import { ResolvedSubagentCapabilityCeiling, SUBAGENT_CAPABILITY_CEILING_VERSION, SubagentCapabilityAudit, SubagentCapabilityCeiling, SubagentCapabilityPolicyStore, decodeSubagentCapabilityCeiling, encodeSubagentCapabilityCeiling, intersectSubagentCapabilityCeilings, parseSubagentCapabilityCeiling } from "../src/schemas/team/capabilityCeiling.mjs";
|
|
3
|
+
export { ResolvedSubagentCapabilityCeiling, SUBAGENT_CAPABILITY_CEILING_ENV, SUBAGENT_CAPABILITY_CEILING_VERSION, SubagentCapabilityAudit, SubagentCapabilityCeiling, SubagentCapabilityPolicyStore, decodeSubagentCapabilityCeiling, encodeSubagentCapabilityCeiling, intersectSubagentCapabilityCeilings, parseSubagentCapabilityCeiling };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{SUBAGENT_CAPABILITY_CEILING_ENV as e,
|
|
1
|
+
import{SUBAGENT_CAPABILITY_CEILING_ENV as e,init_environment as t}from"../src/types/environment.mjs";import{SUBAGENT_CAPABILITY_CEILING_VERSION as n,SubagentCapabilityPolicyStore as r,decodeSubagentCapabilityCeiling as i,encodeSubagentCapabilityCeiling as a,init_capabilityCeiling as o,intersectSubagentCapabilityCeilings as s,parseSubagentCapabilityCeiling as c}from"../src/schemas/team/capabilityCeiling.mjs";t(),o(),o();export{e as SUBAGENT_CAPABILITY_CEILING_ENV,n as SUBAGENT_CAPABILITY_CEILING_VERSION,r as SubagentCapabilityPolicyStore,i as decodeSubagentCapabilityCeiling,a as encodeSubagentCapabilityCeiling,s as intersectSubagentCapabilityCeilings,c as parseSubagentCapabilityCeiling};
|
|
2
2
|
//# sourceMappingURL=capabilityCeiling.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilityCeiling.mjs","names":[],"sources":["../../src/exports/api/capabilityCeiling.ts"],"sourcesContent":["export * from '../../
|
|
1
|
+
{"version":3,"file":"capabilityCeiling.mjs","names":[],"sources":["../../src/exports/api/capabilityCeiling.ts"],"sourcesContent":["export * from '../../schemas/team/capabilityCeiling';\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../src/
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../src/adapters/api/teamSnapshot.cjs");exports.formatTeamContextSnapshot=e.formatTeamContextSnapshot,exports.readActiveTeamSnapshot=e.readActiveTeamSnapshot;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { TeamMemberSnapshot, TeamSnapshot, formatTeamContextSnapshot, readActiveTeamSnapshot } from "../src/
|
|
1
|
+
import { TeamMemberSnapshot, TeamSnapshot, formatTeamContextSnapshot, readActiveTeamSnapshot } from "../src/adapters/api/teamSnapshot.cjs";
|
|
2
2
|
export { TeamMemberSnapshot, TeamSnapshot, formatTeamContextSnapshot, readActiveTeamSnapshot };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { TeamMemberSnapshot, TeamSnapshot, formatTeamContextSnapshot, readActiveTeamSnapshot } from "../src/
|
|
1
|
+
import { TeamMemberSnapshot, TeamSnapshot, formatTeamContextSnapshot, readActiveTeamSnapshot } from "../src/adapters/api/teamSnapshot.mjs";
|
|
2
2
|
export { TeamMemberSnapshot, TeamSnapshot, formatTeamContextSnapshot, readActiveTeamSnapshot };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{formatTeamContextSnapshot as e,readActiveTeamSnapshot as t}from"../src/
|
|
1
|
+
import{formatTeamContextSnapshot as e,readActiveTeamSnapshot as t}from"../src/adapters/api/teamSnapshot.mjs";export{e as formatTeamContextSnapshot,t as readActiveTeamSnapshot};
|
package/dist/env.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./src/
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./src/types/environment.cjs");let t=require("@agimon-ai/doompi-extension-contracts/child-process");exports.CHILD_TOOL_DIAGNOSTIC_PATH_ENV=e.CHILD_TOOL_DIAGNOSTIC_PATH_ENV,exports.DOOMPI_CHILD_EXTENSIONS_ENV=e.DOOMPI_CHILD_EXTENSIONS_ENV,exports.DOOMPI_SKILL_DIRS_ENV=e.DOOMPI_SKILL_DIRS_ENV,exports.EXTRA_AGENT_DIRS_ENV=e.EXTRA_AGENT_DIRS_ENV,exports.EXTRA_SKILL_DIRS_ENV=e.EXTRA_SKILL_DIRS_ENV,exports.INHERIT_PROJECT_CONTEXT_ENV=e.INHERIT_PROJECT_CONTEXT_ENV,exports.INHERIT_SKILLS_ENV=e.INHERIT_SKILLS_ENV,exports.MAX_SPAWNS_PER_SESSION_ENV=e.MAX_SPAWNS_PER_SESSION_ENV,exports.MCP_DIRECT_CHILD_TOOLS_ENV=e.MCP_DIRECT_CHILD_TOOLS_ENV,exports.MCP_DIRECT_TOOLS_ENV=e.MCP_DIRECT_TOOLS_ENV,exports.PI_CACHE_RETENTION_ENV=e.PI_CACHE_RETENTION_ENV,exports.PI_CODING_AGENT_PACKAGE_ROOT_ENV=e.PI_CODING_AGENT_PACKAGE_ROOT_ENV,exports.PI_INTERCOM_SESSION_ID_ENV=e.PI_INTERCOM_SESSION_ID_ENV,exports.PI_INTERCOM_STABLE_ID_ENV=e.PI_INTERCOM_STABLE_ID_ENV,exports.PI_RUNTIME_NAME=e.PI_RUNTIME_NAME,exports.PI_SUBAGENT_PI_BINARY_ENV=e.PI_SUBAGENT_PI_BINARY_ENV,exports.REQUIRED_CHILD_TOOLS_ENV=e.REQUIRED_CHILD_TOOLS_ENV,exports.STRUCTURED_OUTPUT_CAPTURE_ENV=e.STRUCTURED_OUTPUT_CAPTURE_ENV,exports.STRUCTURED_OUTPUT_SCHEMA_ENV=e.STRUCTURED_OUTPUT_SCHEMA_ENV,exports.SUBAGENT_CAPABILITY_CEILING_ENV=e.SUBAGENT_CAPABILITY_CEILING_ENV,exports.SUBAGENT_CHILD_AGENT_ENV=e.SUBAGENT_CHILD_AGENT_ENV,Object.defineProperty(exports,"SUBAGENT_CHILD_ENV",{enumerable:!0,get:function(){return t.SUBAGENT_CHILD_ENV}}),exports.SUBAGENT_CHILD_INDEX_ENV=e.SUBAGENT_CHILD_INDEX_ENV,exports.SUBAGENT_FANOUT_CHILD_ENV=e.SUBAGENT_FANOUT_CHILD_ENV,exports.SUBAGENT_INTERCOM_SESSION_NAME_ENV=e.SUBAGENT_INTERCOM_SESSION_NAME_ENV,exports.SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV=e.SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV,exports.SUBAGENT_PARENT_CHILD_INDEX_ENV=e.SUBAGENT_PARENT_CHILD_INDEX_ENV,exports.SUBAGENT_PARENT_CONTROL_INBOX_ENV=e.SUBAGENT_PARENT_CONTROL_INBOX_ENV,exports.SUBAGENT_PARENT_DEPTH_ENV=e.SUBAGENT_PARENT_DEPTH_ENV,exports.SUBAGENT_PARENT_EVENT_SINK_ENV=e.SUBAGENT_PARENT_EVENT_SINK_ENV,exports.SUBAGENT_PARENT_PATH_ENV=e.SUBAGENT_PARENT_PATH_ENV,exports.SUBAGENT_PARENT_ROOT_RUN_ID_ENV=e.SUBAGENT_PARENT_ROOT_RUN_ID_ENV,exports.SUBAGENT_PARENT_RUN_ID_ENV=e.SUBAGENT_PARENT_RUN_ID_ENV,Object.defineProperty(exports,"SUBAGENT_PARENT_SESSION_ENV",{enumerable:!0,get:function(){return t.SUBAGENT_PARENT_SESSION_ENV}}),exports.SUBAGENT_PROTECTED_PARENT_PIDS_ENV=e.SUBAGENT_PROTECTED_PARENT_PIDS_ENV,Object.defineProperty(exports,"SUBAGENT_ROOT_SESSION_ENV",{enumerable:!0,get:function(){return t.SUBAGENT_ROOT_SESSION_ENV}}),exports.SUBAGENT_RUN_ID_ENV=e.SUBAGENT_RUN_ID_ENV,exports.SUBAGENT_STEER_ACK_DIR_ENV=e.SUBAGENT_STEER_ACK_DIR_ENV,exports.SUBAGENT_STEER_CAPABILITY_ENV=e.SUBAGENT_STEER_CAPABILITY_ENV,exports.SUBAGENT_STEER_INBOX_ENV=e.SUBAGENT_STEER_INBOX_ENV,exports.SUBAGENT_TEAM_ID_ENV=e.SUBAGENT_TEAM_ID_ENV,exports.SUBAGENT_TEAM_MAIN_MEMBER_ENV=e.SUBAGENT_TEAM_MAIN_MEMBER_ENV,exports.SUBAGENT_TEAM_MEMBER_ID_ENV=e.SUBAGENT_TEAM_MEMBER_ID_ENV,exports.SUBAGENT_TEAM_MEMBER_TOKEN_ENV=e.SUBAGENT_TEAM_MEMBER_TOKEN_ENV,exports.SUBAGENT_TEAM_ROOT_SESSION_ENV=e.SUBAGENT_TEAM_ROOT_SESSION_ENV,exports.TOOL_BUDGET_ENV=e.TOOL_BUDGET_ENV,exports.TOOL_BUDGET_ZERO_AUTH_ENV=e.TOOL_BUDGET_ZERO_AUTH_ENV,exports.WORKTREE_BASE_DIR_ENV=e.WORKTREE_BASE_DIR_ENV,exports.decodeProtectedParentProcessIds=e.decodeProtectedParentProcessIds,exports.runtimeBinaryEnvVar=e.runtimeBinaryEnvVar;
|
package/dist/env.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { CHILD_TOOL_DIAGNOSTIC_PATH_ENV, DOOMPI_CHILD_EXTENSIONS_ENV, DOOMPI_SKILL_DIRS_ENV, EXTRA_AGENT_DIRS_ENV, EXTRA_SKILL_DIRS_ENV, INHERIT_PROJECT_CONTEXT_ENV, INHERIT_SKILLS_ENV, MAX_SPAWNS_PER_SESSION_ENV, MCP_DIRECT_CHILD_TOOLS_ENV, MCP_DIRECT_TOOLS_ENV, PI_CACHE_RETENTION_ENV, PI_CODING_AGENT_PACKAGE_ROOT_ENV, PI_INTERCOM_SESSION_ID_ENV, PI_INTERCOM_STABLE_ID_ENV, PI_RUNTIME_NAME, PI_SUBAGENT_PI_BINARY_ENV, REQUIRED_CHILD_TOOLS_ENV, STRUCTURED_OUTPUT_CAPTURE_ENV, STRUCTURED_OUTPUT_SCHEMA_ENV, SUBAGENT_CAPABILITY_CEILING_ENV, SUBAGENT_CHILD_AGENT_ENV, SUBAGENT_CHILD_ENV, SUBAGENT_CHILD_INDEX_ENV, SUBAGENT_FANOUT_CHILD_ENV, SUBAGENT_INTERCOM_SESSION_NAME_ENV, SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV, SUBAGENT_PARENT_CHILD_INDEX_ENV, SUBAGENT_PARENT_CONTROL_INBOX_ENV, SUBAGENT_PARENT_DEPTH_ENV, SUBAGENT_PARENT_EVENT_SINK_ENV, SUBAGENT_PARENT_PATH_ENV, SUBAGENT_PARENT_ROOT_RUN_ID_ENV, SUBAGENT_PARENT_RUN_ID_ENV, SUBAGENT_PARENT_SESSION_ENV, SUBAGENT_PROTECTED_PARENT_PIDS_ENV, SUBAGENT_ROOT_SESSION_ENV, SUBAGENT_RUN_ID_ENV, SUBAGENT_STEER_ACK_DIR_ENV, SUBAGENT_STEER_CAPABILITY_ENV, SUBAGENT_STEER_INBOX_ENV, SUBAGENT_TEAM_ID_ENV, SUBAGENT_TEAM_MAIN_MEMBER_ENV, SUBAGENT_TEAM_MEMBER_ID_ENV, SUBAGENT_TEAM_MEMBER_TOKEN_ENV, SUBAGENT_TEAM_ROOT_SESSION_ENV, TOOL_BUDGET_ENV, TOOL_BUDGET_ZERO_AUTH_ENV, WORKTREE_BASE_DIR_ENV, decodeProtectedParentProcessIds, runtimeBinaryEnvVar } from "./src/
|
|
1
|
+
import { CHILD_TOOL_DIAGNOSTIC_PATH_ENV, DOOMPI_CHILD_EXTENSIONS_ENV, DOOMPI_SKILL_DIRS_ENV, EXTRA_AGENT_DIRS_ENV, EXTRA_SKILL_DIRS_ENV, INHERIT_PROJECT_CONTEXT_ENV, INHERIT_SKILLS_ENV, MAX_SPAWNS_PER_SESSION_ENV, MCP_DIRECT_CHILD_TOOLS_ENV, MCP_DIRECT_TOOLS_ENV, PI_CACHE_RETENTION_ENV, PI_CODING_AGENT_PACKAGE_ROOT_ENV, PI_INTERCOM_SESSION_ID_ENV, PI_INTERCOM_STABLE_ID_ENV, PI_RUNTIME_NAME, PI_SUBAGENT_PI_BINARY_ENV, REQUIRED_CHILD_TOOLS_ENV, STRUCTURED_OUTPUT_CAPTURE_ENV, STRUCTURED_OUTPUT_SCHEMA_ENV, SUBAGENT_CAPABILITY_CEILING_ENV, SUBAGENT_CHILD_AGENT_ENV, SUBAGENT_CHILD_ENV, SUBAGENT_CHILD_INDEX_ENV, SUBAGENT_FANOUT_CHILD_ENV, SUBAGENT_INTERCOM_SESSION_NAME_ENV, SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV, SUBAGENT_PARENT_CHILD_INDEX_ENV, SUBAGENT_PARENT_CONTROL_INBOX_ENV, SUBAGENT_PARENT_DEPTH_ENV, SUBAGENT_PARENT_EVENT_SINK_ENV, SUBAGENT_PARENT_PATH_ENV, SUBAGENT_PARENT_ROOT_RUN_ID_ENV, SUBAGENT_PARENT_RUN_ID_ENV, SUBAGENT_PARENT_SESSION_ENV, SUBAGENT_PROTECTED_PARENT_PIDS_ENV, SUBAGENT_ROOT_SESSION_ENV, SUBAGENT_RUN_ID_ENV, SUBAGENT_STEER_ACK_DIR_ENV, SUBAGENT_STEER_CAPABILITY_ENV, SUBAGENT_STEER_INBOX_ENV, SUBAGENT_TEAM_ID_ENV, SUBAGENT_TEAM_MAIN_MEMBER_ENV, SUBAGENT_TEAM_MEMBER_ID_ENV, SUBAGENT_TEAM_MEMBER_TOKEN_ENV, SUBAGENT_TEAM_ROOT_SESSION_ENV, TOOL_BUDGET_ENV, TOOL_BUDGET_ZERO_AUTH_ENV, WORKTREE_BASE_DIR_ENV, decodeProtectedParentProcessIds, runtimeBinaryEnvVar } from "./src/types/environment.cjs";
|
|
2
2
|
export { CHILD_TOOL_DIAGNOSTIC_PATH_ENV, DOOMPI_CHILD_EXTENSIONS_ENV, DOOMPI_SKILL_DIRS_ENV, EXTRA_AGENT_DIRS_ENV, EXTRA_SKILL_DIRS_ENV, INHERIT_PROJECT_CONTEXT_ENV, INHERIT_SKILLS_ENV, MAX_SPAWNS_PER_SESSION_ENV, MCP_DIRECT_CHILD_TOOLS_ENV, MCP_DIRECT_TOOLS_ENV, PI_CACHE_RETENTION_ENV, PI_CODING_AGENT_PACKAGE_ROOT_ENV, PI_INTERCOM_SESSION_ID_ENV, PI_INTERCOM_STABLE_ID_ENV, PI_RUNTIME_NAME, PI_SUBAGENT_PI_BINARY_ENV, REQUIRED_CHILD_TOOLS_ENV, STRUCTURED_OUTPUT_CAPTURE_ENV, STRUCTURED_OUTPUT_SCHEMA_ENV, SUBAGENT_CAPABILITY_CEILING_ENV, SUBAGENT_CHILD_AGENT_ENV, SUBAGENT_CHILD_ENV, SUBAGENT_CHILD_INDEX_ENV, SUBAGENT_FANOUT_CHILD_ENV, SUBAGENT_INTERCOM_SESSION_NAME_ENV, SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV, SUBAGENT_PARENT_CHILD_INDEX_ENV, SUBAGENT_PARENT_CONTROL_INBOX_ENV, SUBAGENT_PARENT_DEPTH_ENV, SUBAGENT_PARENT_EVENT_SINK_ENV, SUBAGENT_PARENT_PATH_ENV, SUBAGENT_PARENT_ROOT_RUN_ID_ENV, SUBAGENT_PARENT_RUN_ID_ENV, SUBAGENT_PARENT_SESSION_ENV, SUBAGENT_PROTECTED_PARENT_PIDS_ENV, SUBAGENT_ROOT_SESSION_ENV, SUBAGENT_RUN_ID_ENV, SUBAGENT_STEER_ACK_DIR_ENV, SUBAGENT_STEER_CAPABILITY_ENV, SUBAGENT_STEER_INBOX_ENV, SUBAGENT_TEAM_ID_ENV, SUBAGENT_TEAM_MAIN_MEMBER_ENV, SUBAGENT_TEAM_MEMBER_ID_ENV, SUBAGENT_TEAM_MEMBER_TOKEN_ENV, SUBAGENT_TEAM_ROOT_SESSION_ENV, TOOL_BUDGET_ENV, TOOL_BUDGET_ZERO_AUTH_ENV, WORKTREE_BASE_DIR_ENV, decodeProtectedParentProcessIds, runtimeBinaryEnvVar };
|
package/dist/env.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { CHILD_TOOL_DIAGNOSTIC_PATH_ENV, DOOMPI_CHILD_EXTENSIONS_ENV, DOOMPI_SKILL_DIRS_ENV, EXTRA_AGENT_DIRS_ENV, EXTRA_SKILL_DIRS_ENV, INHERIT_PROJECT_CONTEXT_ENV, INHERIT_SKILLS_ENV, MAX_SPAWNS_PER_SESSION_ENV, MCP_DIRECT_CHILD_TOOLS_ENV, MCP_DIRECT_TOOLS_ENV, PI_CACHE_RETENTION_ENV, PI_CODING_AGENT_PACKAGE_ROOT_ENV, PI_INTERCOM_SESSION_ID_ENV, PI_INTERCOM_STABLE_ID_ENV, PI_RUNTIME_NAME, PI_SUBAGENT_PI_BINARY_ENV, REQUIRED_CHILD_TOOLS_ENV, STRUCTURED_OUTPUT_CAPTURE_ENV, STRUCTURED_OUTPUT_SCHEMA_ENV, SUBAGENT_CAPABILITY_CEILING_ENV, SUBAGENT_CHILD_AGENT_ENV, SUBAGENT_CHILD_ENV, SUBAGENT_CHILD_INDEX_ENV, SUBAGENT_FANOUT_CHILD_ENV, SUBAGENT_INTERCOM_SESSION_NAME_ENV, SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV, SUBAGENT_PARENT_CHILD_INDEX_ENV, SUBAGENT_PARENT_CONTROL_INBOX_ENV, SUBAGENT_PARENT_DEPTH_ENV, SUBAGENT_PARENT_EVENT_SINK_ENV, SUBAGENT_PARENT_PATH_ENV, SUBAGENT_PARENT_ROOT_RUN_ID_ENV, SUBAGENT_PARENT_RUN_ID_ENV, SUBAGENT_PARENT_SESSION_ENV, SUBAGENT_PROTECTED_PARENT_PIDS_ENV, SUBAGENT_ROOT_SESSION_ENV, SUBAGENT_RUN_ID_ENV, SUBAGENT_STEER_ACK_DIR_ENV, SUBAGENT_STEER_CAPABILITY_ENV, SUBAGENT_STEER_INBOX_ENV, SUBAGENT_TEAM_ID_ENV, SUBAGENT_TEAM_MAIN_MEMBER_ENV, SUBAGENT_TEAM_MEMBER_ID_ENV, SUBAGENT_TEAM_MEMBER_TOKEN_ENV, SUBAGENT_TEAM_ROOT_SESSION_ENV, TOOL_BUDGET_ENV, TOOL_BUDGET_ZERO_AUTH_ENV, WORKTREE_BASE_DIR_ENV, decodeProtectedParentProcessIds, runtimeBinaryEnvVar } from "./src/
|
|
1
|
+
import { CHILD_TOOL_DIAGNOSTIC_PATH_ENV, DOOMPI_CHILD_EXTENSIONS_ENV, DOOMPI_SKILL_DIRS_ENV, EXTRA_AGENT_DIRS_ENV, EXTRA_SKILL_DIRS_ENV, INHERIT_PROJECT_CONTEXT_ENV, INHERIT_SKILLS_ENV, MAX_SPAWNS_PER_SESSION_ENV, MCP_DIRECT_CHILD_TOOLS_ENV, MCP_DIRECT_TOOLS_ENV, PI_CACHE_RETENTION_ENV, PI_CODING_AGENT_PACKAGE_ROOT_ENV, PI_INTERCOM_SESSION_ID_ENV, PI_INTERCOM_STABLE_ID_ENV, PI_RUNTIME_NAME, PI_SUBAGENT_PI_BINARY_ENV, REQUIRED_CHILD_TOOLS_ENV, STRUCTURED_OUTPUT_CAPTURE_ENV, STRUCTURED_OUTPUT_SCHEMA_ENV, SUBAGENT_CAPABILITY_CEILING_ENV, SUBAGENT_CHILD_AGENT_ENV, SUBAGENT_CHILD_ENV, SUBAGENT_CHILD_INDEX_ENV, SUBAGENT_FANOUT_CHILD_ENV, SUBAGENT_INTERCOM_SESSION_NAME_ENV, SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV, SUBAGENT_PARENT_CHILD_INDEX_ENV, SUBAGENT_PARENT_CONTROL_INBOX_ENV, SUBAGENT_PARENT_DEPTH_ENV, SUBAGENT_PARENT_EVENT_SINK_ENV, SUBAGENT_PARENT_PATH_ENV, SUBAGENT_PARENT_ROOT_RUN_ID_ENV, SUBAGENT_PARENT_RUN_ID_ENV, SUBAGENT_PARENT_SESSION_ENV, SUBAGENT_PROTECTED_PARENT_PIDS_ENV, SUBAGENT_ROOT_SESSION_ENV, SUBAGENT_RUN_ID_ENV, SUBAGENT_STEER_ACK_DIR_ENV, SUBAGENT_STEER_CAPABILITY_ENV, SUBAGENT_STEER_INBOX_ENV, SUBAGENT_TEAM_ID_ENV, SUBAGENT_TEAM_MAIN_MEMBER_ENV, SUBAGENT_TEAM_MEMBER_ID_ENV, SUBAGENT_TEAM_MEMBER_TOKEN_ENV, SUBAGENT_TEAM_ROOT_SESSION_ENV, TOOL_BUDGET_ENV, TOOL_BUDGET_ZERO_AUTH_ENV, WORKTREE_BASE_DIR_ENV, decodeProtectedParentProcessIds, runtimeBinaryEnvVar } from "./src/types/environment.mjs";
|
|
2
2
|
export { CHILD_TOOL_DIAGNOSTIC_PATH_ENV, DOOMPI_CHILD_EXTENSIONS_ENV, DOOMPI_SKILL_DIRS_ENV, EXTRA_AGENT_DIRS_ENV, EXTRA_SKILL_DIRS_ENV, INHERIT_PROJECT_CONTEXT_ENV, INHERIT_SKILLS_ENV, MAX_SPAWNS_PER_SESSION_ENV, MCP_DIRECT_CHILD_TOOLS_ENV, MCP_DIRECT_TOOLS_ENV, PI_CACHE_RETENTION_ENV, PI_CODING_AGENT_PACKAGE_ROOT_ENV, PI_INTERCOM_SESSION_ID_ENV, PI_INTERCOM_STABLE_ID_ENV, PI_RUNTIME_NAME, PI_SUBAGENT_PI_BINARY_ENV, REQUIRED_CHILD_TOOLS_ENV, STRUCTURED_OUTPUT_CAPTURE_ENV, STRUCTURED_OUTPUT_SCHEMA_ENV, SUBAGENT_CAPABILITY_CEILING_ENV, SUBAGENT_CHILD_AGENT_ENV, SUBAGENT_CHILD_ENV, SUBAGENT_CHILD_INDEX_ENV, SUBAGENT_FANOUT_CHILD_ENV, SUBAGENT_INTERCOM_SESSION_NAME_ENV, SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV, SUBAGENT_PARENT_CHILD_INDEX_ENV, SUBAGENT_PARENT_CONTROL_INBOX_ENV, SUBAGENT_PARENT_DEPTH_ENV, SUBAGENT_PARENT_EVENT_SINK_ENV, SUBAGENT_PARENT_PATH_ENV, SUBAGENT_PARENT_ROOT_RUN_ID_ENV, SUBAGENT_PARENT_RUN_ID_ENV, SUBAGENT_PARENT_SESSION_ENV, SUBAGENT_PROTECTED_PARENT_PIDS_ENV, SUBAGENT_ROOT_SESSION_ENV, SUBAGENT_RUN_ID_ENV, SUBAGENT_STEER_ACK_DIR_ENV, SUBAGENT_STEER_CAPABILITY_ENV, SUBAGENT_STEER_INBOX_ENV, SUBAGENT_TEAM_ID_ENV, SUBAGENT_TEAM_MAIN_MEMBER_ENV, SUBAGENT_TEAM_MEMBER_ID_ENV, SUBAGENT_TEAM_MEMBER_TOKEN_ENV, SUBAGENT_TEAM_ROOT_SESSION_ENV, TOOL_BUDGET_ENV, TOOL_BUDGET_ZERO_AUTH_ENV, WORKTREE_BASE_DIR_ENV, decodeProtectedParentProcessIds, runtimeBinaryEnvVar };
|
package/dist/env.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{CHILD_TOOL_DIAGNOSTIC_PATH_ENV as e,DOOMPI_CHILD_EXTENSIONS_ENV as t,DOOMPI_SKILL_DIRS_ENV as n,EXTRA_AGENT_DIRS_ENV as r,EXTRA_SKILL_DIRS_ENV as i,INHERIT_PROJECT_CONTEXT_ENV as a,INHERIT_SKILLS_ENV as o,MAX_SPAWNS_PER_SESSION_ENV as s,MCP_DIRECT_CHILD_TOOLS_ENV as c,MCP_DIRECT_TOOLS_ENV as l,PI_CACHE_RETENTION_ENV as u,PI_CODING_AGENT_PACKAGE_ROOT_ENV as d,PI_INTERCOM_SESSION_ID_ENV as f,PI_INTERCOM_STABLE_ID_ENV as p,PI_RUNTIME_NAME as m,PI_SUBAGENT_PI_BINARY_ENV as h,REQUIRED_CHILD_TOOLS_ENV as g,STRUCTURED_OUTPUT_CAPTURE_ENV as _,STRUCTURED_OUTPUT_SCHEMA_ENV as v,SUBAGENT_CAPABILITY_CEILING_ENV as y,SUBAGENT_CHILD_AGENT_ENV as b,SUBAGENT_CHILD_ENV as x,SUBAGENT_CHILD_INDEX_ENV as S,SUBAGENT_FANOUT_CHILD_ENV as C,SUBAGENT_INTERCOM_SESSION_NAME_ENV as w,SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV as T,SUBAGENT_PARENT_CHILD_INDEX_ENV as E,SUBAGENT_PARENT_CONTROL_INBOX_ENV as D,SUBAGENT_PARENT_DEPTH_ENV as O,SUBAGENT_PARENT_EVENT_SINK_ENV as k,SUBAGENT_PARENT_PATH_ENV as A,SUBAGENT_PARENT_ROOT_RUN_ID_ENV as j,SUBAGENT_PARENT_RUN_ID_ENV as M,SUBAGENT_PARENT_SESSION_ENV as N,SUBAGENT_PROTECTED_PARENT_PIDS_ENV as P,SUBAGENT_ROOT_SESSION_ENV as F,SUBAGENT_RUN_ID_ENV as I,SUBAGENT_STEER_ACK_DIR_ENV as L,SUBAGENT_STEER_CAPABILITY_ENV as R,SUBAGENT_STEER_INBOX_ENV as z,SUBAGENT_TEAM_ID_ENV as B,SUBAGENT_TEAM_MAIN_MEMBER_ENV as V,SUBAGENT_TEAM_MEMBER_ID_ENV as H,SUBAGENT_TEAM_MEMBER_TOKEN_ENV as U,SUBAGENT_TEAM_ROOT_SESSION_ENV as W,TOOL_BUDGET_ENV as G,TOOL_BUDGET_ZERO_AUTH_ENV as K,WORKTREE_BASE_DIR_ENV as q,decodeProtectedParentProcessIds as J,
|
|
1
|
+
import{CHILD_TOOL_DIAGNOSTIC_PATH_ENV as e,DOOMPI_CHILD_EXTENSIONS_ENV as t,DOOMPI_SKILL_DIRS_ENV as n,EXTRA_AGENT_DIRS_ENV as r,EXTRA_SKILL_DIRS_ENV as i,INHERIT_PROJECT_CONTEXT_ENV as a,INHERIT_SKILLS_ENV as o,MAX_SPAWNS_PER_SESSION_ENV as s,MCP_DIRECT_CHILD_TOOLS_ENV as c,MCP_DIRECT_TOOLS_ENV as l,PI_CACHE_RETENTION_ENV as u,PI_CODING_AGENT_PACKAGE_ROOT_ENV as d,PI_INTERCOM_SESSION_ID_ENV as f,PI_INTERCOM_STABLE_ID_ENV as p,PI_RUNTIME_NAME as m,PI_SUBAGENT_PI_BINARY_ENV as h,REQUIRED_CHILD_TOOLS_ENV as g,STRUCTURED_OUTPUT_CAPTURE_ENV as _,STRUCTURED_OUTPUT_SCHEMA_ENV as v,SUBAGENT_CAPABILITY_CEILING_ENV as y,SUBAGENT_CHILD_AGENT_ENV as b,SUBAGENT_CHILD_ENV as x,SUBAGENT_CHILD_INDEX_ENV as S,SUBAGENT_FANOUT_CHILD_ENV as C,SUBAGENT_INTERCOM_SESSION_NAME_ENV as w,SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV as T,SUBAGENT_PARENT_CHILD_INDEX_ENV as E,SUBAGENT_PARENT_CONTROL_INBOX_ENV as D,SUBAGENT_PARENT_DEPTH_ENV as O,SUBAGENT_PARENT_EVENT_SINK_ENV as k,SUBAGENT_PARENT_PATH_ENV as A,SUBAGENT_PARENT_ROOT_RUN_ID_ENV as j,SUBAGENT_PARENT_RUN_ID_ENV as M,SUBAGENT_PARENT_SESSION_ENV as N,SUBAGENT_PROTECTED_PARENT_PIDS_ENV as P,SUBAGENT_ROOT_SESSION_ENV as F,SUBAGENT_RUN_ID_ENV as I,SUBAGENT_STEER_ACK_DIR_ENV as L,SUBAGENT_STEER_CAPABILITY_ENV as R,SUBAGENT_STEER_INBOX_ENV as z,SUBAGENT_TEAM_ID_ENV as B,SUBAGENT_TEAM_MAIN_MEMBER_ENV as V,SUBAGENT_TEAM_MEMBER_ID_ENV as H,SUBAGENT_TEAM_MEMBER_TOKEN_ENV as U,SUBAGENT_TEAM_ROOT_SESSION_ENV as W,TOOL_BUDGET_ENV as G,TOOL_BUDGET_ZERO_AUTH_ENV as K,WORKTREE_BASE_DIR_ENV as q,decodeProtectedParentProcessIds as J,init_environment as Y,runtimeBinaryEnvVar as X}from"./src/types/environment.mjs";Y(),Y();export{e as CHILD_TOOL_DIAGNOSTIC_PATH_ENV,t as DOOMPI_CHILD_EXTENSIONS_ENV,n as DOOMPI_SKILL_DIRS_ENV,r as EXTRA_AGENT_DIRS_ENV,i as EXTRA_SKILL_DIRS_ENV,a as INHERIT_PROJECT_CONTEXT_ENV,o as INHERIT_SKILLS_ENV,s as MAX_SPAWNS_PER_SESSION_ENV,c as MCP_DIRECT_CHILD_TOOLS_ENV,l as MCP_DIRECT_TOOLS_ENV,u as PI_CACHE_RETENTION_ENV,d as PI_CODING_AGENT_PACKAGE_ROOT_ENV,f as PI_INTERCOM_SESSION_ID_ENV,p as PI_INTERCOM_STABLE_ID_ENV,m as PI_RUNTIME_NAME,h as PI_SUBAGENT_PI_BINARY_ENV,g as REQUIRED_CHILD_TOOLS_ENV,_ as STRUCTURED_OUTPUT_CAPTURE_ENV,v as STRUCTURED_OUTPUT_SCHEMA_ENV,y as SUBAGENT_CAPABILITY_CEILING_ENV,b as SUBAGENT_CHILD_AGENT_ENV,x as SUBAGENT_CHILD_ENV,S as SUBAGENT_CHILD_INDEX_ENV,C as SUBAGENT_FANOUT_CHILD_ENV,w as SUBAGENT_INTERCOM_SESSION_NAME_ENV,T as SUBAGENT_PARENT_CAPABILITY_TOKEN_ENV,E as SUBAGENT_PARENT_CHILD_INDEX_ENV,D as SUBAGENT_PARENT_CONTROL_INBOX_ENV,O as SUBAGENT_PARENT_DEPTH_ENV,k as SUBAGENT_PARENT_EVENT_SINK_ENV,A as SUBAGENT_PARENT_PATH_ENV,j as SUBAGENT_PARENT_ROOT_RUN_ID_ENV,M as SUBAGENT_PARENT_RUN_ID_ENV,N as SUBAGENT_PARENT_SESSION_ENV,P as SUBAGENT_PROTECTED_PARENT_PIDS_ENV,F as SUBAGENT_ROOT_SESSION_ENV,I as SUBAGENT_RUN_ID_ENV,L as SUBAGENT_STEER_ACK_DIR_ENV,R as SUBAGENT_STEER_CAPABILITY_ENV,z as SUBAGENT_STEER_INBOX_ENV,B as SUBAGENT_TEAM_ID_ENV,V as SUBAGENT_TEAM_MAIN_MEMBER_ENV,H as SUBAGENT_TEAM_MEMBER_ID_ENV,U as SUBAGENT_TEAM_MEMBER_TOKEN_ENV,W as SUBAGENT_TEAM_ROOT_SESSION_ENV,G as TOOL_BUDGET_ENV,K as TOOL_BUDGET_ZERO_AUTH_ENV,q as WORKTREE_BASE_DIR_ENV,J as decodeProtectedParentProcessIds,X as runtimeBinaryEnvVar};
|
|
2
2
|
//# sourceMappingURL=env.mjs.map
|
package/dist/env.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.mjs","names":[],"sources":["../src/exports/env.ts"],"sourcesContent":["export * from '../
|
|
1
|
+
{"version":3,"file":"env.mjs","names":[],"sources":["../src/exports/env.ts"],"sourcesContent":["export * from '../types/environment';\n"],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../src/extensions/subagentPromptRuntime.cjs");module.exports=e.registerSubagentPromptRuntime;
|
|
1
|
+
const e=require("../src/adapters/pi/extensions/subagentPromptRuntime.cjs");module.exports=e.registerSubagentPromptRuntime;
|
|
2
2
|
//# sourceMappingURL=subagentPromptRuntimeEntry.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagentPromptRuntimeEntry.cjs","names":["registerSubagentPromptRuntime"],"sources":["../../src/extensions/subagentPromptRuntimeEntry.cts"],"sourcesContent":["import { registerSubagentPromptRuntime } from './subagentPromptRuntime
|
|
1
|
+
{"version":3,"file":"subagentPromptRuntimeEntry.cjs","names":["registerSubagentPromptRuntime"],"sources":["../../src/adapters/pi/extensions/subagentPromptRuntimeEntry.cts"],"sourcesContent":["import { registerSubagentPromptRuntime } from './subagentPromptRuntime';\n\n// Pi's jiti loader imports extension factories through the CommonJS default interop path.\nexport = registerSubagentPromptRuntime;\n"],"mappings":"2EAGSA,OAAAA,QAAAA,EAAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { registerSubagentPromptRuntime } from "../src/extensions/subagentPromptRuntime.cjs";
|
|
1
|
+
import { registerSubagentPromptRuntime } from "../src/adapters/pi/extensions/subagentPromptRuntime.cjs";
|
|
2
2
|
export = registerSubagentPromptRuntime;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { registerSubagentPromptRuntime } from "../src/extensions/subagentPromptRuntime.mjs";
|
|
1
|
+
import { registerSubagentPromptRuntime } from "../src/adapters/pi/extensions/subagentPromptRuntime.mjs";
|
|
2
2
|
export { registerSubagentPromptRuntime as default };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__commonJSMin as e}from"../_virtual/_rolldown/runtime.mjs";import{init_subagentPromptRuntime as t,registerSubagentPromptRuntime as n}from"../src/extensions/subagentPromptRuntime.mjs";var r=e(((e,r)=>{t(),r.exports=n}));export default r();export{};
|
|
1
|
+
import{__commonJSMin as e}from"../_virtual/_rolldown/runtime.mjs";import{init_subagentPromptRuntime as t,registerSubagentPromptRuntime as n}from"../src/adapters/pi/extensions/subagentPromptRuntime.mjs";var r=e(((e,r)=>{t(),r.exports=n}));export default r();export{};
|
|
2
2
|
//# sourceMappingURL=subagentPromptRuntimeEntry.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagentPromptRuntimeEntry.mjs","names":[],"sources":["../../src/extensions/subagentPromptRuntimeEntry.cts"],"sourcesContent":["import { registerSubagentPromptRuntime } from './subagentPromptRuntime
|
|
1
|
+
{"version":3,"file":"subagentPromptRuntimeEntry.mjs","names":[],"sources":["../../src/adapters/pi/extensions/subagentPromptRuntimeEntry.cts"],"sourcesContent":["import { registerSubagentPromptRuntime } from './subagentPromptRuntime';\n\n// Pi's jiti loader imports extension factories through the CommonJS default interop path.\nexport = registerSubagentPromptRuntime;\n"],"mappings":"2NAAuE,EAAA,EAG9D,EAAA,QAAA"}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
require("../../src/
|
|
1
|
+
const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../src/types/environment.cjs"),n=require("../../src/adapters/atomicJson.cjs"),r=require("../../src/adapters/filesystem/paths.cjs"),i=require("../../src/adapters/runs/background/statusWriter.cjs"),a=require("../../src/adapters/statusReader.cjs"),o=require("../../src/adapters/runs/shared/claudeFableProfile.cjs"),s=require("../../src/adapters/runs/background/parentWatchdog.cjs");let c=require("node:fs");c=e.__toESM(c,1);let l=require("@agimon-ai/doompi-telemetry"),u=require("node:child_process"),d=require("@agimon-ai/doompi-extension-contracts/child-process");const f=`Parent process was lost.`,p=`SIGKILL`;function m(e){return e instanceof Error?e.message:String(e)}function h(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function g(e){let t=JSON.parse(c.readFileSync(r.currentRunConfigPath(e),`utf8`));if(!h(t)||t.runId!==e||typeof t.command!=`string`)throw Error(`CLI launch config for run '${e}' is invalid.`);return t}function _(e,t,n){let r=e+t;for(;Buffer.byteLength(r,`utf8`)>n&&r.length>0;){let e=Buffer.byteLength(r,`utf8`)-n;r=r.slice(Math.max(1,Math.ceil(e/2)))}return r}let v;async function y(e,t,n){let r=v;v=void 0,r&&(n===void 0?await r.recordEvent(e,t):await r.recordError(e,n,t),await r.flush(),await r.shutdown())}async function b(){let e=Date.now();v=(0,l.createDoomTelemetry)({serviceName:`doom-team-cli-child`,packageName:`@agimon-ai/doompi-team`,env:process.env,enableLogs:!0,enableTraces:!0});let h=process.env[t.SUBAGENT_RUN_ID_ENV]?.trim();if(!h)throw Error(`${t.SUBAGENT_RUN_ID_ENV} is required.`);if(!r.adoptSessionScopeFromEnv())throw Error(`${d.SUBAGENT_ROOT_SESSION_ENV} is required: a child cannot resolve its session scope without it.`);let b;try{b=g(h)}catch(e){throw b?.handshakePath&&!c.existsSync(b.handshakePath)&&n.writeAtomicJson(b.handshakePath,{state:`error`,error:m(e)}),e}let x=new i.CoalescedStatusWriter,S=Date.now();await v?.recordEvent(`doom_team.child_started`,{runtime:b.runtime,"agent.name":b.agent,outcome:`started`}),x.open(h,a.readAsyncRunStatus(h)??{version:1,runId:h,...b.operationId?{operationId:b.operationId}:{},agent:b.agent,cwd:b.cwd,runtime:b.runtime,state:`queued`,startedAt:S,lastUpdate:S});let C=b.profile===o.CLAUDE_FABLE_PROFILE;if(b.profile!==void 0&&!C)throw Error(`Untrusted external profile.`);if(C&&(!b.stdinPath||!b.profileResultPath))throw Error(`Fable profile launch config is incomplete.`);let w=C?c.openSync(b.stdinPath,`r`):void 0,T;try{T=(0,u.spawn)(b.command,b.args,{cwd:b.cwd,env:C?b.env:{...process.env,...b.env},stdio:[w??`ignore`,`pipe`,`pipe`],detached:!0,windowsHide:!0})}catch(e){throw C&&(o.cleanupClaudeFableLaunch({cleanupPaths:b.cleanupPaths??[]}),b.profileResultPath&&c.rmSync(b.profileResultPath,{force:!0})),e}finally{w!==void 0&&c.closeSync(w)}let E=e=>{C&&(o.cleanupClaudeFableLaunch({cleanupPaths:b.cleanupPaths??[]}),e&&b.profileResultPath&&c.rmSync(b.profileResultPath,{force:!0}))},D,O=e=>{if(D=e,T.pid)try{process.kill(-T.pid,e)}catch(e){process.stderr.write(`[doom-team cli runner] Could not signal vendor process: ${m(e)}\n`)}};process.once(`SIGTERM`,O),process.once(`SIGINT`,O);try{await new Promise((e,t)=>{T.once(`spawn`,e),T.once(`error`,t)}),n.writeAtomicJson(b.handshakePath,{state:`ready`}),x.updateSync(e=>{e.state=`running`,e.activityState=`working`,e.lastUpdate=Date.now()})}catch(t){let r=m(t);n.writeAtomicJson(b.handshakePath,{state:`error`,error:r}),x.updateSync(e=>{e.state=`failed`,e.error=r,e.lastUpdate=Date.now(),e.endedAt=Date.now()}),n.writeAtomicJson(b.resultPath,{runId:h,...b.internal?{internal:!0}:{},...b.operationId?{operationId:b.operationId}:{},agent:b.agent,runtime:b.runtime,success:!1,summary:C?`Fable Claude launch failed.`:r}),x.close(),E(!0),await y(`doom_team.child_failed`,{runtime:b.runtime,"agent.name":b.agent,duration_ms:Date.now()-e,outcome:`failed`},t),process.exit(1)}let k=s.startParentWatchdog({onParentLost:()=>{O(p);let t=Date.now();x.updateSync(e=>{e.state=`stopped`,e.error=f,e.lastUpdate=t,e.endedAt=t}),n.writeAtomicJson(b.resultPath,{runId:h,...b.internal?{internal:!0}:{},...b.operationId?{operationId:b.operationId}:{},agent:b.agent,runtime:b.runtime,success:!1,summary:f,signal:p}),x.close(),E(!0),y(`doom_team.child_finished`,{runtime:b.runtime,"agent.name":b.agent,duration_ms:Date.now()-e,outcome:`parent_lost`}).finally(()=>process.exit(0))}}),A=``,j=``;T.stdout?.on(`data`,e=>{A=_(A,e.toString(`utf8`),65536)}),T.stderr?.on(`data`,e=>{j=_(j,e.toString(`utf8`),8192)});let M=await new Promise(e=>{T.on(`error`,t=>e({code:null,signal:null,error:t})),T.on(`close`,(t,n)=>e({code:t,signal:n}))});k();let N=D!==void 0,P;if(C&&!N&&M.error===void 0&&M.code===0)try{let e=o.parseClaudeFableOutput(A);n.writePrivateAtomicJson(b.profileResultPath,{text:e.text,outputBytes:e.outputBytes})}catch(e){P=e instanceof Error?e:Error(String(e))}let F=!N&&M.error===void 0&&M.code===0&&P===void 0,I=C?P?.message??`Fable Claude launch failed.`:j.trim()||`${b.runtime} exited with ${M.signal??`code ${M.code??`unknown`}`}.`,L=N?`Stopped by ${D}.`:F?C?`Fable profile completed.`:A.trim():M.error?.message??I,R=Date.now();x.updateSync(e=>{e.state=N?`stopped`:F?`completed`:`failed`,e.activityState=`finalizing`,e.summary=L,F||(e.error=L),e.lastUpdate=R,e.endedAt=R}),n.writeAtomicJson(b.resultPath,{runId:h,...b.internal?{internal:!0}:{},...b.operationId?{operationId:b.operationId}:{},agent:b.agent,runtime:b.runtime,success:F,summary:L,...M.code===null?{}:{exitCode:M.code},...M.signal?{signal:M.signal}:{}}),x.close(),E(!F),await y(`doom_team.child_finished`,{runtime:b.runtime,"agent.name":b.agent,duration_ms:Date.now()-e,"runner.stdout_bytes":Buffer.byteLength(A,`utf8`),"runner.stderr_bytes":Buffer.byteLength(j,`utf8`),"runner.exit_code":M.code??0,outcome:N?`stopped`:F?`completed`:`failed`}),process.exit(0)}b().catch(async e=>{await y(`doom_team.child_failed`,{outcome:`failed`},e),process.stderr.write(`[doom-team cli runner] ${m(e)}\n`),process.exitCode=1});
|
|
2
|
+
//# sourceMappingURL=cliRunnerEntry.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cliRunnerEntry.cjs","names":["fs","currentRunConfigPath","createDoomTelemetry","SUBAGENT_RUN_ID_ENV","adoptSessionScopeFromEnv","SUBAGENT_ROOT_SESSION_ENV","CoalescedStatusWriter","readAsyncRunStatus","CLAUDE_FABLE_PROFILE","spawn","startParentWatchdog","parseClaudeFableOutput"],"sources":["../../../src/adapters/runs/background/cliRunnerEntry.ts"],"sourcesContent":["/**\n * The detached child process for an external agent CLI.\n *\n * Counterpart to `sdkRunnerEntry.ts`, which does the same job for the\n * in-process Pi runtime. Both are spawned by `AsyncSubagentSpawner`, both write\n * the same `status.json` and the same terminal result, and both signal the same\n * handshake - so `AsyncJobTracker`, `ResultWatcher`, the fleet view, internal\n * completion monitors, and public `subagent` status handling cannot tell them apart.\n *\n * WHAT AN EXTERNAL CHILD DOES NOT GET, STATED PLAINLY:\n * No intercom, no steering, no structured output. Those\n * are delivered by `subagentPromptRuntime.ts`, which Pi loads in-process into\n * a Pi child; an arbitrary CLI has nowhere to load it. Team package tool\n * exclusions are therefore best effort for external runtimes. An external\n * child is a one-shot worker: it receives a prompt and returns output. Stop and interrupt\n * still work, because they are process-group signals rather than cooperative\n * file requests.\n *\n * WHY THE OUTPUT IS RECORDED, NOT PARSED:\n * A generic runner cannot know what a given CLI's output means. Trailing stdout\n * is the result; anything more specific would either be wrong for a CLI nobody\n * tested or lock the config to the two that were.\n *\n * AVOID:\n * - Vendor-specific parsing here. If a runtime needs it, that is a different\n * module and a deliberate decision\n */\n\nimport { spawn } from 'node:child_process';\nimport * as fs from 'node:fs';\n\nimport { createDoomTelemetry, type DoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport { SUBAGENT_ROOT_SESSION_ENV, SUBAGENT_RUN_ID_ENV } from '../../../types/environment';\nimport { writeAtomicJson, writePrivateAtomicJson } from '../../atomicJson';\nimport { adoptSessionScopeFromEnv, currentRunConfigPath } from '../../filesystem/paths';\nimport { CLAUDE_FABLE_PROFILE, cleanupClaudeFableLaunch, parseClaudeFableOutput } from '../shared/claudeFableProfile';\nimport type { AsyncRunStatus } from './asyncExecution';\nimport type { CliLaunchConfig } from './cliLaunchConfig';\nimport { startParentWatchdog } from './parentWatchdog';\nimport { readAsyncRunStatus } from '../../statusReader';\nimport { CoalescedStatusWriter } from './statusWriter';\n\n/** How much trailing stdout is kept as the run's result. */\nconst MAX_RESULT_BYTES = 64 * 1024;\n/** How much stderr is kept for a failure message. */\nconst MAX_STDERR_BYTES = 8 * 1024;\nconst PARENT_LOST_MESSAGE = 'Parent process was lost.';\nconst FORCE_KILL_SIGNAL: NodeJS.Signals = 'SIGKILL';\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction readLaunchConfig(runId: string): CliLaunchConfig {\n const parsed: unknown = JSON.parse(fs.readFileSync(currentRunConfigPath(runId), 'utf8'));\n if (!isRecord(parsed) || parsed.runId !== runId || typeof parsed.command !== 'string') {\n throw new Error(`CLI launch config for run '${runId}' is invalid.`);\n }\n return parsed as unknown as CliLaunchConfig;\n}\n\n/** Keep only a UTF-8-safe trailing value within `limit` bytes, so a chatty CLI cannot exhaust memory. */\nfunction appendBounded(buffer: string, chunk: string, limit: number): string {\n let combined = buffer + chunk;\n while (Buffer.byteLength(combined, 'utf8') > limit && combined.length > 0) {\n const excess = Buffer.byteLength(combined, 'utf8') - limit;\n combined = combined.slice(Math.max(1, Math.ceil(excess / 2)));\n }\n return combined;\n}\n\nlet childTelemetry: DoomTelemetry | undefined;\n\nasync function finishTelemetry(event: string, attributes: Record<string, unknown>, error?: unknown): Promise<void> {\n const telemetry = childTelemetry;\n childTelemetry = undefined;\n if (!telemetry) return;\n if (error === undefined) await telemetry.recordEvent(event, attributes);\n else await telemetry.recordError(event, error, attributes);\n await telemetry.flush();\n await telemetry.shutdown();\n}\n\nasync function run(): Promise<void> {\n const startedAt = Date.now();\n childTelemetry = createDoomTelemetry({\n serviceName: 'doom-team-cli-child',\n packageName: '@agimon-ai/doompi-team',\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const runId = process.env[SUBAGENT_RUN_ID_ENV]?.trim();\n if (!runId) throw new Error(`${SUBAGENT_RUN_ID_ENV} is required.`);\n if (!adoptSessionScopeFromEnv()) {\n throw new Error(`${SUBAGENT_ROOT_SESSION_ENV} is required: a child cannot resolve its session scope without it.`);\n }\n\n let config: CliLaunchConfig | undefined;\n try {\n config = readLaunchConfig(runId);\n // The vendor process emits its own spawn event before the ready handshake\n // is written below. Reading the config alone is not sufficient evidence\n // that the configured executable can start.\n } catch (error) {\n if (config?.handshakePath && !fs.existsSync(config.handshakePath)) {\n writeAtomicJson(config.handshakePath, { state: 'error', error: errorMessage(error) });\n }\n throw error;\n }\n\n const statusWriter = new CoalescedStatusWriter<AsyncRunStatus>();\n const now = Date.now();\n await childTelemetry?.recordEvent('doom_team.child_started', {\n runtime: config.runtime,\n 'agent.name': config.agent,\n outcome: 'started',\n });\n statusWriter.open(\n runId,\n readAsyncRunStatus(runId) ?? {\n version: 1,\n runId,\n ...(config.operationId ? { operationId: config.operationId } : {}),\n agent: config.agent,\n cwd: config.cwd,\n runtime: config.runtime,\n state: 'queued',\n startedAt: now,\n lastUpdate: now,\n },\n );\n\n const profileLaunch = config.profile === CLAUDE_FABLE_PROFILE;\n if (config.profile !== undefined && !profileLaunch) throw new Error('Untrusted external profile.');\n if (profileLaunch && (!config.stdinPath || !config.profileResultPath)) {\n throw new Error('Fable profile launch config is incomplete.');\n }\n const stdinFd = profileLaunch ? fs.openSync(config.stdinPath!, 'r') : undefined;\n let child: ReturnType<typeof spawn>;\n try {\n child = spawn(config.command, config.args, {\n cwd: config.cwd,\n env: profileLaunch ? config.env : { ...process.env, ...config.env },\n stdio: [stdinFd ?? 'ignore', 'pipe', 'pipe'],\n // Its own group, so the watchdog below can take the CLI and anything it\n // spawned down together.\n detached: true,\n windowsHide: true,\n });\n } catch (error) {\n if (profileLaunch) {\n cleanupClaudeFableLaunch({ cleanupPaths: config.cleanupPaths ?? [] });\n if (config.profileResultPath) fs.rmSync(config.profileResultPath, { force: true });\n }\n throw error;\n } finally {\n if (stdinFd !== undefined) fs.closeSync(stdinFd);\n }\n const cleanupProfile = (removeResult: boolean): void => {\n if (!profileLaunch) return;\n cleanupClaudeFableLaunch({ cleanupPaths: config.cleanupPaths ?? [] });\n if (removeResult && config.profileResultPath) fs.rmSync(config.profileResultPath, { force: true });\n };\n\n let requestedSignal: NodeJS.Signals | undefined;\n const stopVendor = (signal: NodeJS.Signals): void => {\n requestedSignal = signal;\n if (!child.pid) return;\n try {\n process.kill(-child.pid, signal);\n } catch (error) {\n process.stderr.write(`[doom-team cli runner] Could not signal vendor process: ${errorMessage(error)}\\n`);\n }\n };\n process.once('SIGTERM', stopVendor);\n process.once('SIGINT', stopVendor);\n\n try {\n await new Promise<void>((resolve, reject) => {\n child.once('spawn', resolve);\n child.once('error', reject);\n });\n writeAtomicJson(config.handshakePath, { state: 'ready' });\n statusWriter.updateSync((status) => {\n status.state = 'running';\n status.activityState = 'working';\n status.lastUpdate = Date.now();\n });\n } catch (error) {\n const message = errorMessage(error);\n writeAtomicJson(config.handshakePath, { state: 'error', error: message });\n statusWriter.updateSync((status) => {\n status.state = 'failed';\n status.error = message;\n status.lastUpdate = Date.now();\n status.endedAt = Date.now();\n });\n writeAtomicJson(config.resultPath, {\n runId,\n ...(config.internal ? { internal: true } : {}),\n ...(config.operationId ? { operationId: config.operationId } : {}),\n agent: config.agent,\n runtime: config.runtime,\n success: false,\n summary: profileLaunch ? 'Fable Claude launch failed.' : message,\n });\n statusWriter.close();\n cleanupProfile(true);\n await finishTelemetry(\n 'doom_team.child_failed',\n { runtime: config.runtime, 'agent.name': config.agent, duration_ms: Date.now() - startedAt, outcome: 'failed' },\n error,\n );\n process.exit(1);\n }\n\n // A SIGKILLed parent cannot signal us, so terminate the vendor tree and\n // persist a terminal record before leaving when the watchdog can observe it.\n const stopWatchdog = startParentWatchdog({\n onParentLost: () => {\n stopVendor(FORCE_KILL_SIGNAL);\n const endedAt = Date.now();\n statusWriter.updateSync((status) => {\n status.state = 'stopped';\n status.error = PARENT_LOST_MESSAGE;\n status.lastUpdate = endedAt;\n status.endedAt = endedAt;\n });\n writeAtomicJson(config.resultPath, {\n runId,\n ...(config.internal ? { internal: true } : {}),\n ...(config.operationId ? { operationId: config.operationId } : {}),\n agent: config.agent,\n runtime: config.runtime,\n success: false,\n summary: PARENT_LOST_MESSAGE,\n signal: FORCE_KILL_SIGNAL,\n });\n statusWriter.close();\n cleanupProfile(true);\n void finishTelemetry('doom_team.child_finished', {\n runtime: config.runtime,\n 'agent.name': config.agent,\n duration_ms: Date.now() - startedAt,\n outcome: 'parent_lost',\n }).finally(() => process.exit(0));\n },\n });\n\n let stdout = '';\n let stderr = '';\n child.stdout?.on('data', (chunk: Buffer) => {\n stdout = appendBounded(stdout, chunk.toString('utf8'), MAX_RESULT_BYTES);\n });\n child.stderr?.on('data', (chunk: Buffer) => {\n stderr = appendBounded(stderr, chunk.toString('utf8'), MAX_STDERR_BYTES);\n });\n\n const exit = await new Promise<{ code: number | null; signal: NodeJS.Signals | null; error?: Error }>((resolve) => {\n child.on('error', (error) => resolve({ code: null, signal: null, error }));\n child.on('close', (code, signal) => resolve({ code, signal }));\n });\n\n stopWatchdog();\n\n const stopped = requestedSignal !== undefined;\n let profileError: Error | undefined;\n if (profileLaunch && !stopped && exit.error === undefined && exit.code === 0) {\n try {\n const parsed = parseClaudeFableOutput(stdout);\n writePrivateAtomicJson(config.profileResultPath!, { text: parsed.text, outputBytes: parsed.outputBytes });\n } catch (error) {\n profileError = error instanceof Error ? error : new Error(String(error));\n }\n }\n const success = !stopped && exit.error === undefined && exit.code === 0 && profileError === undefined;\n const failureDetail = profileLaunch\n ? (profileError?.message ?? 'Fable Claude launch failed.')\n : stderr.trim() || `${config.runtime} exited with ${exit.signal ?? `code ${exit.code ?? 'unknown'}`}.`;\n const summary = stopped\n ? `Stopped by ${requestedSignal}.`\n : success\n ? profileLaunch\n ? 'Fable profile completed.'\n : stdout.trim()\n : (exit.error?.message ?? failureDetail);\n const endedAt = Date.now();\n\n statusWriter.updateSync((status) => {\n status.state = stopped ? 'stopped' : success ? 'completed' : 'failed';\n status.activityState = 'finalizing';\n status.summary = summary;\n if (!success) status.error = summary;\n status.lastUpdate = endedAt;\n status.endedAt = endedAt;\n });\n writeAtomicJson(config.resultPath, {\n runId,\n ...(config.internal ? { internal: true } : {}),\n ...(config.operationId ? { operationId: config.operationId } : {}),\n agent: config.agent,\n runtime: config.runtime,\n success,\n summary,\n ...(exit.code === null ? {} : { exitCode: exit.code }),\n ...(exit.signal ? { signal: exit.signal } : {}),\n });\n\n statusWriter.close();\n cleanupProfile(!success);\n await finishTelemetry('doom_team.child_finished', {\n runtime: config.runtime,\n 'agent.name': config.agent,\n duration_ms: Date.now() - startedAt,\n 'runner.stdout_bytes': Buffer.byteLength(stdout, 'utf8'),\n 'runner.stderr_bytes': Buffer.byteLength(stderr, 'utf8'),\n 'runner.exit_code': exit.code ?? 0,\n outcome: stopped ? 'stopped' : success ? 'completed' : 'failed',\n });\n // The runner exit code reports transport health. Task success or failure is\n // encoded durably in status and result data before this process exits.\n process.exit(0);\n}\n\nvoid run().catch(async (error: unknown) => {\n await finishTelemetry('doom_team.child_failed', { outcome: 'failed' }, error);\n // Keep stdout reserved for vendor output. Stderr is captured in the run's\n // runner log and makes a transport failure diagnosable by the parent.\n process.stderr.write(`[doom-team cli runner] ${errorMessage(error)}\\n`);\n process.exitCode = 1;\n});\n"],"mappings":"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"}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import"../../src/
|
|
1
|
+
import{SUBAGENT_ROOT_SESSION_ENV as e,SUBAGENT_RUN_ID_ENV as t,init_environment as n}from"../../src/types/environment.mjs";import{init_atomicJson as r,writeAtomicJson as i,writePrivateAtomicJson as a}from"../../src/adapters/atomicJson.mjs";import{adoptSessionScopeFromEnv as o,currentRunConfigPath as s,init_paths as c}from"../../src/adapters/filesystem/paths.mjs";import{CoalescedStatusWriter as l,init_statusWriter as u}from"../../src/adapters/runs/background/statusWriter.mjs";import{init_statusReader as d,readAsyncRunStatus as f}from"../../src/adapters/statusReader.mjs";import{CLAUDE_FABLE_PROFILE as p,cleanupClaudeFableLaunch as m,init_claudeFableProfile as h,parseClaudeFableOutput as g}from"../../src/adapters/runs/shared/claudeFableProfile.mjs";import{startParentWatchdog as _}from"../../src/adapters/runs/background/parentWatchdog.mjs";import*as v from"node:fs";import{createDoomTelemetry as y}from"@agimon-ai/doompi-telemetry";import{spawn as b}from"node:child_process";n(),r(),c(),h(),d(),u();const x=`Parent process was lost.`,S=`SIGKILL`;function C(e){return e instanceof Error?e.message:String(e)}function w(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function T(e){let t=JSON.parse(v.readFileSync(s(e),`utf8`));if(!w(t)||t.runId!==e||typeof t.command!=`string`)throw Error(`CLI launch config for run '${e}' is invalid.`);return t}function E(e,t,n){let r=e+t;for(;Buffer.byteLength(r,`utf8`)>n&&r.length>0;){let e=Buffer.byteLength(r,`utf8`)-n;r=r.slice(Math.max(1,Math.ceil(e/2)))}return r}let D;async function O(e,t,n){let r=D;D=void 0,r&&(n===void 0?await r.recordEvent(e,t):await r.recordError(e,n,t),await r.flush(),await r.shutdown())}async function k(){let n=Date.now();D=y({serviceName:`doom-team-cli-child`,packageName:`@agimon-ai/doompi-team`,env:process.env,enableLogs:!0,enableTraces:!0});let r=process.env[t]?.trim();if(!r)throw Error(`${t} is required.`);if(!o())throw Error(`${e} is required: a child cannot resolve its session scope without it.`);let s;try{s=T(r)}catch(e){throw s?.handshakePath&&!v.existsSync(s.handshakePath)&&i(s.handshakePath,{state:`error`,error:C(e)}),e}let c=new l,u=Date.now();await D?.recordEvent(`doom_team.child_started`,{runtime:s.runtime,"agent.name":s.agent,outcome:`started`}),c.open(r,f(r)??{version:1,runId:r,...s.operationId?{operationId:s.operationId}:{},agent:s.agent,cwd:s.cwd,runtime:s.runtime,state:`queued`,startedAt:u,lastUpdate:u});let d=s.profile===p;if(s.profile!==void 0&&!d)throw Error(`Untrusted external profile.`);if(d&&(!s.stdinPath||!s.profileResultPath))throw Error(`Fable profile launch config is incomplete.`);let h=d?v.openSync(s.stdinPath,`r`):void 0,w;try{w=b(s.command,s.args,{cwd:s.cwd,env:d?s.env:{...process.env,...s.env},stdio:[h??`ignore`,`pipe`,`pipe`],detached:!0,windowsHide:!0})}catch(e){throw d&&(m({cleanupPaths:s.cleanupPaths??[]}),s.profileResultPath&&v.rmSync(s.profileResultPath,{force:!0})),e}finally{h!==void 0&&v.closeSync(h)}let k=e=>{d&&(m({cleanupPaths:s.cleanupPaths??[]}),e&&s.profileResultPath&&v.rmSync(s.profileResultPath,{force:!0}))},A,j=e=>{if(A=e,w.pid)try{process.kill(-w.pid,e)}catch(e){process.stderr.write(`[doom-team cli runner] Could not signal vendor process: ${C(e)}\n`)}};process.once(`SIGTERM`,j),process.once(`SIGINT`,j);try{await new Promise((e,t)=>{w.once(`spawn`,e),w.once(`error`,t)}),i(s.handshakePath,{state:`ready`}),c.updateSync(e=>{e.state=`running`,e.activityState=`working`,e.lastUpdate=Date.now()})}catch(e){let t=C(e);i(s.handshakePath,{state:`error`,error:t}),c.updateSync(e=>{e.state=`failed`,e.error=t,e.lastUpdate=Date.now(),e.endedAt=Date.now()}),i(s.resultPath,{runId:r,...s.internal?{internal:!0}:{},...s.operationId?{operationId:s.operationId}:{},agent:s.agent,runtime:s.runtime,success:!1,summary:d?`Fable Claude launch failed.`:t}),c.close(),k(!0),await O(`doom_team.child_failed`,{runtime:s.runtime,"agent.name":s.agent,duration_ms:Date.now()-n,outcome:`failed`},e),process.exit(1)}let M=_({onParentLost:()=>{j(S);let e=Date.now();c.updateSync(t=>{t.state=`stopped`,t.error=x,t.lastUpdate=e,t.endedAt=e}),i(s.resultPath,{runId:r,...s.internal?{internal:!0}:{},...s.operationId?{operationId:s.operationId}:{},agent:s.agent,runtime:s.runtime,success:!1,summary:x,signal:S}),c.close(),k(!0),O(`doom_team.child_finished`,{runtime:s.runtime,"agent.name":s.agent,duration_ms:Date.now()-n,outcome:`parent_lost`}).finally(()=>process.exit(0))}}),N=``,P=``;w.stdout?.on(`data`,e=>{N=E(N,e.toString(`utf8`),65536)}),w.stderr?.on(`data`,e=>{P=E(P,e.toString(`utf8`),8192)});let F=await new Promise(e=>{w.on(`error`,t=>e({code:null,signal:null,error:t})),w.on(`close`,(t,n)=>e({code:t,signal:n}))});M();let I=A!==void 0,L;if(d&&!I&&F.error===void 0&&F.code===0)try{let e=g(N);a(s.profileResultPath,{text:e.text,outputBytes:e.outputBytes})}catch(e){L=e instanceof Error?e:Error(String(e))}let R=!I&&F.error===void 0&&F.code===0&&L===void 0,z=d?L?.message??`Fable Claude launch failed.`:P.trim()||`${s.runtime} exited with ${F.signal??`code ${F.code??`unknown`}`}.`,B=I?`Stopped by ${A}.`:R?d?`Fable profile completed.`:N.trim():F.error?.message??z,V=Date.now();c.updateSync(e=>{e.state=I?`stopped`:R?`completed`:`failed`,e.activityState=`finalizing`,e.summary=B,R||(e.error=B),e.lastUpdate=V,e.endedAt=V}),i(s.resultPath,{runId:r,...s.internal?{internal:!0}:{},...s.operationId?{operationId:s.operationId}:{},agent:s.agent,runtime:s.runtime,success:R,summary:B,...F.code===null?{}:{exitCode:F.code},...F.signal?{signal:F.signal}:{}}),c.close(),k(!R),await O(`doom_team.child_finished`,{runtime:s.runtime,"agent.name":s.agent,duration_ms:Date.now()-n,"runner.stdout_bytes":Buffer.byteLength(N,`utf8`),"runner.stderr_bytes":Buffer.byteLength(P,`utf8`),"runner.exit_code":F.code??0,outcome:I?`stopped`:R?`completed`:`failed`}),process.exit(0)}k().catch(async e=>{await O(`doom_team.child_failed`,{outcome:`failed`},e),process.stderr.write(`[doom-team cli runner] ${C(e)}\n`),process.exitCode=1});export{};
|
|
2
|
+
//# sourceMappingURL=cliRunnerEntry.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cliRunnerEntry.mjs","names":[],"sources":["../../../src/adapters/runs/background/cliRunnerEntry.ts"],"sourcesContent":["/**\n * The detached child process for an external agent CLI.\n *\n * Counterpart to `sdkRunnerEntry.ts`, which does the same job for the\n * in-process Pi runtime. Both are spawned by `AsyncSubagentSpawner`, both write\n * the same `status.json` and the same terminal result, and both signal the same\n * handshake - so `AsyncJobTracker`, `ResultWatcher`, the fleet view, internal\n * completion monitors, and public `subagent` status handling cannot tell them apart.\n *\n * WHAT AN EXTERNAL CHILD DOES NOT GET, STATED PLAINLY:\n * No intercom, no steering, no structured output. Those\n * are delivered by `subagentPromptRuntime.ts`, which Pi loads in-process into\n * a Pi child; an arbitrary CLI has nowhere to load it. Team package tool\n * exclusions are therefore best effort for external runtimes. An external\n * child is a one-shot worker: it receives a prompt and returns output. Stop and interrupt\n * still work, because they are process-group signals rather than cooperative\n * file requests.\n *\n * WHY THE OUTPUT IS RECORDED, NOT PARSED:\n * A generic runner cannot know what a given CLI's output means. Trailing stdout\n * is the result; anything more specific would either be wrong for a CLI nobody\n * tested or lock the config to the two that were.\n *\n * AVOID:\n * - Vendor-specific parsing here. If a runtime needs it, that is a different\n * module and a deliberate decision\n */\n\nimport { spawn } from 'node:child_process';\nimport * as fs from 'node:fs';\n\nimport { createDoomTelemetry, type DoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport { SUBAGENT_ROOT_SESSION_ENV, SUBAGENT_RUN_ID_ENV } from '../../../types/environment';\nimport { writeAtomicJson, writePrivateAtomicJson } from '../../atomicJson';\nimport { adoptSessionScopeFromEnv, currentRunConfigPath } from '../../filesystem/paths';\nimport { CLAUDE_FABLE_PROFILE, cleanupClaudeFableLaunch, parseClaudeFableOutput } from '../shared/claudeFableProfile';\nimport type { AsyncRunStatus } from './asyncExecution';\nimport type { CliLaunchConfig } from './cliLaunchConfig';\nimport { startParentWatchdog } from './parentWatchdog';\nimport { readAsyncRunStatus } from '../../statusReader';\nimport { CoalescedStatusWriter } from './statusWriter';\n\n/** How much trailing stdout is kept as the run's result. */\nconst MAX_RESULT_BYTES = 64 * 1024;\n/** How much stderr is kept for a failure message. */\nconst MAX_STDERR_BYTES = 8 * 1024;\nconst PARENT_LOST_MESSAGE = 'Parent process was lost.';\nconst FORCE_KILL_SIGNAL: NodeJS.Signals = 'SIGKILL';\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction readLaunchConfig(runId: string): CliLaunchConfig {\n const parsed: unknown = JSON.parse(fs.readFileSync(currentRunConfigPath(runId), 'utf8'));\n if (!isRecord(parsed) || parsed.runId !== runId || typeof parsed.command !== 'string') {\n throw new Error(`CLI launch config for run '${runId}' is invalid.`);\n }\n return parsed as unknown as CliLaunchConfig;\n}\n\n/** Keep only a UTF-8-safe trailing value within `limit` bytes, so a chatty CLI cannot exhaust memory. */\nfunction appendBounded(buffer: string, chunk: string, limit: number): string {\n let combined = buffer + chunk;\n while (Buffer.byteLength(combined, 'utf8') > limit && combined.length > 0) {\n const excess = Buffer.byteLength(combined, 'utf8') - limit;\n combined = combined.slice(Math.max(1, Math.ceil(excess / 2)));\n }\n return combined;\n}\n\nlet childTelemetry: DoomTelemetry | undefined;\n\nasync function finishTelemetry(event: string, attributes: Record<string, unknown>, error?: unknown): Promise<void> {\n const telemetry = childTelemetry;\n childTelemetry = undefined;\n if (!telemetry) return;\n if (error === undefined) await telemetry.recordEvent(event, attributes);\n else await telemetry.recordError(event, error, attributes);\n await telemetry.flush();\n await telemetry.shutdown();\n}\n\nasync function run(): Promise<void> {\n const startedAt = Date.now();\n childTelemetry = createDoomTelemetry({\n serviceName: 'doom-team-cli-child',\n packageName: '@agimon-ai/doompi-team',\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const runId = process.env[SUBAGENT_RUN_ID_ENV]?.trim();\n if (!runId) throw new Error(`${SUBAGENT_RUN_ID_ENV} is required.`);\n if (!adoptSessionScopeFromEnv()) {\n throw new Error(`${SUBAGENT_ROOT_SESSION_ENV} is required: a child cannot resolve its session scope without it.`);\n }\n\n let config: CliLaunchConfig | undefined;\n try {\n config = readLaunchConfig(runId);\n // The vendor process emits its own spawn event before the ready handshake\n // is written below. Reading the config alone is not sufficient evidence\n // that the configured executable can start.\n } catch (error) {\n if (config?.handshakePath && !fs.existsSync(config.handshakePath)) {\n writeAtomicJson(config.handshakePath, { state: 'error', error: errorMessage(error) });\n }\n throw error;\n }\n\n const statusWriter = new CoalescedStatusWriter<AsyncRunStatus>();\n const now = Date.now();\n await childTelemetry?.recordEvent('doom_team.child_started', {\n runtime: config.runtime,\n 'agent.name': config.agent,\n outcome: 'started',\n });\n statusWriter.open(\n runId,\n readAsyncRunStatus(runId) ?? {\n version: 1,\n runId,\n ...(config.operationId ? { operationId: config.operationId } : {}),\n agent: config.agent,\n cwd: config.cwd,\n runtime: config.runtime,\n state: 'queued',\n startedAt: now,\n lastUpdate: now,\n },\n );\n\n const profileLaunch = config.profile === CLAUDE_FABLE_PROFILE;\n if (config.profile !== undefined && !profileLaunch) throw new Error('Untrusted external profile.');\n if (profileLaunch && (!config.stdinPath || !config.profileResultPath)) {\n throw new Error('Fable profile launch config is incomplete.');\n }\n const stdinFd = profileLaunch ? fs.openSync(config.stdinPath!, 'r') : undefined;\n let child: ReturnType<typeof spawn>;\n try {\n child = spawn(config.command, config.args, {\n cwd: config.cwd,\n env: profileLaunch ? config.env : { ...process.env, ...config.env },\n stdio: [stdinFd ?? 'ignore', 'pipe', 'pipe'],\n // Its own group, so the watchdog below can take the CLI and anything it\n // spawned down together.\n detached: true,\n windowsHide: true,\n });\n } catch (error) {\n if (profileLaunch) {\n cleanupClaudeFableLaunch({ cleanupPaths: config.cleanupPaths ?? [] });\n if (config.profileResultPath) fs.rmSync(config.profileResultPath, { force: true });\n }\n throw error;\n } finally {\n if (stdinFd !== undefined) fs.closeSync(stdinFd);\n }\n const cleanupProfile = (removeResult: boolean): void => {\n if (!profileLaunch) return;\n cleanupClaudeFableLaunch({ cleanupPaths: config.cleanupPaths ?? [] });\n if (removeResult && config.profileResultPath) fs.rmSync(config.profileResultPath, { force: true });\n };\n\n let requestedSignal: NodeJS.Signals | undefined;\n const stopVendor = (signal: NodeJS.Signals): void => {\n requestedSignal = signal;\n if (!child.pid) return;\n try {\n process.kill(-child.pid, signal);\n } catch (error) {\n process.stderr.write(`[doom-team cli runner] Could not signal vendor process: ${errorMessage(error)}\\n`);\n }\n };\n process.once('SIGTERM', stopVendor);\n process.once('SIGINT', stopVendor);\n\n try {\n await new Promise<void>((resolve, reject) => {\n child.once('spawn', resolve);\n child.once('error', reject);\n });\n writeAtomicJson(config.handshakePath, { state: 'ready' });\n statusWriter.updateSync((status) => {\n status.state = 'running';\n status.activityState = 'working';\n status.lastUpdate = Date.now();\n });\n } catch (error) {\n const message = errorMessage(error);\n writeAtomicJson(config.handshakePath, { state: 'error', error: message });\n statusWriter.updateSync((status) => {\n status.state = 'failed';\n status.error = message;\n status.lastUpdate = Date.now();\n status.endedAt = Date.now();\n });\n writeAtomicJson(config.resultPath, {\n runId,\n ...(config.internal ? { internal: true } : {}),\n ...(config.operationId ? { operationId: config.operationId } : {}),\n agent: config.agent,\n runtime: config.runtime,\n success: false,\n summary: profileLaunch ? 'Fable Claude launch failed.' : message,\n });\n statusWriter.close();\n cleanupProfile(true);\n await finishTelemetry(\n 'doom_team.child_failed',\n { runtime: config.runtime, 'agent.name': config.agent, duration_ms: Date.now() - startedAt, outcome: 'failed' },\n error,\n );\n process.exit(1);\n }\n\n // A SIGKILLed parent cannot signal us, so terminate the vendor tree and\n // persist a terminal record before leaving when the watchdog can observe it.\n const stopWatchdog = startParentWatchdog({\n onParentLost: () => {\n stopVendor(FORCE_KILL_SIGNAL);\n const endedAt = Date.now();\n statusWriter.updateSync((status) => {\n status.state = 'stopped';\n status.error = PARENT_LOST_MESSAGE;\n status.lastUpdate = endedAt;\n status.endedAt = endedAt;\n });\n writeAtomicJson(config.resultPath, {\n runId,\n ...(config.internal ? { internal: true } : {}),\n ...(config.operationId ? { operationId: config.operationId } : {}),\n agent: config.agent,\n runtime: config.runtime,\n success: false,\n summary: PARENT_LOST_MESSAGE,\n signal: FORCE_KILL_SIGNAL,\n });\n statusWriter.close();\n cleanupProfile(true);\n void finishTelemetry('doom_team.child_finished', {\n runtime: config.runtime,\n 'agent.name': config.agent,\n duration_ms: Date.now() - startedAt,\n outcome: 'parent_lost',\n }).finally(() => process.exit(0));\n },\n });\n\n let stdout = '';\n let stderr = '';\n child.stdout?.on('data', (chunk: Buffer) => {\n stdout = appendBounded(stdout, chunk.toString('utf8'), MAX_RESULT_BYTES);\n });\n child.stderr?.on('data', (chunk: Buffer) => {\n stderr = appendBounded(stderr, chunk.toString('utf8'), MAX_STDERR_BYTES);\n });\n\n const exit = await new Promise<{ code: number | null; signal: NodeJS.Signals | null; error?: Error }>((resolve) => {\n child.on('error', (error) => resolve({ code: null, signal: null, error }));\n child.on('close', (code, signal) => resolve({ code, signal }));\n });\n\n stopWatchdog();\n\n const stopped = requestedSignal !== undefined;\n let profileError: Error | undefined;\n if (profileLaunch && !stopped && exit.error === undefined && exit.code === 0) {\n try {\n const parsed = parseClaudeFableOutput(stdout);\n writePrivateAtomicJson(config.profileResultPath!, { text: parsed.text, outputBytes: parsed.outputBytes });\n } catch (error) {\n profileError = error instanceof Error ? error : new Error(String(error));\n }\n }\n const success = !stopped && exit.error === undefined && exit.code === 0 && profileError === undefined;\n const failureDetail = profileLaunch\n ? (profileError?.message ?? 'Fable Claude launch failed.')\n : stderr.trim() || `${config.runtime} exited with ${exit.signal ?? `code ${exit.code ?? 'unknown'}`}.`;\n const summary = stopped\n ? `Stopped by ${requestedSignal}.`\n : success\n ? profileLaunch\n ? 'Fable profile completed.'\n : stdout.trim()\n : (exit.error?.message ?? failureDetail);\n const endedAt = Date.now();\n\n statusWriter.updateSync((status) => {\n status.state = stopped ? 'stopped' : success ? 'completed' : 'failed';\n status.activityState = 'finalizing';\n status.summary = summary;\n if (!success) status.error = summary;\n status.lastUpdate = endedAt;\n status.endedAt = endedAt;\n });\n writeAtomicJson(config.resultPath, {\n runId,\n ...(config.internal ? { internal: true } : {}),\n ...(config.operationId ? { operationId: config.operationId } : {}),\n agent: config.agent,\n runtime: config.runtime,\n success,\n summary,\n ...(exit.code === null ? {} : { exitCode: exit.code }),\n ...(exit.signal ? { signal: exit.signal } : {}),\n });\n\n statusWriter.close();\n cleanupProfile(!success);\n await finishTelemetry('doom_team.child_finished', {\n runtime: config.runtime,\n 'agent.name': config.agent,\n duration_ms: Date.now() - startedAt,\n 'runner.stdout_bytes': Buffer.byteLength(stdout, 'utf8'),\n 'runner.stderr_bytes': Buffer.byteLength(stderr, 'utf8'),\n 'runner.exit_code': exit.code ?? 0,\n outcome: stopped ? 'stopped' : success ? 'completed' : 'failed',\n });\n // The runner exit code reports transport health. Task success or failure is\n // encoded durably in status and result data before this process exits.\n process.exit(0);\n}\n\nvoid run().catch(async (error: unknown) => {\n await finishTelemetry('doom_team.child_failed', { outcome: 'failed' }, error);\n // Keep stdout reserved for vendor output. Stderr is captured in the run's\n // runner log and makes a transport failure diagnosable by the parent.\n process.stderr.write(`[doom-team cli runner] ${errorMessage(error)}\\n`);\n process.exitCode = 1;\n});\n"],"mappings":"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"}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../src/adapters/process/
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../src/types/environment.cjs"),n=require("../src/adapters/atomicJson.cjs"),r=require("../src/adapters/filesystem/paths.cjs"),i=require("../src/adapters/process/childTranscript.cjs"),a=require("../src/adapters/runs/background/parentWatchdog.cjs"),o=require("../src/services/runs/extensionErrorTelemetry.cjs");let s=require("node:fs");s=e.__toESM(s,1);let c=require("@agimon-ai/doompi-telemetry"),l=require("@earendil-works/pi-coding-agent"),u=require("@agimon-ai/doompi-extension-contracts/child-process");const d=`doom_team.child_finished`,f=`doom_team.child_failed`;function p(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function m(e){return e instanceof Error?e.message:String(e)}function h(e){let t=r.currentRunConfigPath(e),n=JSON.parse(s.readFileSync(t,`utf8`));if(!p(n)||n.runId!==e||!p(n.sdk))throw Error(`Launch config for run '${e}' is invalid.`);return n}function g(e){let{cwd:t,sdk:n}=e;return n.sessionFile?l.SessionManager.open(n.sessionFile,n.sessionDir,t):n.sessionEnabled?l.SessionManager.create(t,n.sessionDir):l.SessionManager.inMemory(t)}function _(e,t){let r=e?.handshakePath;!r||s.existsSync(r)||n.writeAtomicJson(r,{state:`error`,error:m(t)})}let v,y;async function b(e,t,n){let r=y;y=void 0,r&&(n===void 0?await r.recordEvent(e,t):await r.recordError(e,n,t),await r.flush(),await r.shutdown())}async function x(){let e=Date.now();y=(0,c.createDoomTelemetry)({serviceName:`doom-team-sdk-child`,packageName:`@agimon-ai/doompi-team`,env:process.env,enableLogs:!0,enableTraces:!0});let n=process.env[t.SUBAGENT_RUN_ID_ENV]?.trim();if(!n)throw Error(`${t.SUBAGENT_RUN_ID_ENV} is required.`);if(!r.adoptSessionScopeFromEnv())throw Error(`${u.SUBAGENT_ROOT_SESSION_ENV} is required: a child cannot resolve its session scope without it.`);let s;try{s=h(n);let t=s;await y?.recordEvent(`doom_team.child_started`,{runtime:`sdk`,"agent.name":t.agent,...t.sdk.model?{"model.id":t.sdk.model}:{},outcome:`started`});let{sdk:r}=t,c=(0,l.getAgentDir)(),u=await(0,l.createAgentSessionServices)({cwd:s.cwd,agentDir:c,resourceLoaderOptions:{additionalExtensionPaths:r.extensions,additionalSkillPaths:r.skillPaths,noExtensions:r.noAmbientExtensions,noSkills:r.noSkills,noContextFiles:r.noContextFiles,...r.systemPromptMode===`replace`?{systemPrompt:r.systemPrompt}:{},...r.systemPrompt&&r.systemPromptMode!==`replace`?{appendSystemPrompt:[r.systemPrompt]}:{}}}),f=u.diagnostics.find(e=>e.type===`error`);if(f)throw Error(f.message);let p=r.model?(0,l.resolveCliModel)({cliModel:r.model,modelRuntime:u.modelRuntime}):void 0;if(p&&!p.model)throw Error(p.error??`Model '${r.model}' was not found.`);let{session:m}=await(0,l.createAgentSessionFromServices)({services:u,sessionManager:g(s),...p?.model?{model:p.model}:{},...p?.thinkingLevel?{thinkingLevel:p.thinkingLevel}:{},...r.tools?{tools:r.tools}:{},...r.noTools?{noTools:r.noTools}:{},...r.excludeTools?{excludeTools:r.excludeTools}:{}});v=a.startParentWatchdog({onParentLost:()=>{m.dispose(),b(d,{runtime:`sdk`,"agent.name":t.agent,duration_ms:Date.now()-e,outcome:`parent_lost`}).finally(()=>process.exit(0))}});let _=s.transcriptPath?i.createChildTranscriptWriter({transcriptPath:s.transcriptPath,source:`async`,runId:s.runId,agent:s.agent,childIndex:s.childIndex,cwd:s.cwd}):void 0;_?.writeInitialUserMessage(s.task);let x=m.subscribe(n=>{_?.writeChildEvent(n),n.type===`agent_end`&&setImmediate(()=>{m.agent.hasQueuedMessages()||(m.dispose(),b(d,{runtime:`sdk`,"agent.name":t.agent,duration_ms:Date.now()-e,outcome:`completed`}).finally(()=>process.exit(0)))})});try{await m.bindExtensions({mode:`print`,onError:e=>{o.recordNonBlockingExtensionError(y,e)}}),await m.prompt(s.task)}finally{v?.(),x(),m.dispose(),await b(d,{runtime:`sdk`,"agent.name":t.agent,duration_ms:Date.now()-e,outcome:`completed`})}}catch(e){throw _(s,e),await b(f,{outcome:`failed`},e),e}}x().then(()=>{process.exit(0)},async e=>{await b(f,{outcome:`failed`},e);let t=e instanceof Error?e:Error(`Doom Team SDK child failed`,{cause:e});setImmediate(()=>{throw t})}),exports.runSdkChild=x;
|
|
2
|
+
//# sourceMappingURL=sdkRunnerEntry.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkRunnerEntry.cjs","names":["currentRunConfigPath","fs","SessionManager","createDoomTelemetry","SUBAGENT_RUN_ID_ENV","adoptSessionScopeFromEnv","SUBAGENT_ROOT_SESSION_ENV","getAgentDir","createAgentSessionServices","resolveCliModel","createAgentSessionFromServices","startParentWatchdog","createChildTranscriptWriter"],"sources":["../../src/adapters/process/sdkRunnerEntry.ts"],"sourcesContent":["import * as fs from 'node:fs';\nimport { createDoomTelemetry, type DoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport {\n createAgentSessionFromServices,\n createAgentSessionServices,\n getAgentDir,\n resolveCliModel,\n SessionManager,\n} from '@earendil-works/pi-coding-agent';\n\nimport type { LaunchConfig } from '../runs/background/asyncExecution';\nimport { startParentWatchdog } from '../runs/background/parentWatchdog';\nimport { recordNonBlockingExtensionError } from '../../services/runs/extensionErrorTelemetry';\nimport { writeAtomicJson } from '../atomicJson';\nimport { createChildTranscriptWriter } from './childTranscript';\nimport { adoptSessionScopeFromEnv, currentRunConfigPath } from '../filesystem/paths';\nimport { SUBAGENT_ROOT_SESSION_ENV, SUBAGENT_RUN_ID_ENV } from '../../types/environment';\n\nconst SDK_RUNTIME = 'sdk';\nconst CHILD_STARTED_EVENT = 'doom_team.child_started';\nconst CHILD_FINISHED_EVENT = 'doom_team.child_finished';\nconst CHILD_FAILED_EVENT = 'doom_team.child_failed';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction readLaunchConfig(runId: string): LaunchConfig {\n const configPath = currentRunConfigPath(runId);\n const parsed: unknown = JSON.parse(fs.readFileSync(configPath, 'utf8'));\n if (!isRecord(parsed) || parsed.runId !== runId || !isRecord(parsed.sdk)) {\n throw new Error(`Launch config for run '${runId}' is invalid.`);\n }\n return parsed as unknown as LaunchConfig;\n}\n\nfunction createSessionManager(config: LaunchConfig): SessionManager {\n const { cwd, sdk } = config;\n if (sdk.sessionFile) return SessionManager.open(sdk.sessionFile, sdk.sessionDir, cwd);\n if (sdk.sessionEnabled) return SessionManager.create(cwd, sdk.sessionDir);\n return SessionManager.inMemory(cwd);\n}\n\nfunction writeStartupError(config: LaunchConfig | undefined, error: unknown): void {\n const handshakePath = config?.handshakePath;\n if (!handshakePath || fs.existsSync(handshakePath)) return;\n writeAtomicJson(handshakePath, { state: 'error', error: errorMessage(error) });\n}\n\nlet stopWatchdog: (() => void) | undefined;\nlet childTelemetry: DoomTelemetry | undefined;\n\nasync function finishTelemetry(event: string, attributes: Record<string, unknown>, error?: unknown): Promise<void> {\n const telemetry = childTelemetry;\n childTelemetry = undefined;\n if (!telemetry) return;\n if (error === undefined) await telemetry.recordEvent(event, attributes);\n else await telemetry.recordError(event, error, attributes);\n await telemetry.flush();\n await telemetry.shutdown();\n}\n\nexport async function runSdkChild(): Promise<void> {\n const startedAt = Date.now();\n childTelemetry = createDoomTelemetry({\n serviceName: 'doom-team-sdk-child',\n packageName: '@agimon-ai/doompi-team',\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const runId = process.env[SUBAGENT_RUN_ID_ENV]?.trim();\n if (!runId) throw new Error(`${SUBAGENT_RUN_ID_ENV} is required.`);\n // Before the launch config is read: its own path is scoped, so a child that\n // was spawned without a scope cannot find anything and should say why.\n if (!adoptSessionScopeFromEnv()) {\n throw new Error(`${SUBAGENT_ROOT_SESSION_ENV} is required: a child cannot resolve its session scope without it.`);\n }\n\n let config: LaunchConfig | undefined;\n try {\n config = readLaunchConfig(runId);\n const launchConfig = config;\n await childTelemetry?.recordEvent(CHILD_STARTED_EVENT, {\n runtime: SDK_RUNTIME,\n 'agent.name': launchConfig.agent,\n ...(launchConfig.sdk.model ? { 'model.id': launchConfig.sdk.model } : {}),\n outcome: 'started',\n });\n const { sdk } = launchConfig;\n const agentDir = getAgentDir();\n const services = await createAgentSessionServices({\n cwd: config.cwd,\n agentDir,\n resourceLoaderOptions: {\n additionalExtensionPaths: sdk.extensions,\n additionalSkillPaths: sdk.skillPaths,\n noExtensions: sdk.noAmbientExtensions,\n noSkills: sdk.noSkills,\n noContextFiles: sdk.noContextFiles,\n ...(sdk.systemPromptMode === 'replace' ? { systemPrompt: sdk.systemPrompt } : {}),\n ...(sdk.systemPrompt && sdk.systemPromptMode !== 'replace' ? { appendSystemPrompt: [sdk.systemPrompt] } : {}),\n },\n });\n const serviceError = services.diagnostics.find((diagnostic) => diagnostic.type === 'error');\n if (serviceError) throw new Error(serviceError.message);\n\n const resolved = sdk.model\n ? resolveCliModel({ cliModel: sdk.model, modelRuntime: services.modelRuntime })\n : undefined;\n if (resolved && !resolved.model) throw new Error(resolved.error ?? `Model '${sdk.model}' was not found.`);\n\n const { session } = await createAgentSessionFromServices({\n services,\n sessionManager: createSessionManager(config),\n ...(resolved?.model ? { model: resolved.model } : {}),\n ...(resolved?.thinkingLevel ? { thinkingLevel: resolved.thinkingLevel } : {}),\n ...(sdk.tools ? { tools: sdk.tools } : {}),\n ...(sdk.noTools ? { noTools: sdk.noTools } : {}),\n ...(sdk.excludeTools ? { excludeTools: sdk.excludeTools } : {}),\n });\n // The parent cannot signal us if it was SIGKILLed, and we are in our own\n // process group so its terminal cannot either. This is the only thing that\n // ends this run in that case.\n stopWatchdog = startParentWatchdog({\n onParentLost: () => {\n session.dispose();\n void finishTelemetry(CHILD_FINISHED_EVENT, {\n runtime: SDK_RUNTIME,\n 'agent.name': launchConfig.agent,\n duration_ms: Date.now() - startedAt,\n outcome: 'parent_lost',\n }).finally(() => process.exit(0));\n },\n });\n\n const transcript = config.transcriptPath\n ? createChildTranscriptWriter({\n transcriptPath: config.transcriptPath,\n source: 'async',\n runId: config.runId,\n agent: config.agent,\n childIndex: config.childIndex,\n cwd: config.cwd,\n })\n : undefined;\n transcript?.writeInitialUserMessage(config.task);\n const unsubscribe = session.subscribe((event) => {\n transcript?.writeChildEvent(event);\n if (event.type !== 'agent_end') return;\n // Pi emits session listeners only after awaiting every extension's\n // agent_end handler, including Doom Team's terminal persistence. Defer\n // one event-loop turn so every listener observes the event, then end\n // this dedicated one-session process unless an agent_end handler queued\n // a nudge or follow-up that Pi still needs to run.\n setImmediate(() => {\n if (session.agent.hasQueuedMessages()) return;\n session.dispose();\n void finishTelemetry(CHILD_FINISHED_EVENT, {\n runtime: SDK_RUNTIME,\n 'agent.name': launchConfig.agent,\n duration_ms: Date.now() - startedAt,\n outcome: 'completed',\n }).finally(() => process.exit(0));\n });\n });\n\n try {\n await session.bindExtensions({\n mode: 'print',\n onError: (failure) => {\n recordNonBlockingExtensionError(childTelemetry, failure);\n },\n });\n await session.prompt(config.task);\n } finally {\n stopWatchdog?.();\n unsubscribe();\n session.dispose();\n await finishTelemetry(CHILD_FINISHED_EVENT, {\n runtime: SDK_RUNTIME,\n 'agent.name': launchConfig.agent,\n duration_ms: Date.now() - startedAt,\n outcome: 'completed',\n });\n }\n } catch (error) {\n writeStartupError(config, error);\n await finishTelemetry(CHILD_FAILED_EVENT, { outcome: 'failed' }, error);\n throw error;\n }\n}\n\nvoid runSdkChild().then(\n () => {\n // This entry point owns a dedicated detached process for exactly one SDK\n // session. Extensions may retain polling intervals after session.dispose(),\n // so a successful run must terminate explicitly once synchronous result\n // persistence and session cleanup have completed.\n process.exit(0);\n },\n async (error: unknown) => {\n await finishTelemetry(CHILD_FAILED_EVENT, { outcome: 'failed' }, error);\n const failure = error instanceof Error ? error : new Error('Doom Team SDK child failed', { cause: error });\n setImmediate(() => {\n throw failure;\n });\n },\n);\n"],"mappings":"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"}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
//#region src/adapters/process/sdkRunnerEntry.d.ts
|
|
2
|
+
declare function runSdkChild(): Promise<void>;
|
|
3
|
+
//#endregion
|
|
4
|
+
export { runSdkChild };
|
|
5
|
+
//# sourceMappingURL=sdkRunnerEntry.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkRunnerEntry.d.cts","names":[],"sources":["../../src/adapters/process/sdkRunnerEntry.ts"],"mappings":";iBAkEsB,eAAe"}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
//#region src/adapters/process/sdkRunnerEntry.d.ts
|
|
2
|
+
declare function runSdkChild(): Promise<void>;
|
|
3
|
+
//#endregion
|
|
4
|
+
export { runSdkChild };
|
|
5
|
+
//# sourceMappingURL=sdkRunnerEntry.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkRunnerEntry.d.mts","names":[],"sources":["../../src/adapters/process/sdkRunnerEntry.ts"],"mappings":";iBAkEsB,eAAe"}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{SUBAGENT_ROOT_SESSION_ENV as e,SUBAGENT_RUN_ID_ENV as t,init_environment as n}from"../src/types/environment.mjs";import{init_atomicJson as r,writeAtomicJson as i}from"../src/adapters/atomicJson.mjs";import{adoptSessionScopeFromEnv as a,currentRunConfigPath as o,init_paths as s}from"../src/adapters/filesystem/paths.mjs";import{createChildTranscriptWriter as c,init_childTranscript as l}from"../src/adapters/process/childTranscript.mjs";import{startParentWatchdog as u}from"../src/adapters/runs/background/parentWatchdog.mjs";import{recordNonBlockingExtensionError as d}from"../src/services/runs/extensionErrorTelemetry.mjs";import*as f from"node:fs";import{createDoomTelemetry as p}from"@agimon-ai/doompi-telemetry";import{SessionManager as m,createAgentSessionFromServices as h,createAgentSessionServices as g,getAgentDir as _,resolveCliModel as v}from"@earendil-works/pi-coding-agent";r(),l(),s(),n();const y=`doom_team.child_finished`,b=`doom_team.child_failed`;function x(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function S(e){return e instanceof Error?e.message:String(e)}function C(e){let t=o(e),n=JSON.parse(f.readFileSync(t,`utf8`));if(!x(n)||n.runId!==e||!x(n.sdk))throw Error(`Launch config for run '${e}' is invalid.`);return n}function w(e){let{cwd:t,sdk:n}=e;return n.sessionFile?m.open(n.sessionFile,n.sessionDir,t):n.sessionEnabled?m.create(t,n.sessionDir):m.inMemory(t)}function T(e,t){let n=e?.handshakePath;!n||f.existsSync(n)||i(n,{state:`error`,error:S(t)})}let E,D;async function O(e,t,n){let r=D;D=void 0,r&&(n===void 0?await r.recordEvent(e,t):await r.recordError(e,n,t),await r.flush(),await r.shutdown())}async function k(){let n=Date.now();D=p({serviceName:`doom-team-sdk-child`,packageName:`@agimon-ai/doompi-team`,env:process.env,enableLogs:!0,enableTraces:!0});let r=process.env[t]?.trim();if(!r)throw Error(`${t} is required.`);if(!a())throw Error(`${e} is required: a child cannot resolve its session scope without it.`);let i;try{i=C(r);let e=i;await D?.recordEvent(`doom_team.child_started`,{runtime:`sdk`,"agent.name":e.agent,...e.sdk.model?{"model.id":e.sdk.model}:{},outcome:`started`});let{sdk:t}=e,a=_(),o=await g({cwd:i.cwd,agentDir:a,resourceLoaderOptions:{additionalExtensionPaths:t.extensions,additionalSkillPaths:t.skillPaths,noExtensions:t.noAmbientExtensions,noSkills:t.noSkills,noContextFiles:t.noContextFiles,...t.systemPromptMode===`replace`?{systemPrompt:t.systemPrompt}:{},...t.systemPrompt&&t.systemPromptMode!==`replace`?{appendSystemPrompt:[t.systemPrompt]}:{}}}),s=o.diagnostics.find(e=>e.type===`error`);if(s)throw Error(s.message);let l=t.model?v({cliModel:t.model,modelRuntime:o.modelRuntime}):void 0;if(l&&!l.model)throw Error(l.error??`Model '${t.model}' was not found.`);let{session:f}=await h({services:o,sessionManager:w(i),...l?.model?{model:l.model}:{},...l?.thinkingLevel?{thinkingLevel:l.thinkingLevel}:{},...t.tools?{tools:t.tools}:{},...t.noTools?{noTools:t.noTools}:{},...t.excludeTools?{excludeTools:t.excludeTools}:{}});E=u({onParentLost:()=>{f.dispose(),O(y,{runtime:`sdk`,"agent.name":e.agent,duration_ms:Date.now()-n,outcome:`parent_lost`}).finally(()=>process.exit(0))}});let p=i.transcriptPath?c({transcriptPath:i.transcriptPath,source:`async`,runId:i.runId,agent:i.agent,childIndex:i.childIndex,cwd:i.cwd}):void 0;p?.writeInitialUserMessage(i.task);let m=f.subscribe(t=>{p?.writeChildEvent(t),t.type===`agent_end`&&setImmediate(()=>{f.agent.hasQueuedMessages()||(f.dispose(),O(y,{runtime:`sdk`,"agent.name":e.agent,duration_ms:Date.now()-n,outcome:`completed`}).finally(()=>process.exit(0)))})});try{await f.bindExtensions({mode:`print`,onError:e=>{d(D,e)}}),await f.prompt(i.task)}finally{E?.(),m(),f.dispose(),await O(y,{runtime:`sdk`,"agent.name":e.agent,duration_ms:Date.now()-n,outcome:`completed`})}}catch(e){throw T(i,e),await O(b,{outcome:`failed`},e),e}}k().then(()=>{process.exit(0)},async e=>{await O(b,{outcome:`failed`},e);let t=e instanceof Error?e:Error(`Doom Team SDK child failed`,{cause:e});setImmediate(()=>{throw t})});export{k as runSdkChild};
|
|
2
|
+
//# sourceMappingURL=sdkRunnerEntry.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkRunnerEntry.mjs","names":[],"sources":["../../src/adapters/process/sdkRunnerEntry.ts"],"sourcesContent":["import * as fs from 'node:fs';\nimport { createDoomTelemetry, type DoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport {\n createAgentSessionFromServices,\n createAgentSessionServices,\n getAgentDir,\n resolveCliModel,\n SessionManager,\n} from '@earendil-works/pi-coding-agent';\n\nimport type { LaunchConfig } from '../runs/background/asyncExecution';\nimport { startParentWatchdog } from '../runs/background/parentWatchdog';\nimport { recordNonBlockingExtensionError } from '../../services/runs/extensionErrorTelemetry';\nimport { writeAtomicJson } from '../atomicJson';\nimport { createChildTranscriptWriter } from './childTranscript';\nimport { adoptSessionScopeFromEnv, currentRunConfigPath } from '../filesystem/paths';\nimport { SUBAGENT_ROOT_SESSION_ENV, SUBAGENT_RUN_ID_ENV } from '../../types/environment';\n\nconst SDK_RUNTIME = 'sdk';\nconst CHILD_STARTED_EVENT = 'doom_team.child_started';\nconst CHILD_FINISHED_EVENT = 'doom_team.child_finished';\nconst CHILD_FAILED_EVENT = 'doom_team.child_failed';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction readLaunchConfig(runId: string): LaunchConfig {\n const configPath = currentRunConfigPath(runId);\n const parsed: unknown = JSON.parse(fs.readFileSync(configPath, 'utf8'));\n if (!isRecord(parsed) || parsed.runId !== runId || !isRecord(parsed.sdk)) {\n throw new Error(`Launch config for run '${runId}' is invalid.`);\n }\n return parsed as unknown as LaunchConfig;\n}\n\nfunction createSessionManager(config: LaunchConfig): SessionManager {\n const { cwd, sdk } = config;\n if (sdk.sessionFile) return SessionManager.open(sdk.sessionFile, sdk.sessionDir, cwd);\n if (sdk.sessionEnabled) return SessionManager.create(cwd, sdk.sessionDir);\n return SessionManager.inMemory(cwd);\n}\n\nfunction writeStartupError(config: LaunchConfig | undefined, error: unknown): void {\n const handshakePath = config?.handshakePath;\n if (!handshakePath || fs.existsSync(handshakePath)) return;\n writeAtomicJson(handshakePath, { state: 'error', error: errorMessage(error) });\n}\n\nlet stopWatchdog: (() => void) | undefined;\nlet childTelemetry: DoomTelemetry | undefined;\n\nasync function finishTelemetry(event: string, attributes: Record<string, unknown>, error?: unknown): Promise<void> {\n const telemetry = childTelemetry;\n childTelemetry = undefined;\n if (!telemetry) return;\n if (error === undefined) await telemetry.recordEvent(event, attributes);\n else await telemetry.recordError(event, error, attributes);\n await telemetry.flush();\n await telemetry.shutdown();\n}\n\nexport async function runSdkChild(): Promise<void> {\n const startedAt = Date.now();\n childTelemetry = createDoomTelemetry({\n serviceName: 'doom-team-sdk-child',\n packageName: '@agimon-ai/doompi-team',\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const runId = process.env[SUBAGENT_RUN_ID_ENV]?.trim();\n if (!runId) throw new Error(`${SUBAGENT_RUN_ID_ENV} is required.`);\n // Before the launch config is read: its own path is scoped, so a child that\n // was spawned without a scope cannot find anything and should say why.\n if (!adoptSessionScopeFromEnv()) {\n throw new Error(`${SUBAGENT_ROOT_SESSION_ENV} is required: a child cannot resolve its session scope without it.`);\n }\n\n let config: LaunchConfig | undefined;\n try {\n config = readLaunchConfig(runId);\n const launchConfig = config;\n await childTelemetry?.recordEvent(CHILD_STARTED_EVENT, {\n runtime: SDK_RUNTIME,\n 'agent.name': launchConfig.agent,\n ...(launchConfig.sdk.model ? { 'model.id': launchConfig.sdk.model } : {}),\n outcome: 'started',\n });\n const { sdk } = launchConfig;\n const agentDir = getAgentDir();\n const services = await createAgentSessionServices({\n cwd: config.cwd,\n agentDir,\n resourceLoaderOptions: {\n additionalExtensionPaths: sdk.extensions,\n additionalSkillPaths: sdk.skillPaths,\n noExtensions: sdk.noAmbientExtensions,\n noSkills: sdk.noSkills,\n noContextFiles: sdk.noContextFiles,\n ...(sdk.systemPromptMode === 'replace' ? { systemPrompt: sdk.systemPrompt } : {}),\n ...(sdk.systemPrompt && sdk.systemPromptMode !== 'replace' ? { appendSystemPrompt: [sdk.systemPrompt] } : {}),\n },\n });\n const serviceError = services.diagnostics.find((diagnostic) => diagnostic.type === 'error');\n if (serviceError) throw new Error(serviceError.message);\n\n const resolved = sdk.model\n ? resolveCliModel({ cliModel: sdk.model, modelRuntime: services.modelRuntime })\n : undefined;\n if (resolved && !resolved.model) throw new Error(resolved.error ?? `Model '${sdk.model}' was not found.`);\n\n const { session } = await createAgentSessionFromServices({\n services,\n sessionManager: createSessionManager(config),\n ...(resolved?.model ? { model: resolved.model } : {}),\n ...(resolved?.thinkingLevel ? { thinkingLevel: resolved.thinkingLevel } : {}),\n ...(sdk.tools ? { tools: sdk.tools } : {}),\n ...(sdk.noTools ? { noTools: sdk.noTools } : {}),\n ...(sdk.excludeTools ? { excludeTools: sdk.excludeTools } : {}),\n });\n // The parent cannot signal us if it was SIGKILLed, and we are in our own\n // process group so its terminal cannot either. This is the only thing that\n // ends this run in that case.\n stopWatchdog = startParentWatchdog({\n onParentLost: () => {\n session.dispose();\n void finishTelemetry(CHILD_FINISHED_EVENT, {\n runtime: SDK_RUNTIME,\n 'agent.name': launchConfig.agent,\n duration_ms: Date.now() - startedAt,\n outcome: 'parent_lost',\n }).finally(() => process.exit(0));\n },\n });\n\n const transcript = config.transcriptPath\n ? createChildTranscriptWriter({\n transcriptPath: config.transcriptPath,\n source: 'async',\n runId: config.runId,\n agent: config.agent,\n childIndex: config.childIndex,\n cwd: config.cwd,\n })\n : undefined;\n transcript?.writeInitialUserMessage(config.task);\n const unsubscribe = session.subscribe((event) => {\n transcript?.writeChildEvent(event);\n if (event.type !== 'agent_end') return;\n // Pi emits session listeners only after awaiting every extension's\n // agent_end handler, including Doom Team's terminal persistence. Defer\n // one event-loop turn so every listener observes the event, then end\n // this dedicated one-session process unless an agent_end handler queued\n // a nudge or follow-up that Pi still needs to run.\n setImmediate(() => {\n if (session.agent.hasQueuedMessages()) return;\n session.dispose();\n void finishTelemetry(CHILD_FINISHED_EVENT, {\n runtime: SDK_RUNTIME,\n 'agent.name': launchConfig.agent,\n duration_ms: Date.now() - startedAt,\n outcome: 'completed',\n }).finally(() => process.exit(0));\n });\n });\n\n try {\n await session.bindExtensions({\n mode: 'print',\n onError: (failure) => {\n recordNonBlockingExtensionError(childTelemetry, failure);\n },\n });\n await session.prompt(config.task);\n } finally {\n stopWatchdog?.();\n unsubscribe();\n session.dispose();\n await finishTelemetry(CHILD_FINISHED_EVENT, {\n runtime: SDK_RUNTIME,\n 'agent.name': launchConfig.agent,\n duration_ms: Date.now() - startedAt,\n outcome: 'completed',\n });\n }\n } catch (error) {\n writeStartupError(config, error);\n await finishTelemetry(CHILD_FAILED_EVENT, { outcome: 'failed' }, error);\n throw error;\n }\n}\n\nvoid runSdkChild().then(\n () => {\n // This entry point owns a dedicated detached process for exactly one SDK\n // session. Extensions may retain polling intervals after session.dispose(),\n // so a successful run must terminate explicitly once synchronous result\n // persistence and session cleanup have completed.\n process.exit(0);\n },\n async (error: unknown) => {\n await finishTelemetry(CHILD_FAILED_EVENT, { outcome: 'failed' }, error);\n const failure = error instanceof Error ? error : new Error('Doom Team SDK child failed', { cause: error });\n setImmediate(() => {\n throw failure;\n });\n },\n);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../schemas/team/packageConfig.cjs"),n=require("../../services/support/lruCache.cjs"),r=require("./projectRoot.cjs"),i=require("./settings.cjs"),a=require("./loader.cjs");let o=require("node:fs");o=e.__toESM(o,1);let s=require("node:path");s=e.__toESM(s,1);let c=require("@agimon-ai/doompi-config");const l=s.join(`.doom`,`modes.yaml`),u=/:(?:off|minimal|low|medium|high|xhigh|max)$/;function d(e,t,n,r=[]){let i=new Map;for(let e of r)i.set(e.name,e);if(e!==`project`)for(let e of t)i.set(e.name,e);if(e!==`user`)for(let e of n)i.set(e.name,e);return[...i.values()]}function f(e){try{let t=o.statSync(e);return`${e}:${t.mtimeMs}:${t.size}`}catch{return`${e}:-`}}function p(){let e=(0,c.getHarnessState)();if(!e.root)return;let n=(0,c.loadMajorModesConfig)(e.root),r=(0,c.resolvePackageConfigurations)(n,e.layers,t.DOOMPI_TEAM_PACKAGE),i=t.mergeTeamPackageConfigurations(r);return i?{config:i,path:s.join(e.root,l)}:void 0}function m(e){if(e?.models)return e.models.map(({model:e,thinking:t})=>t?`${e.replace(u,``)}:${t}`:e)}function h(){return m(p()?.config)}var g=class{cache=new n.LruCache(64);ttlMs=5e3;now(){return Date.now()}discover(e,t){let n=s.resolve(e),i=r.canonicalizeDiscoveryCwd(n),a=`${t}|${i}`,o=this.cache.get(a),c=this.now();if(o&&o.expiresAt>c&&o.fingerprint===this.fingerprint(i))return _(o.result);let l=this.load(n,t);return this.cache.set(a,{result:l,expiresAt:c+this.ttlMs,fingerprint:this.fingerprint(i)}),_(l)}find(e,t,n){return this.discover(e,t).agents.find(e=>e.name===n)}invalidate(){this.cache.clear()}fingerprint(e){let t=(0,c.getHarnessState)(),n=[r.getUserAgentSettingsPath(),r.getProjectAgentSettingsPath(e)??`-`,...r.userAgentDirs(),...r.resolveNearestProjectAgentDirs(e).readDirs,...a.pluginAgentDirs()];return t.root&&n.push(s.join(t.root,l)),[...n.map(f),`active-layers:${t.layers.join(`,`)}`].join(`|`)}load(e,t){let n=r.getUserAgentSettingsPath(),o=r.getProjectAgentSettingsPath(e),s=t===`project`?i.EMPTY_SUBAGENT_SETTINGS:i.readSubagentSettings(n),c=t===`user`?i.EMPTY_SUBAGENT_SETTINGS:i.readSubagentSettings(o),l=i.resolveSubagentDefaultModel(s,c,n,o),u=p(),f=m(u?.config)?.[0],h=f&&u?{type:`packages.team.defaultModel`,scope:`package`,path:u.path,model:f}:l,g=i.resolveSubagentDefaultThinking(s,c,o),_=i.resolveSubagentDefaultExtensions(s,c,o),v=e=>i.applyCustomAgentOverrides(i.applySubagentDefaults(e,h,g,_),s,c,n,o),y=v(a.pluginAgentDirs().flatMap(e=>a.loadAgentsFromDir(e,`plugin`)));return{agents:d(t,t===`project`?[]:v(r.userAgentDirs().flatMap(e=>a.loadAgentsFromDir(e,`user`))),t===`user`?[]:v(r.resolveNearestProjectAgentDirs(e).readDirs.flatMap(e=>a.loadAgentsFromDir(e,`project`))),y).filter(e=>e.disabled!==!0),projectAgentsDir:r.resolveNearestProjectAgentDirs(e).preferredDir,modelScope:c.modelScope??s.modelScope}}};function _(e){return{...e,agents:[...e.agents]}}exports.AgentDiscoveryService=g,exports.mergeAgentsForScope=d,exports.resolveActiveTeamModelSpecs=h,exports.resolveActiveTeamPackageConfig=p;
|
|
2
|
+
//# sourceMappingURL=discovery.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.cjs","names":["path","fs","getHarnessState","loadMajorModesConfig","resolvePackageConfigurations","DOOMPI_TEAM_PACKAGE","mergeTeamPackageConfigurations","LruCache","canonicalizeDiscoveryCwd","getUserAgentSettingsPath","getProjectAgentSettingsPath","userAgentDirs","resolveNearestProjectAgentDirs","pluginAgentDirs","EMPTY_SUBAGENT_SETTINGS","readSubagentSettings","resolveSubagentDefaultModel","resolveSubagentDefaultThinking","resolveSubagentDefaultExtensions","applyCustomAgentOverrides","applySubagentDefaults","loadAgentsFromDir"],"sources":["../../../../src/adapters/agents/discovery.ts"],"sourcesContent":["/**\n * Cached discovery of the agents visible from a working directory.\n *\n * WHY THIS IS A SERVICE AND NOT A FUNCTION:\n * Discovery reads two settings files and walks every agent directory in scope,\n * parsing the frontmatter of every file it finds. The slash-command completion\n * path asks for the agent list on each keystroke, and preflight asks again for\n * each launch, so the predecessor's plain function re-walked the tree many times\n * per second. Caching needs somewhere to live, and invalidation needs an owner.\n *\n * DESIGN PATTERNS:\n * - Two-layer validity. A short TTL bounds how stale an answer can be, and a\n * cheap source fingerprint catches the common edits sooner than the TTL would\n * - Bounded by an LRU keyed on cwd and scope, so a long session that visits many\n * directories cannot grow the cache without limit\n * - Mutations invalidate explicitly rather than relying on the TTL, so an agent\n * the user just created is visible immediately\n *\n * WHY THE FINGERPRINT IS NOT ENOUGH ON ITS OWN:\n * It stats the settings files and the agent directories, not every agent file.\n * A directory's mtime moves when a file is added or removed but not when an\n * existing file's contents change, so an in-place edit is caught by the TTL\n * rather than by the fingerprint. Stat'ing every agent file on every keystroke\n * would reintroduce the cost this cache exists to remove.\n *\n * AVOID:\n * - Handing out the cached array without copying it; a caller that sorts or\n * splices in place would corrupt every later reader\n * - Raising the TTL to hide a missing invalidate call\n */\n\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { getHarnessState, loadMajorModesConfig, resolvePackageConfigurations } from '@agimon-ai/doompi-config';\n\nimport {\n DOOMPI_TEAM_PACKAGE,\n mergeTeamPackageConfigurations,\n type TeamPackageConfig,\n} from '../../schemas/team/packageConfig';\nimport { LruCache } from '../../services/support/lruCache';\nimport { loadAgentsFromDir, pluginAgentDirs } from './loader';\nimport {\n canonicalizeDiscoveryCwd,\n getProjectAgentSettingsPath,\n getUserAgentSettingsPath,\n resolveNearestProjectAgentDirs,\n userAgentDirs,\n} from './projectRoot';\nimport {\n applyCustomAgentOverrides,\n applySubagentDefaults,\n EMPTY_SUBAGENT_SETTINGS,\n readSubagentSettings,\n resolveSubagentDefaultExtensions,\n resolveSubagentDefaultModel,\n resolveSubagentDefaultThinking,\n} from './settings';\nimport type { AgentConfig, AgentDiscoveryResult, AgentScope, AgentDiscoveryContract, SubagentSettings } from './types';\n\n/** How long a discovery result may be reused without revalidation. */\nconst DISCOVERY_TTL_MS = 5_000;\n\n/**\n * How many (cwd, scope) combinations stay cached.\n *\n * A session works in a handful of directories and there are three scopes, so\n * this is far above real usage; it exists to bound a pathological case.\n */\nconst MAX_CACHED_DISCOVERIES = 64;\n\nconst FINGERPRINT_FIELD_SEPARATOR = ':';\nconst FINGERPRINT_ENTRY_SEPARATOR = '|';\nconst MISSING_SOURCE_MARKER = '-';\nconst MAJOR_MODES_CONFIG_RELATIVE_PATH = path.join('.doom', 'modes.yaml');\nconst THINKING_SUFFIX = /:(?:off|minimal|low|medium|high|xhigh|max)$/;\n\ninterface CacheEntry {\n result: AgentDiscoveryResult;\n expiresAt: number;\n fingerprint: string;\n}\n\n/**\n * Merge the sources into one list, later sources shadowing earlier ones.\n *\n * Precedence is plugin, then user, then project: the definition closest to the\n * work being done wins, which is what lets a repository pin an agent that the\n * user has also defined globally.\n */\nexport function mergeAgentsForScope(\n scope: AgentScope,\n userAgents: AgentConfig[],\n projectAgents: AgentConfig[],\n pluginAgents: AgentConfig[] = [],\n): AgentConfig[] {\n const byName = new Map<string, AgentConfig>();\n for (const agent of pluginAgents) byName.set(agent.name, agent);\n if (scope !== 'project') {\n for (const agent of userAgents) byName.set(agent.name, agent);\n }\n if (scope !== 'user') {\n for (const agent of projectAgents) byName.set(agent.name, agent);\n }\n return [...byName.values()];\n}\n\n/** Size and mtime of one path, or a marker when it does not exist. */\nfunction stampOf(target: string): string {\n try {\n const stat = fs.statSync(target);\n return `${target}${FINGERPRINT_FIELD_SEPARATOR}${stat.mtimeMs}${FINGERPRINT_FIELD_SEPARATOR}${stat.size}`;\n } catch {\n // A missing settings file or agent directory is a normal state, and it has\n // to be distinguishable from a present one so that creating it invalidates.\n return `${target}${FINGERPRINT_FIELD_SEPARATOR}${MISSING_SOURCE_MARKER}`;\n }\n}\n\nexport interface ActiveTeamPackageConfig {\n config: TeamPackageConfig;\n path: string;\n}\n\n/** Resolve Team-owned package configuration from the current parent harness state. */\nexport function resolveActiveTeamPackageConfig(): ActiveTeamPackageConfig | undefined {\n const harness = getHarnessState();\n if (!harness.root) return undefined;\n const layers = loadMajorModesConfig(harness.root);\n const entries = resolvePackageConfigurations(layers, harness.layers, DOOMPI_TEAM_PACKAGE);\n const config = mergeTeamPackageConfigurations(entries);\n return config ? { config, path: path.join(harness.root, MAJOR_MODES_CONFIG_RELATIVE_PATH) } : undefined;\n}\n\nfunction teamModelSpecs(config: TeamPackageConfig | undefined): string[] | undefined {\n if (!config?.models) return undefined;\n return config.models.map(({ model, thinking }) =>\n thinking ? `${model.replace(THINKING_SUFFIX, '')}:${thinking}` : model,\n );\n}\n\n/** Resolve Team's ordered package model policy without merging it into an agent definition. */\nexport function resolveActiveTeamModelSpecs(): string[] | undefined {\n return teamModelSpecs(resolveActiveTeamPackageConfig()?.config);\n}\n\nexport class AgentDiscoveryService implements AgentDiscoveryContract {\n private readonly cache = new LruCache<string, CacheEntry>(MAX_CACHED_DISCOVERIES);\n\n /**\n * Seams for tests, as protected members rather than constructor arguments.\n *\n * Runtime tuning is not part of this service's dependency contract. A test\n * subclass overrides these values without abstracting the clock.\n */\n protected readonly ttlMs: number = DISCOVERY_TTL_MS;\n\n protected now(): number {\n return Date.now();\n }\n\n discover(cwd: string, scope: AgentScope): AgentDiscoveryResult {\n const resolvedCwd = path.resolve(cwd);\n const canonicalCwd = canonicalizeDiscoveryCwd(resolvedCwd);\n const key = `${scope}${FINGERPRINT_ENTRY_SEPARATOR}${canonicalCwd}`;\n const cached = this.cache.get(key);\n const timestamp = this.now();\n\n if (cached && cached.expiresAt > timestamp && cached.fingerprint === this.fingerprint(canonicalCwd)) {\n return cloneResult(cached.result);\n }\n\n const result = this.load(resolvedCwd, scope);\n this.cache.set(key, {\n result,\n expiresAt: timestamp + this.ttlMs,\n fingerprint: this.fingerprint(canonicalCwd),\n });\n return cloneResult(result);\n }\n\n find(cwd: string, scope: AgentScope, name: string): AgentConfig | undefined {\n return this.discover(cwd, scope).agents.find((agent) => agent.name === name);\n }\n\n invalidate(): void {\n this.cache.clear();\n }\n\n /**\n * A cheap stamp of everything discovery reads at the directory level.\n *\n * Deliberately independent of scope: a user-scoped and a project-scoped lookup\n * from the same directory read overlapping sources, and computing one stamp\n * keeps the stat count fixed regardless of how many scopes are queried.\n */\n private fingerprint(cwd: string): string {\n const harness = getHarnessState();\n const sources = [\n getUserAgentSettingsPath(),\n getProjectAgentSettingsPath(cwd) ?? MISSING_SOURCE_MARKER,\n ...userAgentDirs(),\n ...resolveNearestProjectAgentDirs(cwd).readDirs,\n ...pluginAgentDirs(),\n ];\n if (harness.root) sources.push(path.join(harness.root, MAJOR_MODES_CONFIG_RELATIVE_PATH));\n return [...sources.map(stampOf), `active-layers${FINGERPRINT_FIELD_SEPARATOR}${harness.layers.join(',')}`].join(\n FINGERPRINT_ENTRY_SEPARATOR,\n );\n }\n\n /**\n * The uncached read. Protected so a test can count how often it actually runs,\n * which is the only direct way to assert that the cache is doing its job.\n */\n protected load(cwd: string, scope: AgentScope): AgentDiscoveryResult {\n const userSettingsPath = getUserAgentSettingsPath();\n const projectSettingsPath = getProjectAgentSettingsPath(cwd);\n const userSettings: SubagentSettings =\n scope === 'project' ? EMPTY_SUBAGENT_SETTINGS : readSubagentSettings(userSettingsPath);\n const projectSettings: SubagentSettings =\n scope === 'user' ? EMPTY_SUBAGENT_SETTINGS : readSubagentSettings(projectSettingsPath);\n\n const legacyDefaultModel = resolveSubagentDefaultModel(\n userSettings,\n projectSettings,\n userSettingsPath,\n projectSettingsPath,\n );\n const teamPackage = resolveActiveTeamPackageConfig();\n const packageModels = teamModelSpecs(teamPackage?.config);\n const packagePrimaryModel = packageModels?.[0];\n const defaultModel =\n packagePrimaryModel && teamPackage\n ? {\n type: 'packages.team.defaultModel' as const,\n scope: 'package' as const,\n path: teamPackage.path,\n model: packagePrimaryModel,\n }\n : legacyDefaultModel;\n const defaultThinking = resolveSubagentDefaultThinking(userSettings, projectSettings, projectSettingsPath);\n const defaultExtensions = resolveSubagentDefaultExtensions(userSettings, projectSettings, projectSettingsPath);\n\n const resolve = (agents: AgentConfig[]): AgentConfig[] =>\n applyCustomAgentOverrides(\n applySubagentDefaults(agents, defaultModel, defaultThinking, defaultExtensions),\n userSettings,\n projectSettings,\n userSettingsPath,\n projectSettingsPath,\n );\n\n const plugin = resolve(pluginAgentDirs().flatMap((directory) => loadAgentsFromDir(directory, 'plugin')));\n const user =\n scope === 'project' ? [] : resolve(userAgentDirs().flatMap((directory) => loadAgentsFromDir(directory, 'user')));\n const project =\n scope === 'user'\n ? []\n : resolve(\n resolveNearestProjectAgentDirs(cwd).readDirs.flatMap((directory) =>\n loadAgentsFromDir(directory, 'project'),\n ),\n );\n\n return {\n // A disabled agent is dropped last, so that an override which re-enables\n // one has already been applied by the time this runs.\n agents: mergeAgentsForScope(scope, user, project, plugin).filter((agent) => agent.disabled !== true),\n projectAgentsDir: resolveNearestProjectAgentDirs(cwd).preferredDir,\n modelScope: projectSettings.modelScope ?? userSettings.modelScope,\n };\n }\n}\n\n/**\n * Copy the parts a caller could mutate in place.\n *\n * The agent objects themselves are treated as immutable by every consumer, so\n * only the array is copied; deep-cloning every config on each keystroke would\n * cost more than the walk this cache replaced.\n */\nfunction cloneResult(result: AgentDiscoveryResult): AgentDiscoveryResult {\n return { ...result, agents: [...result.agents] };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{DOOMPI_TEAM_PACKAGE as e,mergeTeamPackageConfigurations as t}from"../../schemas/team/packageConfig.mjs";import{LruCache as n,init_lruCache as r}from"../../services/support/lruCache.mjs";import{canonicalizeDiscoveryCwd as i,getProjectAgentSettingsPath as a,getUserAgentSettingsPath as o,resolveNearestProjectAgentDirs as s,userAgentDirs as c}from"./projectRoot.mjs";import{EMPTY_SUBAGENT_SETTINGS as l,applyCustomAgentOverrides as u,applySubagentDefaults as d,readSubagentSettings as f,resolveSubagentDefaultExtensions as p,resolveSubagentDefaultModel as m,resolveSubagentDefaultThinking as h}from"./settings.mjs";import{loadAgentsFromDir as g,pluginAgentDirs as _}from"./loader.mjs";import*as v from"node:fs";import*as y from"node:path";import{getHarnessState as b,loadMajorModesConfig as x,resolvePackageConfigurations as S}from"@agimon-ai/doompi-config";r();const C=y.join(`.doom`,`modes.yaml`),w=/:(?:off|minimal|low|medium|high|xhigh|max)$/;function T(e,t,n,r=[]){let i=new Map;for(let e of r)i.set(e.name,e);if(e!==`project`)for(let e of t)i.set(e.name,e);if(e!==`user`)for(let e of n)i.set(e.name,e);return[...i.values()]}function E(e){try{let t=v.statSync(e);return`${e}:${t.mtimeMs}:${t.size}`}catch{return`${e}:-`}}function D(){let n=b();if(!n.root)return;let r=x(n.root),i=S(r,n.layers,e),a=t(i);return a?{config:a,path:y.join(n.root,C)}:void 0}function O(e){if(e?.models)return e.models.map(({model:e,thinking:t})=>t?`${e.replace(w,``)}:${t}`:e)}function k(){return O(D()?.config)}var A=class{cache=new n(64);ttlMs=5e3;now(){return Date.now()}discover(e,t){let n=y.resolve(e),r=i(n),a=`${t}|${r}`,o=this.cache.get(a),s=this.now();if(o&&o.expiresAt>s&&o.fingerprint===this.fingerprint(r))return j(o.result);let c=this.load(n,t);return this.cache.set(a,{result:c,expiresAt:s+this.ttlMs,fingerprint:this.fingerprint(r)}),j(c)}find(e,t,n){return this.discover(e,t).agents.find(e=>e.name===n)}invalidate(){this.cache.clear()}fingerprint(e){let t=b(),n=[o(),a(e)??`-`,...c(),...s(e).readDirs,..._()];return t.root&&n.push(y.join(t.root,C)),[...n.map(E),`active-layers:${t.layers.join(`,`)}`].join(`|`)}load(e,t){let n=o(),r=a(e),i=t===`project`?l:f(n),v=t===`user`?l:f(r),y=m(i,v,n,r),b=D(),x=O(b?.config)?.[0],S=x&&b?{type:`packages.team.defaultModel`,scope:`package`,path:b.path,model:x}:y,C=h(i,v,r),w=p(i,v,r),E=e=>u(d(e,S,C,w),i,v,n,r),k=E(_().flatMap(e=>g(e,`plugin`)));return{agents:T(t,t===`project`?[]:E(c().flatMap(e=>g(e,`user`))),t===`user`?[]:E(s(e).readDirs.flatMap(e=>g(e,`project`))),k).filter(e=>e.disabled!==!0),projectAgentsDir:s(e).preferredDir,modelScope:v.modelScope??i.modelScope}}};function j(e){return{...e,agents:[...e.agents]}}export{A as AgentDiscoveryService,T as mergeAgentsForScope,k as resolveActiveTeamModelSpecs,D as resolveActiveTeamPackageConfig};
|
|
2
|
+
//# sourceMappingURL=discovery.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.mjs","names":[],"sources":["../../../../src/adapters/agents/discovery.ts"],"sourcesContent":["/**\n * Cached discovery of the agents visible from a working directory.\n *\n * WHY THIS IS A SERVICE AND NOT A FUNCTION:\n * Discovery reads two settings files and walks every agent directory in scope,\n * parsing the frontmatter of every file it finds. The slash-command completion\n * path asks for the agent list on each keystroke, and preflight asks again for\n * each launch, so the predecessor's plain function re-walked the tree many times\n * per second. Caching needs somewhere to live, and invalidation needs an owner.\n *\n * DESIGN PATTERNS:\n * - Two-layer validity. A short TTL bounds how stale an answer can be, and a\n * cheap source fingerprint catches the common edits sooner than the TTL would\n * - Bounded by an LRU keyed on cwd and scope, so a long session that visits many\n * directories cannot grow the cache without limit\n * - Mutations invalidate explicitly rather than relying on the TTL, so an agent\n * the user just created is visible immediately\n *\n * WHY THE FINGERPRINT IS NOT ENOUGH ON ITS OWN:\n * It stats the settings files and the agent directories, not every agent file.\n * A directory's mtime moves when a file is added or removed but not when an\n * existing file's contents change, so an in-place edit is caught by the TTL\n * rather than by the fingerprint. Stat'ing every agent file on every keystroke\n * would reintroduce the cost this cache exists to remove.\n *\n * AVOID:\n * - Handing out the cached array without copying it; a caller that sorts or\n * splices in place would corrupt every later reader\n * - Raising the TTL to hide a missing invalidate call\n */\n\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { getHarnessState, loadMajorModesConfig, resolvePackageConfigurations } from '@agimon-ai/doompi-config';\n\nimport {\n DOOMPI_TEAM_PACKAGE,\n mergeTeamPackageConfigurations,\n type TeamPackageConfig,\n} from '../../schemas/team/packageConfig';\nimport { LruCache } from '../../services/support/lruCache';\nimport { loadAgentsFromDir, pluginAgentDirs } from './loader';\nimport {\n canonicalizeDiscoveryCwd,\n getProjectAgentSettingsPath,\n getUserAgentSettingsPath,\n resolveNearestProjectAgentDirs,\n userAgentDirs,\n} from './projectRoot';\nimport {\n applyCustomAgentOverrides,\n applySubagentDefaults,\n EMPTY_SUBAGENT_SETTINGS,\n readSubagentSettings,\n resolveSubagentDefaultExtensions,\n resolveSubagentDefaultModel,\n resolveSubagentDefaultThinking,\n} from './settings';\nimport type { AgentConfig, AgentDiscoveryResult, AgentScope, AgentDiscoveryContract, SubagentSettings } from './types';\n\n/** How long a discovery result may be reused without revalidation. */\nconst DISCOVERY_TTL_MS = 5_000;\n\n/**\n * How many (cwd, scope) combinations stay cached.\n *\n * A session works in a handful of directories and there are three scopes, so\n * this is far above real usage; it exists to bound a pathological case.\n */\nconst MAX_CACHED_DISCOVERIES = 64;\n\nconst FINGERPRINT_FIELD_SEPARATOR = ':';\nconst FINGERPRINT_ENTRY_SEPARATOR = '|';\nconst MISSING_SOURCE_MARKER = '-';\nconst MAJOR_MODES_CONFIG_RELATIVE_PATH = path.join('.doom', 'modes.yaml');\nconst THINKING_SUFFIX = /:(?:off|minimal|low|medium|high|xhigh|max)$/;\n\ninterface CacheEntry {\n result: AgentDiscoveryResult;\n expiresAt: number;\n fingerprint: string;\n}\n\n/**\n * Merge the sources into one list, later sources shadowing earlier ones.\n *\n * Precedence is plugin, then user, then project: the definition closest to the\n * work being done wins, which is what lets a repository pin an agent that the\n * user has also defined globally.\n */\nexport function mergeAgentsForScope(\n scope: AgentScope,\n userAgents: AgentConfig[],\n projectAgents: AgentConfig[],\n pluginAgents: AgentConfig[] = [],\n): AgentConfig[] {\n const byName = new Map<string, AgentConfig>();\n for (const agent of pluginAgents) byName.set(agent.name, agent);\n if (scope !== 'project') {\n for (const agent of userAgents) byName.set(agent.name, agent);\n }\n if (scope !== 'user') {\n for (const agent of projectAgents) byName.set(agent.name, agent);\n }\n return [...byName.values()];\n}\n\n/** Size and mtime of one path, or a marker when it does not exist. */\nfunction stampOf(target: string): string {\n try {\n const stat = fs.statSync(target);\n return `${target}${FINGERPRINT_FIELD_SEPARATOR}${stat.mtimeMs}${FINGERPRINT_FIELD_SEPARATOR}${stat.size}`;\n } catch {\n // A missing settings file or agent directory is a normal state, and it has\n // to be distinguishable from a present one so that creating it invalidates.\n return `${target}${FINGERPRINT_FIELD_SEPARATOR}${MISSING_SOURCE_MARKER}`;\n }\n}\n\nexport interface ActiveTeamPackageConfig {\n config: TeamPackageConfig;\n path: string;\n}\n\n/** Resolve Team-owned package configuration from the current parent harness state. */\nexport function resolveActiveTeamPackageConfig(): ActiveTeamPackageConfig | undefined {\n const harness = getHarnessState();\n if (!harness.root) return undefined;\n const layers = loadMajorModesConfig(harness.root);\n const entries = resolvePackageConfigurations(layers, harness.layers, DOOMPI_TEAM_PACKAGE);\n const config = mergeTeamPackageConfigurations(entries);\n return config ? { config, path: path.join(harness.root, MAJOR_MODES_CONFIG_RELATIVE_PATH) } : undefined;\n}\n\nfunction teamModelSpecs(config: TeamPackageConfig | undefined): string[] | undefined {\n if (!config?.models) return undefined;\n return config.models.map(({ model, thinking }) =>\n thinking ? `${model.replace(THINKING_SUFFIX, '')}:${thinking}` : model,\n );\n}\n\n/** Resolve Team's ordered package model policy without merging it into an agent definition. */\nexport function resolveActiveTeamModelSpecs(): string[] | undefined {\n return teamModelSpecs(resolveActiveTeamPackageConfig()?.config);\n}\n\nexport class AgentDiscoveryService implements AgentDiscoveryContract {\n private readonly cache = new LruCache<string, CacheEntry>(MAX_CACHED_DISCOVERIES);\n\n /**\n * Seams for tests, as protected members rather than constructor arguments.\n *\n * Runtime tuning is not part of this service's dependency contract. A test\n * subclass overrides these values without abstracting the clock.\n */\n protected readonly ttlMs: number = DISCOVERY_TTL_MS;\n\n protected now(): number {\n return Date.now();\n }\n\n discover(cwd: string, scope: AgentScope): AgentDiscoveryResult {\n const resolvedCwd = path.resolve(cwd);\n const canonicalCwd = canonicalizeDiscoveryCwd(resolvedCwd);\n const key = `${scope}${FINGERPRINT_ENTRY_SEPARATOR}${canonicalCwd}`;\n const cached = this.cache.get(key);\n const timestamp = this.now();\n\n if (cached && cached.expiresAt > timestamp && cached.fingerprint === this.fingerprint(canonicalCwd)) {\n return cloneResult(cached.result);\n }\n\n const result = this.load(resolvedCwd, scope);\n this.cache.set(key, {\n result,\n expiresAt: timestamp + this.ttlMs,\n fingerprint: this.fingerprint(canonicalCwd),\n });\n return cloneResult(result);\n }\n\n find(cwd: string, scope: AgentScope, name: string): AgentConfig | undefined {\n return this.discover(cwd, scope).agents.find((agent) => agent.name === name);\n }\n\n invalidate(): void {\n this.cache.clear();\n }\n\n /**\n * A cheap stamp of everything discovery reads at the directory level.\n *\n * Deliberately independent of scope: a user-scoped and a project-scoped lookup\n * from the same directory read overlapping sources, and computing one stamp\n * keeps the stat count fixed regardless of how many scopes are queried.\n */\n private fingerprint(cwd: string): string {\n const harness = getHarnessState();\n const sources = [\n getUserAgentSettingsPath(),\n getProjectAgentSettingsPath(cwd) ?? MISSING_SOURCE_MARKER,\n ...userAgentDirs(),\n ...resolveNearestProjectAgentDirs(cwd).readDirs,\n ...pluginAgentDirs(),\n ];\n if (harness.root) sources.push(path.join(harness.root, MAJOR_MODES_CONFIG_RELATIVE_PATH));\n return [...sources.map(stampOf), `active-layers${FINGERPRINT_FIELD_SEPARATOR}${harness.layers.join(',')}`].join(\n FINGERPRINT_ENTRY_SEPARATOR,\n );\n }\n\n /**\n * The uncached read. Protected so a test can count how often it actually runs,\n * which is the only direct way to assert that the cache is doing its job.\n */\n protected load(cwd: string, scope: AgentScope): AgentDiscoveryResult {\n const userSettingsPath = getUserAgentSettingsPath();\n const projectSettingsPath = getProjectAgentSettingsPath(cwd);\n const userSettings: SubagentSettings =\n scope === 'project' ? EMPTY_SUBAGENT_SETTINGS : readSubagentSettings(userSettingsPath);\n const projectSettings: SubagentSettings =\n scope === 'user' ? EMPTY_SUBAGENT_SETTINGS : readSubagentSettings(projectSettingsPath);\n\n const legacyDefaultModel = resolveSubagentDefaultModel(\n userSettings,\n projectSettings,\n userSettingsPath,\n projectSettingsPath,\n );\n const teamPackage = resolveActiveTeamPackageConfig();\n const packageModels = teamModelSpecs(teamPackage?.config);\n const packagePrimaryModel = packageModels?.[0];\n const defaultModel =\n packagePrimaryModel && teamPackage\n ? {\n type: 'packages.team.defaultModel' as const,\n scope: 'package' as const,\n path: teamPackage.path,\n model: packagePrimaryModel,\n }\n : legacyDefaultModel;\n const defaultThinking = resolveSubagentDefaultThinking(userSettings, projectSettings, projectSettingsPath);\n const defaultExtensions = resolveSubagentDefaultExtensions(userSettings, projectSettings, projectSettingsPath);\n\n const resolve = (agents: AgentConfig[]): AgentConfig[] =>\n applyCustomAgentOverrides(\n applySubagentDefaults(agents, defaultModel, defaultThinking, defaultExtensions),\n userSettings,\n projectSettings,\n userSettingsPath,\n projectSettingsPath,\n );\n\n const plugin = resolve(pluginAgentDirs().flatMap((directory) => loadAgentsFromDir(directory, 'plugin')));\n const user =\n scope === 'project' ? [] : resolve(userAgentDirs().flatMap((directory) => loadAgentsFromDir(directory, 'user')));\n const project =\n scope === 'user'\n ? []\n : resolve(\n resolveNearestProjectAgentDirs(cwd).readDirs.flatMap((directory) =>\n loadAgentsFromDir(directory, 'project'),\n ),\n );\n\n return {\n // A disabled agent is dropped last, so that an override which re-enables\n // one has already been applied by the time this runs.\n agents: mergeAgentsForScope(scope, user, project, plugin).filter((agent) => agent.disabled !== true),\n projectAgentsDir: resolveNearestProjectAgentDirs(cwd).preferredDir,\n modelScope: projectSettings.modelScope ?? userSettings.modelScope,\n };\n }\n}\n\n/**\n * Copy the parts a caller could mutate in place.\n *\n * The agent objects themselves are treated as immutable by every consumer, so\n * only the array is copied; deep-cloning every config on each keystroke would\n * cost more than the walk this cache replaced.\n */\nfunction cloneResult(result: AgentDiscoveryResult): AgentDiscoveryResult {\n return { ...result, agents: [...result.agents] };\n}\n"],"mappings":"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"}
|