@yjjeong/omg 0.1.0
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/CHANGELOG.md +85 -0
- package/LICENSE +21 -0
- package/README.md +153 -0
- package/dist/cli/args.d.ts +39 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +129 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/autoCommit.d.ts +20 -0
- package/dist/cli/autoCommit.d.ts.map +1 -0
- package/dist/cli/autoCommit.js +121 -0
- package/dist/cli/autoCommit.js.map +1 -0
- package/dist/cli/bgTasks.d.ts +57 -0
- package/dist/cli/bgTasks.d.ts.map +1 -0
- package/dist/cli/bgTasks.js +193 -0
- package/dist/cli/bgTasks.js.map +1 -0
- package/dist/cli/compactor.d.ts +48 -0
- package/dist/cli/compactor.d.ts.map +1 -0
- package/dist/cli/compactor.js +73 -0
- package/dist/cli/compactor.js.map +1 -0
- package/dist/cli/doctor.d.ts +77 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +279 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/gitStatus.d.ts +7 -0
- package/dist/cli/gitStatus.d.ts.map +1 -0
- package/dist/cli/gitStatus.js +70 -0
- package/dist/cli/gitStatus.js.map +1 -0
- package/dist/cli/handoff.d.ts +36 -0
- package/dist/cli/handoff.d.ts.map +1 -0
- package/dist/cli/handoff.js +60 -0
- package/dist/cli/handoff.js.map +1 -0
- package/dist/cli/interactive/brokers.d.ts +31 -0
- package/dist/cli/interactive/brokers.d.ts.map +1 -0
- package/dist/cli/interactive/brokers.js +259 -0
- package/dist/cli/interactive/brokers.js.map +1 -0
- package/dist/cli/interactive/index.d.ts +8 -0
- package/dist/cli/interactive/index.d.ts.map +1 -0
- package/dist/cli/interactive/index.js +731 -0
- package/dist/cli/interactive/index.js.map +1 -0
- package/dist/cli/interactive/proxyQuestions.d.ts +15 -0
- package/dist/cli/interactive/proxyQuestions.d.ts.map +1 -0
- package/dist/cli/interactive/proxyQuestions.js +48 -0
- package/dist/cli/interactive/proxyQuestions.js.map +1 -0
- package/dist/cli/interactive/tabManager.d.ts +32 -0
- package/dist/cli/interactive/tabManager.d.ts.map +1 -0
- package/dist/cli/interactive/tabManager.js +244 -0
- package/dist/cli/interactive/tabManager.js.map +1 -0
- package/dist/cli/interactive/teamHint.d.ts +2 -0
- package/dist/cli/interactive/teamHint.d.ts.map +1 -0
- package/dist/cli/interactive/teamHint.js +14 -0
- package/dist/cli/interactive/teamHint.js.map +1 -0
- package/dist/cli/login.d.ts +13 -0
- package/dist/cli/login.d.ts.map +1 -0
- package/dist/cli/login.js +53 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/modes/demo.d.ts +12 -0
- package/dist/cli/modes/demo.d.ts.map +1 -0
- package/dist/cli/modes/demo.js +48 -0
- package/dist/cli/modes/demo.js.map +1 -0
- package/dist/cli/modes/doctor.d.ts +28 -0
- package/dist/cli/modes/doctor.d.ts.map +1 -0
- package/dist/cli/modes/doctor.js +79 -0
- package/dist/cli/modes/doctor.js.map +1 -0
- package/dist/cli/modes/login.d.ts +5 -0
- package/dist/cli/modes/login.d.ts.map +1 -0
- package/dist/cli/modes/login.js +40 -0
- package/dist/cli/modes/login.js.map +1 -0
- package/dist/cli/modes/mcpServe.d.ts +9 -0
- package/dist/cli/modes/mcpServe.d.ts.map +1 -0
- package/dist/cli/modes/mcpServe.js +112 -0
- package/dist/cli/modes/mcpServe.js.map +1 -0
- package/dist/cli/modes/orchestrator.d.ts +14 -0
- package/dist/cli/modes/orchestrator.d.ts.map +1 -0
- package/dist/cli/modes/orchestrator.js +64 -0
- package/dist/cli/modes/orchestrator.js.map +1 -0
- package/dist/cli/modes/team.d.ts +14 -0
- package/dist/cli/modes/team.d.ts.map +1 -0
- package/dist/cli/modes/team.js +87 -0
- package/dist/cli/modes/team.js.map +1 -0
- package/dist/cli/registry.d.ts +3 -0
- package/dist/cli/registry.d.ts.map +1 -0
- package/dist/cli/registry.js +15 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/cli/slash/core.d.ts +3 -0
- package/dist/cli/slash/core.d.ts.map +1 -0
- package/dist/cli/slash/core.js +509 -0
- package/dist/cli/slash/core.js.map +1 -0
- package/dist/cli/slash/index.d.ts +3 -0
- package/dist/cli/slash/index.d.ts.map +1 -0
- package/dist/cli/slash/index.js +28 -0
- package/dist/cli/slash/index.js.map +1 -0
- package/dist/cli/slash/modes.d.ts +3 -0
- package/dist/cli/slash/modes.d.ts.map +1 -0
- package/dist/cli/slash/modes.js +530 -0
- package/dist/cli/slash/modes.js.map +1 -0
- package/dist/cli/slash/session.d.ts +3 -0
- package/dist/cli/slash/session.d.ts.map +1 -0
- package/dist/cli/slash/session.js +376 -0
- package/dist/cli/slash/session.js.map +1 -0
- package/dist/cli/slash/shared.d.ts +43 -0
- package/dist/cli/slash/shared.d.ts.map +1 -0
- package/dist/cli/slash/shared.js +6 -0
- package/dist/cli/slash/shared.js.map +1 -0
- package/dist/cli/slash/tabs.d.ts +3 -0
- package/dist/cli/slash/tabs.d.ts.map +1 -0
- package/dist/cli/slash/tabs.js +497 -0
- package/dist/cli/slash/tabs.js.map +1 -0
- package/dist/cli/slash/team.d.ts +3 -0
- package/dist/cli/slash/team.d.ts.map +1 -0
- package/dist/cli/slash/team.js +85 -0
- package/dist/cli/slash/team.js.map +1 -0
- package/dist/cli/slash.d.ts +3 -0
- package/dist/cli/slash.d.ts.map +1 -0
- package/dist/cli/slash.js +8 -0
- package/dist/cli/slash.js.map +1 -0
- package/dist/cli/teamPipeline.d.ts +42 -0
- package/dist/cli/teamPipeline.d.ts.map +1 -0
- package/dist/cli/teamPipeline.js +406 -0
- package/dist/cli/teamPipeline.js.map +1 -0
- package/dist/cli/touchedFiles.d.ts +14 -0
- package/dist/cli/touchedFiles.d.ts.map +1 -0
- package/dist/cli/touchedFiles.js +66 -0
- package/dist/cli/touchedFiles.js.map +1 -0
- package/dist/cli/turn.d.ts +47 -0
- package/dist/cli/turn.d.ts.map +1 -0
- package/dist/cli/turn.js +626 -0
- package/dist/cli/turn.js.map +1 -0
- package/dist/cli/types.d.ts +47 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +5 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/uiSession.d.ts +10 -0
- package/dist/cli/uiSession.d.ts.map +1 -0
- package/dist/cli/uiSession.js +66 -0
- package/dist/cli/uiSession.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +128 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/adapter.d.ts +47 -0
- package/dist/core/adapter.d.ts.map +1 -0
- package/dist/core/adapter.js +48 -0
- package/dist/core/adapter.js.map +1 -0
- package/dist/core/adapters/anthropic.d.ts +35 -0
- package/dist/core/adapters/anthropic.d.ts.map +1 -0
- package/dist/core/adapters/anthropic.js +203 -0
- package/dist/core/adapters/anthropic.js.map +1 -0
- package/dist/core/adapters/claudeCli.d.ts +126 -0
- package/dist/core/adapters/claudeCli.d.ts.map +1 -0
- package/dist/core/adapters/claudeCli.js +584 -0
- package/dist/core/adapters/claudeCli.js.map +1 -0
- package/dist/core/adapters/cliAdapterBase.d.ts +48 -0
- package/dist/core/adapters/cliAdapterBase.d.ts.map +1 -0
- package/dist/core/adapters/cliAdapterBase.js +105 -0
- package/dist/core/adapters/cliAdapterBase.js.map +1 -0
- package/dist/core/adapters/cliStderr.d.ts +35 -0
- package/dist/core/adapters/cliStderr.d.ts.map +1 -0
- package/dist/core/adapters/cliStderr.js +87 -0
- package/dist/core/adapters/cliStderr.js.map +1 -0
- package/dist/core/adapters/codexCli.d.ts +113 -0
- package/dist/core/adapters/codexCli.d.ts.map +1 -0
- package/dist/core/adapters/codexCli.js +424 -0
- package/dist/core/adapters/codexCli.js.map +1 -0
- package/dist/core/adapters/gemini.d.ts +17 -0
- package/dist/core/adapters/gemini.d.ts.map +1 -0
- package/dist/core/adapters/gemini.js +133 -0
- package/dist/core/adapters/gemini.js.map +1 -0
- package/dist/core/adapters/geminiCli.d.ts +91 -0
- package/dist/core/adapters/geminiCli.d.ts.map +1 -0
- package/dist/core/adapters/geminiCli.js +276 -0
- package/dist/core/adapters/geminiCli.js.map +1 -0
- package/dist/core/adapters/nudges.d.ts +21 -0
- package/dist/core/adapters/nudges.d.ts.map +1 -0
- package/dist/core/adapters/nudges.js +75 -0
- package/dist/core/adapters/nudges.js.map +1 -0
- package/dist/core/adapters/openai.d.ts +17 -0
- package/dist/core/adapters/openai.d.ts.map +1 -0
- package/dist/core/adapters/openai.js +138 -0
- package/dist/core/adapters/openai.js.map +1 -0
- package/dist/core/adapters/parseFailures.d.ts +10 -0
- package/dist/core/adapters/parseFailures.d.ts.map +1 -0
- package/dist/core/adapters/parseFailures.js +35 -0
- package/dist/core/adapters/parseFailures.js.map +1 -0
- package/dist/core/adapters/utils.d.ts +11 -0
- package/dist/core/adapters/utils.d.ts.map +1 -0
- package/dist/core/adapters/utils.js +33 -0
- package/dist/core/adapters/utils.js.map +1 -0
- package/dist/core/askBroker.d.ts +11 -0
- package/dist/core/askBroker.d.ts.map +1 -0
- package/dist/core/askBroker.js +78 -0
- package/dist/core/askBroker.js.map +1 -0
- package/dist/core/atomicWrite.d.ts +5 -0
- package/dist/core/atomicWrite.d.ts.map +1 -0
- package/dist/core/atomicWrite.js +18 -0
- package/dist/core/atomicWrite.js.map +1 -0
- package/dist/core/brokers/askBroker.d.ts +11 -0
- package/dist/core/brokers/askBroker.d.ts.map +1 -0
- package/dist/core/brokers/askBroker.js +78 -0
- package/dist/core/brokers/askBroker.js.map +1 -0
- package/dist/core/brokers/permissionBroker.d.ts +7 -0
- package/dist/core/brokers/permissionBroker.d.ts.map +1 -0
- package/dist/core/brokers/permissionBroker.js +63 -0
- package/dist/core/brokers/permissionBroker.js.map +1 -0
- package/dist/core/brokers/socketBroker.d.ts +35 -0
- package/dist/core/brokers/socketBroker.d.ts.map +1 -0
- package/dist/core/brokers/socketBroker.js +74 -0
- package/dist/core/brokers/socketBroker.js.map +1 -0
- package/dist/core/clipboard.d.ts +4 -0
- package/dist/core/clipboard.d.ts.map +1 -0
- package/dist/core/clipboard.js +46 -0
- package/dist/core/clipboard.js.map +1 -0
- package/dist/core/compactor.d.ts +32 -0
- package/dist/core/compactor.d.ts.map +1 -0
- package/dist/core/compactor.js +91 -0
- package/dist/core/compactor.js.map +1 -0
- package/dist/core/consensusEngine.d.ts +21 -0
- package/dist/core/consensusEngine.d.ts.map +1 -0
- package/dist/core/consensusEngine.js +116 -0
- package/dist/core/consensusEngine.js.map +1 -0
- package/dist/core/context/contextCompressor.d.ts +10 -0
- package/dist/core/context/contextCompressor.d.ts.map +1 -0
- package/dist/core/context/contextCompressor.js +54 -0
- package/dist/core/context/contextCompressor.js.map +1 -0
- package/dist/core/context/contextWindows.d.ts +25 -0
- package/dist/core/context/contextWindows.d.ts.map +1 -0
- package/dist/core/context/contextWindows.js +101 -0
- package/dist/core/context/contextWindows.js.map +1 -0
- package/dist/core/context/summarizer.d.ts +65 -0
- package/dist/core/context/summarizer.d.ts.map +1 -0
- package/dist/core/context/summarizer.js +184 -0
- package/dist/core/context/summarizer.js.map +1 -0
- package/dist/core/context/usageCache.d.ts +19 -0
- package/dist/core/context/usageCache.d.ts.map +1 -0
- package/dist/core/context/usageCache.js +157 -0
- package/dist/core/context/usageCache.js.map +1 -0
- package/dist/core/context/usageWindow.d.ts +19 -0
- package/dist/core/context/usageWindow.d.ts.map +1 -0
- package/dist/core/context/usageWindow.js +73 -0
- package/dist/core/context/usageWindow.js.map +1 -0
- package/dist/core/contextCompressor.d.ts +10 -0
- package/dist/core/contextCompressor.d.ts.map +1 -0
- package/dist/core/contextCompressor.js +54 -0
- package/dist/core/contextCompressor.js.map +1 -0
- package/dist/core/contextWindows.d.ts +5 -0
- package/dist/core/contextWindows.d.ts.map +1 -0
- package/dist/core/contextWindows.js +60 -0
- package/dist/core/contextWindows.js.map +1 -0
- package/dist/core/continuum/digest.d.ts +35 -0
- package/dist/core/continuum/digest.d.ts.map +1 -0
- package/dist/core/continuum/digest.js +91 -0
- package/dist/core/continuum/digest.js.map +1 -0
- package/dist/core/continuum/index.d.ts +6 -0
- package/dist/core/continuum/index.d.ts.map +1 -0
- package/dist/core/continuum/index.js +7 -0
- package/dist/core/continuum/index.js.map +1 -0
- package/dist/core/continuum/inject.d.ts +9 -0
- package/dist/core/continuum/inject.d.ts.map +1 -0
- package/dist/core/continuum/inject.js +78 -0
- package/dist/core/continuum/inject.js.map +1 -0
- package/dist/core/continuum/projectId.d.ts +10 -0
- package/dist/core/continuum/projectId.d.ts.map +1 -0
- package/dist/core/continuum/projectId.js +60 -0
- package/dist/core/continuum/projectId.js.map +1 -0
- package/dist/core/continuum/store.d.ts +24 -0
- package/dist/core/continuum/store.d.ts.map +1 -0
- package/dist/core/continuum/store.js +144 -0
- package/dist/core/continuum/store.js.map +1 -0
- package/dist/core/continuum/types.d.ts +87 -0
- package/dist/core/continuum/types.d.ts.map +1 -0
- package/dist/core/continuum/types.js +9 -0
- package/dist/core/continuum/types.js.map +1 -0
- package/dist/core/dag.d.ts +21 -0
- package/dist/core/dag.d.ts.map +1 -0
- package/dist/core/dag.js +71 -0
- package/dist/core/dag.js.map +1 -0
- package/dist/core/director.d.ts +11 -0
- package/dist/core/director.d.ts.map +1 -0
- package/dist/core/director.js +37 -0
- package/dist/core/director.js.map +1 -0
- package/dist/core/hookedToolBroker.d.ts +25 -0
- package/dist/core/hookedToolBroker.d.ts.map +1 -0
- package/dist/core/hookedToolBroker.js +95 -0
- package/dist/core/hookedToolBroker.js.map +1 -0
- package/dist/core/langHint.d.ts +9 -0
- package/dist/core/langHint.d.ts.map +1 -0
- package/dist/core/langHint.js +33 -0
- package/dist/core/langHint.js.map +1 -0
- package/dist/core/mcp/mcpClient.d.ts +42 -0
- package/dist/core/mcp/mcpClient.d.ts.map +1 -0
- package/dist/core/mcp/mcpClient.js +134 -0
- package/dist/core/mcp/mcpClient.js.map +1 -0
- package/dist/core/mcp/mcpConfig.d.ts +58 -0
- package/dist/core/mcp/mcpConfig.d.ts.map +1 -0
- package/dist/core/mcp/mcpConfig.js +148 -0
- package/dist/core/mcp/mcpConfig.js.map +1 -0
- package/dist/core/mcp/mcpManager.d.ts +31 -0
- package/dist/core/mcp/mcpManager.d.ts.map +1 -0
- package/dist/core/mcp/mcpManager.js +83 -0
- package/dist/core/mcp/mcpManager.js.map +1 -0
- package/dist/core/mcpClient.d.ts +42 -0
- package/dist/core/mcpClient.d.ts.map +1 -0
- package/dist/core/mcpClient.js +134 -0
- package/dist/core/mcpClient.js.map +1 -0
- package/dist/core/mcpConfig.d.ts +24 -0
- package/dist/core/mcpConfig.d.ts.map +1 -0
- package/dist/core/mcpConfig.js +74 -0
- package/dist/core/mcpConfig.js.map +1 -0
- package/dist/core/mcpManager.d.ts +31 -0
- package/dist/core/mcpManager.d.ts.map +1 -0
- package/dist/core/mcpManager.js +83 -0
- package/dist/core/mcpManager.js.map +1 -0
- package/dist/core/memory.d.ts +22 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +102 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/omgToolManifest.d.ts +34 -0
- package/dist/core/omgToolManifest.d.ts.map +1 -0
- package/dist/core/omgToolManifest.js +59 -0
- package/dist/core/omgToolManifest.js.map +1 -0
- package/dist/core/orchestration/consensusEngine.d.ts +21 -0
- package/dist/core/orchestration/consensusEngine.d.ts.map +1 -0
- package/dist/core/orchestration/consensusEngine.js +116 -0
- package/dist/core/orchestration/consensusEngine.js.map +1 -0
- package/dist/core/orchestration/dag.d.ts +21 -0
- package/dist/core/orchestration/dag.d.ts.map +1 -0
- package/dist/core/orchestration/dag.js +71 -0
- package/dist/core/orchestration/dag.js.map +1 -0
- package/dist/core/orchestration/director.d.ts +11 -0
- package/dist/core/orchestration/director.d.ts.map +1 -0
- package/dist/core/orchestration/director.js +37 -0
- package/dist/core/orchestration/director.js.map +1 -0
- package/dist/core/orchestration/orchestrator.d.ts +32 -0
- package/dist/core/orchestration/orchestrator.d.ts.map +1 -0
- package/dist/core/orchestration/orchestrator.js +214 -0
- package/dist/core/orchestration/orchestrator.js.map +1 -0
- package/dist/core/orchestration/roleRouter.d.ts +28 -0
- package/dist/core/orchestration/roleRouter.d.ts.map +1 -0
- package/dist/core/orchestration/roleRouter.js +64 -0
- package/dist/core/orchestration/roleRouter.js.map +1 -0
- package/dist/core/orchestration/teamRunner.d.ts +69 -0
- package/dist/core/orchestration/teamRunner.d.ts.map +1 -0
- package/dist/core/orchestration/teamRunner.js +477 -0
- package/dist/core/orchestration/teamRunner.js.map +1 -0
- package/dist/core/orchestration/types.d.ts +115 -0
- package/dist/core/orchestration/types.d.ts.map +1 -0
- package/dist/core/orchestration/types.js +71 -0
- package/dist/core/orchestration/types.js.map +1 -0
- package/dist/core/orchestrator.d.ts +32 -0
- package/dist/core/orchestrator.d.ts.map +1 -0
- package/dist/core/orchestrator.js +214 -0
- package/dist/core/orchestrator.js.map +1 -0
- package/dist/core/permissionBroker.d.ts +7 -0
- package/dist/core/permissionBroker.d.ts.map +1 -0
- package/dist/core/permissionBroker.js +63 -0
- package/dist/core/permissionBroker.js.map +1 -0
- package/dist/core/planConfig.d.ts +15 -0
- package/dist/core/planConfig.d.ts.map +1 -0
- package/dist/core/planConfig.js +98 -0
- package/dist/core/planConfig.js.map +1 -0
- package/dist/core/presetPersistence.d.ts +4 -0
- package/dist/core/presetPersistence.d.ts.map +1 -0
- package/dist/core/presetPersistence.js +64 -0
- package/dist/core/presetPersistence.js.map +1 -0
- package/dist/core/roleRouter.d.ts +26 -0
- package/dist/core/roleRouter.d.ts.map +1 -0
- package/dist/core/roleRouter.js +62 -0
- package/dist/core/roleRouter.js.map +1 -0
- package/dist/core/sessionList.d.ts +26 -0
- package/dist/core/sessionList.d.ts.map +1 -0
- package/dist/core/sessionList.js +278 -0
- package/dist/core/sessionList.js.map +1 -0
- package/dist/core/slugify.d.ts +2 -0
- package/dist/core/slugify.d.ts.map +1 -0
- package/dist/core/slugify.js +17 -0
- package/dist/core/slugify.js.map +1 -0
- package/dist/core/socketBroker.d.ts +19 -0
- package/dist/core/socketBroker.d.ts.map +1 -0
- package/dist/core/socketBroker.js +48 -0
- package/dist/core/socketBroker.js.map +1 -0
- package/dist/core/state/agentsMdScaffold.d.ts +15 -0
- package/dist/core/state/agentsMdScaffold.d.ts.map +1 -0
- package/dist/core/state/agentsMdScaffold.js +118 -0
- package/dist/core/state/agentsMdScaffold.js.map +1 -0
- package/dist/core/state/atomicWrite.d.ts +5 -0
- package/dist/core/state/atomicWrite.d.ts.map +1 -0
- package/dist/core/state/atomicWrite.js +18 -0
- package/dist/core/state/atomicWrite.js.map +1 -0
- package/dist/core/state/handoff.d.ts +20 -0
- package/dist/core/state/handoff.d.ts.map +1 -0
- package/dist/core/state/handoff.js +71 -0
- package/dist/core/state/handoff.js.map +1 -0
- package/dist/core/state/mcpCatalog.d.ts +11 -0
- package/dist/core/state/mcpCatalog.d.ts.map +1 -0
- package/dist/core/state/mcpCatalog.js +51 -0
- package/dist/core/state/mcpCatalog.js.map +1 -0
- package/dist/core/state/mcpRecommendations.d.ts +7 -0
- package/dist/core/state/mcpRecommendations.d.ts.map +1 -0
- package/dist/core/state/mcpRecommendations.js +57 -0
- package/dist/core/state/mcpRecommendations.js.map +1 -0
- package/dist/core/state/memory.d.ts +22 -0
- package/dist/core/state/memory.d.ts.map +1 -0
- package/dist/core/state/memory.js +102 -0
- package/dist/core/state/memory.js.map +1 -0
- package/dist/core/state/planConfig.d.ts +15 -0
- package/dist/core/state/planConfig.d.ts.map +1 -0
- package/dist/core/state/planConfig.js +98 -0
- package/dist/core/state/planConfig.js.map +1 -0
- package/dist/core/state/presetPersistence.d.ts +4 -0
- package/dist/core/state/presetPersistence.d.ts.map +1 -0
- package/dist/core/state/presetPersistence.js +67 -0
- package/dist/core/state/presetPersistence.js.map +1 -0
- package/dist/core/state/sessionList.d.ts +26 -0
- package/dist/core/state/sessionList.d.ts.map +1 -0
- package/dist/core/state/sessionList.js +278 -0
- package/dist/core/state/sessionList.js.map +1 -0
- package/dist/core/state/stackDetect.d.ts +8 -0
- package/dist/core/state/stackDetect.d.ts.map +1 -0
- package/dist/core/state/stackDetect.js +40 -0
- package/dist/core/state/stackDetect.js.map +1 -0
- package/dist/core/state/tabPersistence.d.ts +29 -0
- package/dist/core/state/tabPersistence.d.ts.map +1 -0
- package/dist/core/state/tabPersistence.js +65 -0
- package/dist/core/state/tabPersistence.js.map +1 -0
- package/dist/core/tabPersistence.d.ts +29 -0
- package/dist/core/tabPersistence.d.ts.map +1 -0
- package/dist/core/tabPersistence.js +65 -0
- package/dist/core/tabPersistence.js.map +1 -0
- package/dist/core/teamRunner.d.ts +42 -0
- package/dist/core/teamRunner.d.ts.map +1 -0
- package/dist/core/teamRunner.js +248 -0
- package/dist/core/teamRunner.js.map +1 -0
- package/dist/core/toolGate.d.ts +23 -0
- package/dist/core/toolGate.d.ts.map +1 -0
- package/dist/core/toolGate.js +51 -0
- package/dist/core/toolGate.js.map +1 -0
- package/dist/core/toolInterceptor.d.ts +7 -0
- package/dist/core/toolInterceptor.d.ts.map +1 -0
- package/dist/core/toolInterceptor.js +108 -0
- package/dist/core/toolInterceptor.js.map +1 -0
- package/dist/core/tools/hookedToolBroker.d.ts +25 -0
- package/dist/core/tools/hookedToolBroker.d.ts.map +1 -0
- package/dist/core/tools/hookedToolBroker.js +95 -0
- package/dist/core/tools/hookedToolBroker.js.map +1 -0
- package/dist/core/tools/omgToolManifest.d.ts +42 -0
- package/dist/core/tools/omgToolManifest.d.ts.map +1 -0
- package/dist/core/tools/omgToolManifest.js +66 -0
- package/dist/core/tools/omgToolManifest.js.map +1 -0
- package/dist/core/tools/toolGate.d.ts +23 -0
- package/dist/core/tools/toolGate.d.ts.map +1 -0
- package/dist/core/tools/toolGate.js +51 -0
- package/dist/core/tools/toolGate.js.map +1 -0
- package/dist/core/tools/toolInterceptor.d.ts +7 -0
- package/dist/core/tools/toolInterceptor.d.ts.map +1 -0
- package/dist/core/tools/toolInterceptor.js +108 -0
- package/dist/core/tools/toolInterceptor.js.map +1 -0
- package/dist/core/tools/tools.d.ts +34 -0
- package/dist/core/tools/tools.d.ts.map +1 -0
- package/dist/core/tools/tools.js +328 -0
- package/dist/core/tools/tools.js.map +1 -0
- package/dist/core/tools.d.ts +34 -0
- package/dist/core/tools.d.ts.map +1 -0
- package/dist/core/tools.js +300 -0
- package/dist/core/tools.js.map +1 -0
- package/dist/core/types.d.ts +107 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +55 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/usageCache.d.ts +19 -0
- package/dist/core/usageCache.d.ts.map +1 -0
- package/dist/core/usageCache.js +157 -0
- package/dist/core/usageCache.js.map +1 -0
- package/dist/core/usageWindow.d.ts +19 -0
- package/dist/core/usageWindow.d.ts.map +1 -0
- package/dist/core/usageWindow.js +73 -0
- package/dist/core/usageWindow.js.map +1 -0
- package/dist/core/util/bgProtocol.d.ts +5 -0
- package/dist/core/util/bgProtocol.d.ts.map +1 -0
- package/dist/core/util/bgProtocol.js +20 -0
- package/dist/core/util/bgProtocol.js.map +1 -0
- package/dist/core/util/clipboard.d.ts +4 -0
- package/dist/core/util/clipboard.d.ts.map +1 -0
- package/dist/core/util/clipboard.js +46 -0
- package/dist/core/util/clipboard.js.map +1 -0
- package/dist/core/util/clipboardImage.d.ts +3 -0
- package/dist/core/util/clipboardImage.d.ts.map +1 -0
- package/dist/core/util/clipboardImage.js +58 -0
- package/dist/core/util/clipboardImage.js.map +1 -0
- package/dist/core/util/langHint.d.ts +9 -0
- package/dist/core/util/langHint.d.ts.map +1 -0
- package/dist/core/util/langHint.js +33 -0
- package/dist/core/util/langHint.js.map +1 -0
- package/dist/core/util/slugify.d.ts +2 -0
- package/dist/core/util/slugify.d.ts.map +1 -0
- package/dist/core/util/slugify.js +28 -0
- package/dist/core/util/slugify.js.map +1 -0
- package/dist/hooks/hookedToolProxy.mjs +118 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/ipc/dispatcher.d.ts +21 -0
- package/dist/ipc/dispatcher.d.ts.map +1 -0
- package/dist/ipc/dispatcher.js +160 -0
- package/dist/ipc/dispatcher.js.map +1 -0
- package/dist/ipc/events.d.ts +33 -0
- package/dist/ipc/events.d.ts.map +1 -0
- package/dist/ipc/events.js +42 -0
- package/dist/ipc/events.js.map +1 -0
- package/dist/ipc/rpc.d.ts +31 -0
- package/dist/ipc/rpc.d.ts.map +1 -0
- package/dist/ipc/rpc.js +110 -0
- package/dist/ipc/rpc.js.map +1 -0
- package/dist/ipc/stdio.d.ts +11 -0
- package/dist/ipc/stdio.d.ts.map +1 -0
- package/dist/ipc/stdio.js +52 -0
- package/dist/ipc/stdio.js.map +1 -0
- package/dist/mcp/askClient.d.ts +9 -0
- package/dist/mcp/askClient.d.ts.map +1 -0
- package/dist/mcp/askClient.js +70 -0
- package/dist/mcp/askClient.js.map +1 -0
- package/dist/mcp/constants.d.ts +6 -0
- package/dist/mcp/constants.d.ts.map +1 -0
- package/dist/mcp/constants.js +8 -0
- package/dist/mcp/constants.js.map +1 -0
- package/dist/mcp/permissionClient.d.ts +5 -0
- package/dist/mcp/permissionClient.d.ts.map +1 -0
- package/dist/mcp/permissionClient.js +71 -0
- package/dist/mcp/permissionClient.js.map +1 -0
- package/dist/mcp/schemas.d.ts +9 -0
- package/dist/mcp/schemas.d.ts.map +1 -0
- package/dist/mcp/schemas.js +121 -0
- package/dist/mcp/schemas.js.map +1 -0
- package/dist/mcp/server.d.ts +41 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +204 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/policy/loader.d.ts +27 -0
- package/dist/policy/loader.d.ts.map +1 -0
- package/dist/policy/loader.js +89 -0
- package/dist/policy/loader.js.map +1 -0
- package/dist/policy/team-claude-only.yaml +46 -0
- package/dist/policy/team-codex-only.yaml +46 -0
- package/dist/policy/team-codex.yaml +54 -0
- package/dist/policy/team.yaml +104 -0
- package/dist/toolhook/hookedToolProxy.mjs +118 -0
- package/dist/ui/components/App.d.ts +14 -0
- package/dist/ui/components/App.d.ts.map +1 -0
- package/dist/ui/components/App.js +803 -0
- package/dist/ui/components/App.js.map +1 -0
- package/dist/ui/components/AskPicker.d.ts +8 -0
- package/dist/ui/components/AskPicker.d.ts.map +1 -0
- package/dist/ui/components/AskPicker.js +202 -0
- package/dist/ui/components/AskPicker.js.map +1 -0
- package/dist/ui/components/CommandInput.d.ts +63 -0
- package/dist/ui/components/CommandInput.d.ts.map +1 -0
- package/dist/ui/components/CommandInput.js +994 -0
- package/dist/ui/components/CommandInput.js.map +1 -0
- package/dist/ui/components/DiffView.d.ts +19 -0
- package/dist/ui/components/DiffView.d.ts.map +1 -0
- package/dist/ui/components/DiffView.js +93 -0
- package/dist/ui/components/DiffView.js.map +1 -0
- package/dist/ui/components/Dock.d.ts +49 -0
- package/dist/ui/components/Dock.d.ts.map +1 -0
- package/dist/ui/components/Dock.js +52 -0
- package/dist/ui/components/Dock.js.map +1 -0
- package/dist/ui/components/EventLog.d.ts +42 -0
- package/dist/ui/components/EventLog.d.ts.map +1 -0
- package/dist/ui/components/EventLog.js +450 -0
- package/dist/ui/components/EventLog.js.map +1 -0
- package/dist/ui/components/FileSuggest.d.ts +8 -0
- package/dist/ui/components/FileSuggest.d.ts.map +1 -0
- package/dist/ui/components/FileSuggest.js +19 -0
- package/dist/ui/components/FileSuggest.js.map +1 -0
- package/dist/ui/components/HRule.d.ts +27 -0
- package/dist/ui/components/HRule.d.ts.map +1 -0
- package/dist/ui/components/HRule.js +75 -0
- package/dist/ui/components/HRule.js.map +1 -0
- package/dist/ui/components/HintBar.d.ts +2 -0
- package/dist/ui/components/HintBar.d.ts.map +1 -0
- package/dist/ui/components/HintBar.js +19 -0
- package/dist/ui/components/HintBar.js.map +1 -0
- package/dist/ui/components/MarkdownText.d.ts +13 -0
- package/dist/ui/components/MarkdownText.d.ts.map +1 -0
- package/dist/ui/components/MarkdownText.js +255 -0
- package/dist/ui/components/MarkdownText.js.map +1 -0
- package/dist/ui/components/PermissionPrompt.d.ts +8 -0
- package/dist/ui/components/PermissionPrompt.d.ts.map +1 -0
- package/dist/ui/components/PermissionPrompt.js +37 -0
- package/dist/ui/components/PermissionPrompt.js.map +1 -0
- package/dist/ui/components/SessionPicker.d.ts +16 -0
- package/dist/ui/components/SessionPicker.d.ts.map +1 -0
- package/dist/ui/components/SessionPicker.js +116 -0
- package/dist/ui/components/SessionPicker.js.map +1 -0
- package/dist/ui/components/SlashPalette.d.ts +8 -0
- package/dist/ui/components/SlashPalette.d.ts.map +1 -0
- package/dist/ui/components/SlashPalette.js +41 -0
- package/dist/ui/components/SlashPalette.js.map +1 -0
- package/dist/ui/components/Spinner.d.ts +37 -0
- package/dist/ui/components/Spinner.d.ts.map +1 -0
- package/dist/ui/components/Spinner.js +139 -0
- package/dist/ui/components/Spinner.js.map +1 -0
- package/dist/ui/components/StatusBar.d.ts +92 -0
- package/dist/ui/components/StatusBar.d.ts.map +1 -0
- package/dist/ui/components/StatusBar.js +268 -0
- package/dist/ui/components/StatusBar.js.map +1 -0
- package/dist/ui/components/TabChip.d.ts +11 -0
- package/dist/ui/components/TabChip.d.ts.map +1 -0
- package/dist/ui/components/TabChip.js +23 -0
- package/dist/ui/components/TabChip.js.map +1 -0
- package/dist/ui/components/TeamIndicator.d.ts +6 -0
- package/dist/ui/components/TeamIndicator.d.ts.map +1 -0
- package/dist/ui/components/TeamIndicator.js +17 -0
- package/dist/ui/components/TeamIndicator.js.map +1 -0
- package/dist/ui/components/TeamStatusPanel.d.ts +14 -0
- package/dist/ui/components/TeamStatusPanel.d.ts.map +1 -0
- package/dist/ui/components/TeamStatusPanel.js +65 -0
- package/dist/ui/components/TeamStatusPanel.js.map +1 -0
- package/dist/ui/components/ThinkingBlock.d.ts +10 -0
- package/dist/ui/components/ThinkingBlock.d.ts.map +1 -0
- package/dist/ui/components/ThinkingBlock.js +21 -0
- package/dist/ui/components/ThinkingBlock.js.map +1 -0
- package/dist/ui/components/TodoIndicator.d.ts +11 -0
- package/dist/ui/components/TodoIndicator.d.ts.map +1 -0
- package/dist/ui/components/TodoIndicator.js +37 -0
- package/dist/ui/components/TodoIndicator.js.map +1 -0
- package/dist/ui/components/ToolCallCard.d.ts +16 -0
- package/dist/ui/components/ToolCallCard.d.ts.map +1 -0
- package/dist/ui/components/ToolCallCard.js +195 -0
- package/dist/ui/components/ToolCallCard.js.map +1 -0
- package/dist/ui/components/Welcome.d.ts +8 -0
- package/dist/ui/components/Welcome.d.ts.map +1 -0
- package/dist/ui/components/Welcome.js +53 -0
- package/dist/ui/components/Welcome.js.map +1 -0
- package/dist/ui/cursorState.d.ts +29 -0
- package/dist/ui/cursorState.d.ts.map +1 -0
- package/dist/ui/cursorState.js +49 -0
- package/dist/ui/cursorState.js.map +1 -0
- package/dist/ui/diff.d.ts +34 -0
- package/dist/ui/diff.d.ts.map +1 -0
- package/dist/ui/diff.js +184 -0
- package/dist/ui/diff.js.map +1 -0
- package/dist/ui/diffLang.d.ts +2 -0
- package/dist/ui/diffLang.d.ts.map +1 -0
- package/dist/ui/diffLang.js +36 -0
- package/dist/ui/diffLang.js.map +1 -0
- package/dist/ui/emoji.d.ts +4 -0
- package/dist/ui/emoji.d.ts.map +1 -0
- package/dist/ui/emoji.js +73 -0
- package/dist/ui/emoji.js.map +1 -0
- package/dist/ui/fileMentions.d.ts +41 -0
- package/dist/ui/fileMentions.d.ts.map +1 -0
- package/dist/ui/fileMentions.js +135 -0
- package/dist/ui/fileMentions.js.map +1 -0
- package/dist/ui/hooks/useLineEditor.d.ts +44 -0
- package/dist/ui/hooks/useLineEditor.d.ts.map +1 -0
- package/dist/ui/hooks/useLineEditor.js +142 -0
- package/dist/ui/hooks/useLineEditor.js.map +1 -0
- package/dist/ui/inputHistory.d.ts +8 -0
- package/dist/ui/inputHistory.d.ts.map +1 -0
- package/dist/ui/inputHistory.js +56 -0
- package/dist/ui/inputHistory.js.map +1 -0
- package/dist/ui/jsonrpc.d.ts +17 -0
- package/dist/ui/jsonrpc.d.ts.map +1 -0
- package/dist/ui/jsonrpc.js +41 -0
- package/dist/ui/jsonrpc.js.map +1 -0
- package/dist/ui/launcher.d.ts +20 -0
- package/dist/ui/launcher.d.ts.map +1 -0
- package/dist/ui/launcher.js +185 -0
- package/dist/ui/launcher.js.map +1 -0
- package/dist/ui/markdown.d.ts +104 -0
- package/dist/ui/markdown.d.ts.map +1 -0
- package/dist/ui/markdown.js +449 -0
- package/dist/ui/markdown.js.map +1 -0
- package/dist/ui/mouse.d.ts +22 -0
- package/dist/ui/mouse.d.ts.map +1 -0
- package/dist/ui/mouse.js +31 -0
- package/dist/ui/mouse.js.map +1 -0
- package/dist/ui/outbound.d.ts +20 -0
- package/dist/ui/outbound.d.ts.map +1 -0
- package/dist/ui/outbound.js +49 -0
- package/dist/ui/outbound.js.map +1 -0
- package/dist/ui/screenMode.d.ts +25 -0
- package/dist/ui/screenMode.d.ts.map +1 -0
- package/dist/ui/screenMode.js +43 -0
- package/dist/ui/screenMode.js.map +1 -0
- package/dist/ui/slashCatalog.d.ts +18 -0
- package/dist/ui/slashCatalog.d.ts.map +1 -0
- package/dist/ui/slashCatalog.js +243 -0
- package/dist/ui/slashCatalog.js.map +1 -0
- package/dist/ui/syntax.d.ts +11 -0
- package/dist/ui/syntax.d.ts.map +1 -0
- package/dist/ui/syntax.js +78 -0
- package/dist/ui/syntax.js.map +1 -0
- package/dist/ui/theme.d.ts +165 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +394 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/ui/types.d.ts +203 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +53 -0
- package/dist/ui/types.js.map +1 -0
- package/package.json +104 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { SlashContext } from "./slash.js";
|
|
2
|
+
import type { Tab } from "./types.js";
|
|
3
|
+
export interface ParsedTeamArgs {
|
|
4
|
+
prompt: string;
|
|
5
|
+
withPlanner: boolean;
|
|
6
|
+
forceNew: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** Strip the leading `--no-plan` / `--plan` / `--new` flags (in any
|
|
9
|
+
* order) from a /team argument string. Multi-pass so combinations like
|
|
10
|
+
* `/team --new --no-plan x` and `/team --no-plan --new x` both work.
|
|
11
|
+
* Phase 302: the planner is on by default; `--no-plan` opts out. */
|
|
12
|
+
export declare function parseTeamArgs(args: string): ParsedTeamArgs;
|
|
13
|
+
export interface SelectedTeamTab {
|
|
14
|
+
teamTab: Tab;
|
|
15
|
+
teamTabName: string;
|
|
16
|
+
/** True when this call created a fresh tab. False when an existing
|
|
17
|
+
* idle team-* tab was reused (Phase 198). */
|
|
18
|
+
isNew: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** Phase 198: reuse the most-recent idle team-* tab when one exists.
|
|
21
|
+
* Falls back to creating a fresh `team-N` when none are idle (or
|
|
22
|
+
* `forceNew` is set). Pushes an error notif + returns null only on
|
|
23
|
+
* makeTab failure — the caller should `return true` to swallow. */
|
|
24
|
+
export declare function selectOrCreateTeamTab(ctx: SlashContext, forceNew: boolean): Promise<SelectedTeamTab | null>;
|
|
25
|
+
export interface RoleStateRow {
|
|
26
|
+
role: string;
|
|
27
|
+
status: string;
|
|
28
|
+
elapsedMs?: number;
|
|
29
|
+
provider?: string;
|
|
30
|
+
model?: string;
|
|
31
|
+
}
|
|
32
|
+
/** Phase 202b: the heavy /team async block. Builds per-role adapters,
|
|
33
|
+
* wires teamWriter that tees events into the UI + tracks per-role
|
|
34
|
+
* usage + parses banner lines into a live `teamPhase` status, runs
|
|
35
|
+
* the TeamRunner, and seeds the tab's follow-up chat history with the
|
|
36
|
+
* team result so the tab's own adapter can answer follow-ups in
|
|
37
|
+
* context.
|
|
38
|
+
*
|
|
39
|
+
* Designed to be void-called (fire-and-forget). All error paths
|
|
40
|
+
* surface via ctx.pushNotif into `teamTab`. */
|
|
41
|
+
export declare function runTeamPipeline(prompt: string, withPlanner: boolean, teamTab: Tab, ctx: SlashContext): Promise<void>;
|
|
42
|
+
//# sourceMappingURL=teamPipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teamPipeline.d.ts","sourceRoot":"","sources":["../../src/cli/teamPipeline.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAwBtC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;qEAGqE;AACrE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAwB1D;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,GAAG,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB;kDAC8C;IAC9C,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;qEAGqE;AACrE,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAsCjC;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;gDAQgD;AAChD,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,GAAG,EACZ,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC,CAoUf"}
|
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
// Phase 202a/b: team-pipeline subsystem extracted from dispatchTeam.
|
|
2
|
+
//
|
|
3
|
+
// 202a: parseTeamArgs + selectOrCreateTeamTab (pure helpers).
|
|
4
|
+
// 202b: runTeamPipeline — the void-async block that builds per-role
|
|
5
|
+
// adapters, runs the TeamRunner, ties usage tracking, and seeds
|
|
6
|
+
// the tab's follow-up history. ~200 LOC moved out of slash.ts.
|
|
7
|
+
import { makeAdapter, makeTeamStubAdapter } from "../core/orchestration/orchestrator.js";
|
|
8
|
+
import { TeamRunner } from "../core/orchestration/teamRunner.js";
|
|
9
|
+
import { RoleRouter } from "../core/orchestration/roleRouter.js";
|
|
10
|
+
import { languageDirective } from "../core/util/langHint.js";
|
|
11
|
+
import { DirectorEscalateStrategy } from "../core/orchestration/consensusEngine.js";
|
|
12
|
+
import { contextWindowForProvider } from "../core/context/contextWindows.js";
|
|
13
|
+
// Phase 107: verdict glyphs for the ◆ team final line. Inlined to
|
|
14
|
+
// avoid coupling the CLI backend to the UI theme module.
|
|
15
|
+
const VERDICT_ICON = {
|
|
16
|
+
approve: "✓",
|
|
17
|
+
reject: "✗",
|
|
18
|
+
request_rework: "↻",
|
|
19
|
+
escalate: "⚠",
|
|
20
|
+
};
|
|
21
|
+
// Phase 144: per-reviewer review lens. Roles absent here (general
|
|
22
|
+
// "reviewer") just use the default review prompt.
|
|
23
|
+
const REVIEW_FOCUS = {
|
|
24
|
+
security: "You are the SECURITY reviewer. Focus on security, secrets handling, " +
|
|
25
|
+
"injection/escape risks, auth, and unsafe operations. Judge mainly on " +
|
|
26
|
+
"those; defer style/UX to other reviewers.",
|
|
27
|
+
design: "You are the DESIGN/UX reviewer. Focus on user-facing behavior, " +
|
|
28
|
+
"accessibility, naming, API/component ergonomics, and consistency. " +
|
|
29
|
+
"Defer deep security/perf to other reviewers.",
|
|
30
|
+
};
|
|
31
|
+
/** Strip the leading `--no-plan` / `--plan` / `--new` flags (in any
|
|
32
|
+
* order) from a /team argument string. Multi-pass so combinations like
|
|
33
|
+
* `/team --new --no-plan x` and `/team --no-plan --new x` both work.
|
|
34
|
+
* Phase 302: the planner is on by default; `--no-plan` opts out. */
|
|
35
|
+
export function parseTeamArgs(args) {
|
|
36
|
+
let raw = args.trim();
|
|
37
|
+
// Phase 302: the planner runs by DEFAULT now — every /team gets an
|
|
38
|
+
// opus planning pass before the implementer (the plan is the backbone).
|
|
39
|
+
// `--no-plan` opts out for a fast straight implementer→review loop;
|
|
40
|
+
// `--plan` is kept as an explicit (now redundant) no-op for back-compat.
|
|
41
|
+
let withPlanner = true;
|
|
42
|
+
let forceNew = false;
|
|
43
|
+
// Up to 3 leading flags, any order: --no-plan / --plan / --new.
|
|
44
|
+
for (let i = 0; i < 3; i++) {
|
|
45
|
+
if (raw.startsWith("--no-plan ") || raw === "--no-plan") {
|
|
46
|
+
withPlanner = false;
|
|
47
|
+
raw = raw.slice("--no-plan".length).trim();
|
|
48
|
+
}
|
|
49
|
+
else if (raw.startsWith("--plan ") || raw === "--plan") {
|
|
50
|
+
withPlanner = true;
|
|
51
|
+
raw = raw.slice("--plan".length).trim();
|
|
52
|
+
}
|
|
53
|
+
else if (raw.startsWith("--new ") || raw === "--new") {
|
|
54
|
+
forceNew = true;
|
|
55
|
+
raw = raw.slice("--new".length).trim();
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return { prompt: raw, withPlanner, forceNew };
|
|
62
|
+
}
|
|
63
|
+
/** Phase 198: reuse the most-recent idle team-* tab when one exists.
|
|
64
|
+
* Falls back to creating a fresh `team-N` when none are idle (or
|
|
65
|
+
* `forceNew` is set). Pushes an error notif + returns null only on
|
|
66
|
+
* makeTab failure — the caller should `return true` to swallow. */
|
|
67
|
+
export async function selectOrCreateTeamTab(ctx, forceNew) {
|
|
68
|
+
if (!forceNew) {
|
|
69
|
+
const reusable = [...ctx.tabs.entries()]
|
|
70
|
+
.filter(([n, t]) => n.startsWith("team-") && !t.inFlight)
|
|
71
|
+
.sort(([a], [b]) => {
|
|
72
|
+
const na = parseInt(a.slice("team-".length), 10);
|
|
73
|
+
const nb = parseInt(b.slice("team-".length), 10);
|
|
74
|
+
return (isFinite(nb) ? nb : 0) - (isFinite(na) ? na : 0);
|
|
75
|
+
})[0];
|
|
76
|
+
if (reusable) {
|
|
77
|
+
return { teamTab: reusable[1], teamTabName: reusable[0], isNew: false };
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const state = ctx.state;
|
|
81
|
+
let teamTabName = `team-${state.nextTabSerial++}`;
|
|
82
|
+
while (ctx.tabs.has(teamTabName)) {
|
|
83
|
+
teamTabName = `team-${state.nextTabSerial++}`;
|
|
84
|
+
}
|
|
85
|
+
const current = ctx.currentTab();
|
|
86
|
+
try {
|
|
87
|
+
const teamTab = await ctx.makeTab(teamTabName, current.provider, current.model, { autoNamed: true, cwd: current.cwd });
|
|
88
|
+
ctx.tabs.set(teamTabName, teamTab);
|
|
89
|
+
return { teamTab, teamTabName, isNew: true };
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
ctx.pushNotif({
|
|
93
|
+
jsonrpc: "2.0",
|
|
94
|
+
method: "event/text",
|
|
95
|
+
params: {
|
|
96
|
+
text: `[team] failed to build tab: ${e.message}\n`,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/** Phase 202b: the heavy /team async block. Builds per-role adapters,
|
|
103
|
+
* wires teamWriter that tees events into the UI + tracks per-role
|
|
104
|
+
* usage + parses banner lines into a live `teamPhase` status, runs
|
|
105
|
+
* the TeamRunner, and seeds the tab's follow-up chat history with the
|
|
106
|
+
* team result so the tab's own adapter can answer follow-ups in
|
|
107
|
+
* context.
|
|
108
|
+
*
|
|
109
|
+
* Designed to be void-called (fire-and-forget). All error paths
|
|
110
|
+
* surface via ctx.pushNotif into `teamTab`. */
|
|
111
|
+
export async function runTeamPipeline(prompt, withPlanner, teamTab, ctx) {
|
|
112
|
+
const tab = teamTab;
|
|
113
|
+
// Phase 149: declared up here so the catch can tell a cancel apart
|
|
114
|
+
// from a real failure.
|
|
115
|
+
const teamAbort = new AbortController();
|
|
116
|
+
// Phase 287 (A): hoisted above the try so the cancel/error path can
|
|
117
|
+
// seed the partial team output into the tab history (mirroring the
|
|
118
|
+
// success path). Without this a cancelled team left the tab's adapter
|
|
119
|
+
// with zero context, so a chat follow-up like "팀작업 이어가줘" had
|
|
120
|
+
// nothing to continue from and the bare provider model reinterpreted
|
|
121
|
+
// "team" in its own terms.
|
|
122
|
+
const teamCaptured = [];
|
|
123
|
+
try {
|
|
124
|
+
const tabRouter = RoleRouter.default();
|
|
125
|
+
// Phase 141: every role replies in the user's language. Baked
|
|
126
|
+
// into the adapter's system prompt at construction so it reaches
|
|
127
|
+
// claude-cli (--append-system-prompt) and API adapters (system)
|
|
128
|
+
// alike.
|
|
129
|
+
const langSystem = languageDirective(prompt);
|
|
130
|
+
const teamAdapterFor = async (role) => {
|
|
131
|
+
const cfg = tabRouter.configFor(role);
|
|
132
|
+
const eff = cfg.llm.provider;
|
|
133
|
+
if (eff === "stub")
|
|
134
|
+
return makeTeamStubAdapter(role);
|
|
135
|
+
const baseSystem = ctx.adapterOptsBase.system;
|
|
136
|
+
const system = [baseSystem, langSystem, REVIEW_FOCUS[role]]
|
|
137
|
+
.filter(Boolean)
|
|
138
|
+
.join("\n\n");
|
|
139
|
+
// Phase 348: per-role MCP scoping. Clone the base omgTools and tag it
|
|
140
|
+
// with this role's allowlist (team.yaml `mcp:`) + provider, so the
|
|
141
|
+
// role's omg MCP child exposes only its targeted servers. Roles with no
|
|
142
|
+
// `mcp` list see all enabled servers (unchanged).
|
|
143
|
+
const baseOmg = ctx.adapterOptsBase.omgTools;
|
|
144
|
+
const omgTools = baseOmg
|
|
145
|
+
? { ...baseOmg, provider: eff, ...(cfg.mcp ? { mcpAllow: [...cfg.mcp] } : {}) }
|
|
146
|
+
: undefined;
|
|
147
|
+
return await makeAdapter(eff, cfg.llm.model, {
|
|
148
|
+
...ctx.adapterOptsBase,
|
|
149
|
+
cwd: tab.cwd,
|
|
150
|
+
system,
|
|
151
|
+
...(omgTools ? { omgTools } : {}),
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
const cache = new Map();
|
|
155
|
+
// Phase 144: a small review panel of distinct lenses.
|
|
156
|
+
const teamReviewers = ["reviewer", "security", "design"];
|
|
157
|
+
const prebuild = ["implementer", ...teamReviewers];
|
|
158
|
+
if (withPlanner)
|
|
159
|
+
prebuild.push("planner");
|
|
160
|
+
for (const role of prebuild) {
|
|
161
|
+
if (!cache.has(role))
|
|
162
|
+
cache.set(role, await teamAdapterFor(role));
|
|
163
|
+
}
|
|
164
|
+
const factory = (role) => {
|
|
165
|
+
const cached = cache.get(role);
|
|
166
|
+
if (cached === undefined) {
|
|
167
|
+
throw new Error(`adapter for role '${role}' not prebuilt`);
|
|
168
|
+
}
|
|
169
|
+
return cached;
|
|
170
|
+
};
|
|
171
|
+
// Phase 149: Esc on the team tab aborts the whole pipeline.
|
|
172
|
+
tab.cancel = () => {
|
|
173
|
+
teamAbort.abort();
|
|
174
|
+
for (const a of cache.values()) {
|
|
175
|
+
a.cancel?.();
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
// Phase 106: capture the team's text output + surface the active
|
|
179
|
+
// role/iteration as a teamPhase status field. (teamCaptured is
|
|
180
|
+
// hoisted above the try — see Phase 287.)
|
|
181
|
+
// Phase 143: banners use `◆ iteration N/M · role` / `◆ planning · role`.
|
|
182
|
+
const PHASE_RE = /^◆\s+iteration\s+(\d+)(?:\/(\d+))?\s+·\s+([\w-]+)|^◆\s+planning\s+·\s+([\w-]+)/;
|
|
183
|
+
// Phase 109: per-role token usage.
|
|
184
|
+
let currentRole = "implementer";
|
|
185
|
+
const roleUsage = new Map();
|
|
186
|
+
// Phase 252 (4th-round audit): providers emit cumulative usage
|
|
187
|
+
// during a single stream — anthropic emits at message_start +
|
|
188
|
+
// every message_delta with growing input/output counts. The
|
|
189
|
+
// original code summed every (tin+tout), so a single 10K-token
|
|
190
|
+
// turn with 50 deltas reported 500K+. For multi-iter team runs
|
|
191
|
+
// the figure exploded ("implementer 22827.8K" = ~22M tokens for
|
|
192
|
+
// what was really tens of thousands).
|
|
193
|
+
//
|
|
194
|
+
// Track lastSeen per role and add only the DELTA when the
|
|
195
|
+
// cumulative grows. When it drops (candidate < last), the role
|
|
196
|
+
// started a new turn — add the full candidate as the new turn's
|
|
197
|
+
// baseline. Total = sum of each turn's final cumulative.
|
|
198
|
+
const roleLastSeen = new Map();
|
|
199
|
+
// Phase 142: live per-role status for the team panel.
|
|
200
|
+
const roleState = new Map();
|
|
201
|
+
const teamWriter = async (m) => {
|
|
202
|
+
if (m.method === "event/role_status") {
|
|
203
|
+
const p = m.params;
|
|
204
|
+
if (typeof p.role === "string" && typeof p.status === "string") {
|
|
205
|
+
roleState.set(p.role, {
|
|
206
|
+
role: p.role,
|
|
207
|
+
status: p.status,
|
|
208
|
+
elapsedMs: typeof p.elapsedMs === "number" ? p.elapsedMs : undefined,
|
|
209
|
+
provider: typeof p.provider === "string" ? p.provider : undefined,
|
|
210
|
+
model: typeof p.model === "string" ? p.model : undefined,
|
|
211
|
+
});
|
|
212
|
+
tab.teamRoles = [...roleState.values()];
|
|
213
|
+
ctx.pushStatus({ teamRoles: tab.teamRoles }, tab);
|
|
214
|
+
}
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (m.method === "event/text") {
|
|
218
|
+
const t = m.params.text;
|
|
219
|
+
if (typeof t === "string") {
|
|
220
|
+
teamCaptured.push(t);
|
|
221
|
+
const line = t.trim();
|
|
222
|
+
const pm = PHASE_RE.exec(line);
|
|
223
|
+
if (pm) {
|
|
224
|
+
currentRole = pm[4] ?? pm[3];
|
|
225
|
+
const phase = pm[4]
|
|
226
|
+
? `planning · ${pm[4]}`
|
|
227
|
+
: `${pm[3]} · iter ${pm[1]}${pm[2] ? `/${pm[2]}` : ""}`;
|
|
228
|
+
tab.teamPhase = phase;
|
|
229
|
+
ctx.pushStatus({ teamPhase: phase }, tab);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
if (m.method === "event/status") {
|
|
234
|
+
const p = m.params;
|
|
235
|
+
const tin = typeof p.tokensIn === "number" ? p.tokensIn : 0;
|
|
236
|
+
const tout = typeof p.tokensOut === "number" ? p.tokensOut : 0;
|
|
237
|
+
const candidate = tin + tout;
|
|
238
|
+
if (candidate > 0) {
|
|
239
|
+
// Phase 252: delta-from-last instead of straight sum.
|
|
240
|
+
// Cumulative-within-turn → growing → add delta.
|
|
241
|
+
// New turn (candidate drops below lastSeen) → reset
|
|
242
|
+
// lastSeen and add the full candidate as that turn's
|
|
243
|
+
// baseline contribution.
|
|
244
|
+
const last = roleLastSeen.get(currentRole) ?? 0;
|
|
245
|
+
const delta = candidate >= last ? candidate - last : candidate;
|
|
246
|
+
roleUsage.set(currentRole, (roleUsage.get(currentRole) ?? 0) + delta);
|
|
247
|
+
roleLastSeen.set(currentRole, candidate);
|
|
248
|
+
}
|
|
249
|
+
// Phase 222 (hotfix): strip per-role tokensIn / tokensOut /
|
|
250
|
+
// contextWindow from the forwarded status. Each role uses its
|
|
251
|
+
// own model (gemini-pro 1M, opus 200K, gpt-5-codex 256K…), and
|
|
252
|
+
// forwarding the raw number into the tab's chip causes
|
|
253
|
+
// ctx % > 100 when the role's window differs from the tab's
|
|
254
|
+
// default. The tab's chip should track the tab's *own*
|
|
255
|
+
// conversation, not a transient sub-pipeline's role-specific
|
|
256
|
+
// adapter call. Role-level usage is preserved separately in
|
|
257
|
+
// `roleUsage` above and surfaced via the `◆ team usage` line.
|
|
258
|
+
const rest = { ...(m.params ?? {}) };
|
|
259
|
+
delete rest.tokensIn;
|
|
260
|
+
delete rest.tokensOut;
|
|
261
|
+
delete rest.contextWindow;
|
|
262
|
+
// Only forward if something remains (e.g. rateLimitStatus,
|
|
263
|
+
// tokensUsed5h aggregates from the user-global usage windows
|
|
264
|
+
// which runTurnFor's writer fills in elsewhere).
|
|
265
|
+
if (Object.keys(rest).length > 0) {
|
|
266
|
+
ctx.pushNotif({ jsonrpc: "2.0", method: "event/status", params: rest }, tab);
|
|
267
|
+
}
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
ctx.pushNotif(m, tab);
|
|
271
|
+
};
|
|
272
|
+
const runner = new TeamRunner(tabRouter, teamWriter, factory, {});
|
|
273
|
+
// Phase 347: the team used to stop after a fixed 3 rounds, so a
|
|
274
|
+
// multi-part request that the reviewers approved one slice of ended
|
|
275
|
+
// half-done and the user had to re-ask. Now the run loops until the
|
|
276
|
+
// completion gate (the verifier judging the ORIGINAL request) reports
|
|
277
|
+
// COMPLETE, bounded by a higher safety cap (override:
|
|
278
|
+
// OMG_TEAM_MAX_ITERATIONS). The gate ends early the moment work is
|
|
279
|
+
// actually done, so the raised cap only costs rounds when there's
|
|
280
|
+
// genuinely more to finish.
|
|
281
|
+
const capEnv = Number(process.env.OMG_TEAM_MAX_ITERATIONS);
|
|
282
|
+
const maxIterations = Number.isFinite(capEnv) && capEnv > 0 ? Math.floor(capEnv) : 8;
|
|
283
|
+
const outcome = await runner.runTeam(prompt, {
|
|
284
|
+
reviewerRoles: teamReviewers,
|
|
285
|
+
plannerRole: withPlanner ? "planner" : undefined,
|
|
286
|
+
strategy: new DirectorEscalateStrategy(),
|
|
287
|
+
maxIterations,
|
|
288
|
+
completionRole: "verifier",
|
|
289
|
+
signal: teamAbort.signal,
|
|
290
|
+
// Phase 288: a chat message typed while the team runs is parked on
|
|
291
|
+
// tab.queued (interactive/index.ts). The team pipeline never goes
|
|
292
|
+
// through runTurnFor, so without this those messages were orphaned
|
|
293
|
+
// (drained only by a later solo follow-up turn, out of context).
|
|
294
|
+
// Hand them to the runner as checkpoint steering: pulled and
|
|
295
|
+
// cleared at each role boundary, folded into the implementer.
|
|
296
|
+
drainSteering: () => {
|
|
297
|
+
const q = tab.queued ?? [];
|
|
298
|
+
if (q.length === 0)
|
|
299
|
+
return [];
|
|
300
|
+
tab.queued = [];
|
|
301
|
+
return q;
|
|
302
|
+
},
|
|
303
|
+
});
|
|
304
|
+
tab.teamPhase = undefined;
|
|
305
|
+
tab.teamRoles = undefined;
|
|
306
|
+
// Phase 222 (hotfix): restore the tab's *own* tokensIn on the
|
|
307
|
+
// status snapshot. During team work the writer used to forward
|
|
308
|
+
// each role's adapter tokensIn, which polluted status.tokensIn
|
|
309
|
+
// with sub-pipeline counts from differently-sized model windows.
|
|
310
|
+
// Pushing the cached tab.tokensIn here resets the chip to the
|
|
311
|
+
// tab's actual conversation length.
|
|
312
|
+
ctx.pushStatus({
|
|
313
|
+
teamPhase: "",
|
|
314
|
+
teamRoles: [],
|
|
315
|
+
tokensIn: tab.tokensIn,
|
|
316
|
+
contextWindow: contextWindowForProvider(tab.provider, tab.model),
|
|
317
|
+
}, tab);
|
|
318
|
+
// Seed the tab's chat history with the team run so follow-ups
|
|
319
|
+
// (e.g. "explain in Korean") have context.
|
|
320
|
+
tab.messages.push({ role: "user", text: prompt });
|
|
321
|
+
tab.messages.push({
|
|
322
|
+
role: "assistant",
|
|
323
|
+
text: `[team result · ${outcome.final}]\n` + teamCaptured.join("").trim(),
|
|
324
|
+
toolCalls: [],
|
|
325
|
+
});
|
|
326
|
+
const usageParts = [];
|
|
327
|
+
for (const [role, total] of roleUsage) {
|
|
328
|
+
usageParts.push(`${role} ${total < 1000 ? total : (total / 1000).toFixed(1) + "K"}`);
|
|
329
|
+
}
|
|
330
|
+
const usageLine = usageParts.length > 0 ? `◆ team usage: ${usageParts.join(" · ")}\n` : "";
|
|
331
|
+
ctx.pushNotif({
|
|
332
|
+
jsonrpc: "2.0",
|
|
333
|
+
method: "event/text",
|
|
334
|
+
params: {
|
|
335
|
+
text: `\n◆ team final: ${VERDICT_ICON[outcome.final] ?? "•"} ${outcome.final} (${outcome.strategy}) · follow-ups now have the full team context\n` +
|
|
336
|
+
usageLine,
|
|
337
|
+
},
|
|
338
|
+
}, tab);
|
|
339
|
+
// Phase 220 / 223 (hotfix): predict the next message after a team
|
|
340
|
+
// finish, mirroring runTurnFor at turn.ts:390. Phase 223 cleans up
|
|
341
|
+
// the input — pre-223 we passed the raw teamCaptured which was
|
|
342
|
+
// dominated by `◆ iteration N · role` banners and the per-role
|
|
343
|
+
// event-text noise, so haiku saw mostly framing text and returned
|
|
344
|
+
// nothing useful. Now we feed it the team result line + the trimmed
|
|
345
|
+
// implementer output (the substantive part of the team's reply).
|
|
346
|
+
if (ctx.state.predictMode) {
|
|
347
|
+
const summary = `Team result: ${outcome.final} (${outcome.strategy}).\n\n` +
|
|
348
|
+
teamCaptured.join("").trim().slice(-3000);
|
|
349
|
+
const { predictNext } = await import("./turn.js");
|
|
350
|
+
void predictNext(tab, summary, ctx).catch(() => { });
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
catch (e) {
|
|
354
|
+
tab.teamPhase = undefined;
|
|
355
|
+
tab.teamRoles = undefined;
|
|
356
|
+
// Phase 222 (hotfix): see success-path comment above.
|
|
357
|
+
ctx.pushStatus({
|
|
358
|
+
teamPhase: "",
|
|
359
|
+
teamRoles: [],
|
|
360
|
+
tokensIn: tab.tokensIn,
|
|
361
|
+
contextWindow: contextWindowForProvider(tab.provider, tab.model),
|
|
362
|
+
}, tab);
|
|
363
|
+
const text = teamAbort.signal.aborted
|
|
364
|
+
? `\n[team] cancelled\n`
|
|
365
|
+
: `\n[team] failed: ${e.message}\n`;
|
|
366
|
+
ctx.pushNotif({ jsonrpc: "2.0", method: "event/text", params: { text } }, tab);
|
|
367
|
+
// Phase 287 (A): seed whatever the team produced before the
|
|
368
|
+
// cancel/failure into the tab history (same shape as the success
|
|
369
|
+
// path), so a chat follow-up on this tab continues from the real
|
|
370
|
+
// work instead of an empty context. Skip when nothing was captured.
|
|
371
|
+
const partial = teamCaptured.join("").trim();
|
|
372
|
+
if (partial) {
|
|
373
|
+
tab.messages.push({ role: "user", text: prompt });
|
|
374
|
+
tab.messages.push({
|
|
375
|
+
role: "assistant",
|
|
376
|
+
text: `[team ${teamAbort.signal.aborted ? "cancelled" : "failed"} · partial]\n` +
|
|
377
|
+
partial,
|
|
378
|
+
toolCalls: [],
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
finally {
|
|
383
|
+
tab.inFlight = false;
|
|
384
|
+
tab.inFlightSince = undefined;
|
|
385
|
+
tab.teamInFlight = undefined;
|
|
386
|
+
tab.cancel = undefined;
|
|
387
|
+
// Phase 256 (hotfix): the tabsState push was gated on
|
|
388
|
+
// `tab !== currentTab()` — only the case where the user has
|
|
389
|
+
// /switch'd away during the team run. But Phase 236c made the
|
|
390
|
+
// Spinner's visibility derive from `tabsState[active].running`,
|
|
391
|
+
// so when the user STAYS on the team tab through completion, no
|
|
392
|
+
// tabsState push fires, the snapshot still says running:true,
|
|
393
|
+
// and the spinner keeps spinning on a finished team. The
|
|
394
|
+
// hasUnreadCompletion + tabsReady fields still only matter for
|
|
395
|
+
// the background-completion case, but the tabsState push must
|
|
396
|
+
// fire either way to keep the Spinner correct.
|
|
397
|
+
if (tab !== ctx.currentTab()) {
|
|
398
|
+
tab.hasUnreadCompletion = true;
|
|
399
|
+
}
|
|
400
|
+
ctx.pushStatus({
|
|
401
|
+
tabsReady: ctx.readyCount(),
|
|
402
|
+
tabsState: ctx.snapshotTabsState(),
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
//# sourceMappingURL=teamPipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teamPipeline.js","sourceRoot":"","sources":["../../src/cli/teamPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Extract the path from one `git status --porcelain` line. Handles the
|
|
2
|
+
* `XY ` status prefix, rename arrows (`old -> new` → new), and git's
|
|
3
|
+
* quoting of paths with special chars. Returns null for an empty line. */
|
|
4
|
+
export declare function parsePorcelainPath(line: string): string | null;
|
|
5
|
+
/** Set of changed paths in `cwd` (modified / staged / untracked / deleted),
|
|
6
|
+
* as git reports them relative to cwd. null when cwd isn't a git work tree
|
|
7
|
+
* (or git is unavailable) — callers treat null as "no attribution". */
|
|
8
|
+
export declare function snapshotChangedPaths(cwd: string): Promise<Set<string> | null>;
|
|
9
|
+
/** Paths that became dirty between `before` and `after` (i.e. this turn's
|
|
10
|
+
* work). When `before` is null (first snapshot failed / not a repo) returns
|
|
11
|
+
* []. A path already dirty in `before` is NOT re-attributed — the tab that
|
|
12
|
+
* first dirtied it owns it (see the same-file limitation above). */
|
|
13
|
+
export declare function newlyTouched(before: Set<string> | null, after: Set<string> | null): string[];
|
|
14
|
+
//# sourceMappingURL=touchedFiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"touchedFiles.d.ts","sourceRoot":"","sources":["../../src/cli/touchedFiles.ts"],"names":[],"mappings":"AAmBA;;2EAE2E;AAC3E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU9D;AAED;;wEAEwE;AACxE,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAc7B;AAED;;;qEAGqE;AACrE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GACxB,MAAM,EAAE,CAKV"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Phase 341: per-tab change attribution for scoped commits.
|
|
2
|
+
//
|
|
3
|
+
// omg tabs share one working directory (the project mission), so when
|
|
4
|
+
// several tabs edit in parallel their diffs interleave and a plain
|
|
5
|
+
// `git add -A` commits everyone's work together. Instead, omg snapshots
|
|
6
|
+
// the set of changed files at each turn boundary; whatever became dirty
|
|
7
|
+
// DURING a tab's turn is attributed to that tab (turn.ts accumulates it
|
|
8
|
+
// into tab.touchedFiles). A scoped commit then stages + commits only that
|
|
9
|
+
// tab's paths, leaving other tabs' changes in the tree.
|
|
10
|
+
//
|
|
11
|
+
// Limitation (documented): attribution is by working-tree delta, so if two
|
|
12
|
+
// tabs run turns SIMULTANEOUSLY or edit the SAME file, the split is
|
|
13
|
+
// approximate — that's the case the opt-in `/worktree` model would isolate.
|
|
14
|
+
import { execFile } from "node:child_process";
|
|
15
|
+
import { promisify } from "node:util";
|
|
16
|
+
const execAsync = promisify(execFile);
|
|
17
|
+
/** Extract the path from one `git status --porcelain` line. Handles the
|
|
18
|
+
* `XY ` status prefix, rename arrows (`old -> new` → new), and git's
|
|
19
|
+
* quoting of paths with special chars. Returns null for an empty line. */
|
|
20
|
+
export function parsePorcelainPath(line) {
|
|
21
|
+
if (line.length < 4)
|
|
22
|
+
return null;
|
|
23
|
+
let p = line.slice(3); // drop the 2-char status + the separating space
|
|
24
|
+
const arrow = p.indexOf(" -> ");
|
|
25
|
+
if (arrow >= 0)
|
|
26
|
+
p = p.slice(arrow + 4); // rename: keep the destination
|
|
27
|
+
if (p.length >= 2 && p.startsWith('"') && p.endsWith('"')) {
|
|
28
|
+
p = p.slice(1, -1);
|
|
29
|
+
}
|
|
30
|
+
const trimmed = p.trim();
|
|
31
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
32
|
+
}
|
|
33
|
+
/** Set of changed paths in `cwd` (modified / staged / untracked / deleted),
|
|
34
|
+
* as git reports them relative to cwd. null when cwd isn't a git work tree
|
|
35
|
+
* (or git is unavailable) — callers treat null as "no attribution". */
|
|
36
|
+
export async function snapshotChangedPaths(cwd) {
|
|
37
|
+
try {
|
|
38
|
+
const { stdout } = await execAsync("git", ["status", "--porcelain"], {
|
|
39
|
+
cwd,
|
|
40
|
+
});
|
|
41
|
+
const set = new Set();
|
|
42
|
+
for (const line of stdout.split("\n")) {
|
|
43
|
+
const p = parsePorcelainPath(line);
|
|
44
|
+
if (p)
|
|
45
|
+
set.add(p);
|
|
46
|
+
}
|
|
47
|
+
return set;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return null; // not a repo, or git missing
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Paths that became dirty between `before` and `after` (i.e. this turn's
|
|
54
|
+
* work). When `before` is null (first snapshot failed / not a repo) returns
|
|
55
|
+
* []. A path already dirty in `before` is NOT re-attributed — the tab that
|
|
56
|
+
* first dirtied it owns it (see the same-file limitation above). */
|
|
57
|
+
export function newlyTouched(before, after) {
|
|
58
|
+
if (!before || !after)
|
|
59
|
+
return [];
|
|
60
|
+
const out = [];
|
|
61
|
+
for (const p of after)
|
|
62
|
+
if (!before.has(p))
|
|
63
|
+
out.push(p);
|
|
64
|
+
return out;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=touchedFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"touchedFiles.js","sourceRoot":"","sources":["../../src/cli/touchedFiles.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,sEAAsE;AACtE,mEAAmE;AACnE,wEAAwE;AACxE,wEAAwE;AACxE,wEAAwE;AACxE,0EAA0E;AAC1E,wDAAwD;AACxD,EAAE;AACF,2EAA2E;AAC3E,oEAAoE;AACpE,4EAA4E;AAE5E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEtC;;2EAE2E;AAC3E,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gDAAgD;IACvE,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,KAAK,IAAI,CAAC;QAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,+BAA+B;IACvE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED;;wEAEwE;AACxE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAW;IAEX,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE;YACnE,GAAG;SACJ,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,6BAA6B;IAC5C,CAAC;AACH,CAAC;AAED;;;qEAGqE;AACrE,MAAM,UAAU,YAAY,CAC1B,MAA0B,EAC1B,KAAyB;IAEzB,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { RollingUsage } from "../core/context/usageWindow.js";
|
|
2
|
+
import { type JsonRpcNotification } from "../ipc/events.js";
|
|
3
|
+
import type { SlashState } from "./slash.js";
|
|
4
|
+
import type { Tab } from "./types.js";
|
|
5
|
+
import { type BgTaskWatcher } from "./bgTasks.js";
|
|
6
|
+
export interface UsageAccumulators {
|
|
7
|
+
five: RollingUsage;
|
|
8
|
+
weekly: RollingUsage;
|
|
9
|
+
session: {
|
|
10
|
+
tokens: number;
|
|
11
|
+
};
|
|
12
|
+
capFive: number | undefined;
|
|
13
|
+
capWeekly: number | undefined;
|
|
14
|
+
capSession: number | undefined;
|
|
15
|
+
}
|
|
16
|
+
export interface TurnContext {
|
|
17
|
+
state: SlashState;
|
|
18
|
+
tabs: Map<string, Tab>;
|
|
19
|
+
pushNotif: (n: JsonRpcNotification, tab?: Tab) => void;
|
|
20
|
+
pushStatus: (s: Record<string, unknown>, tab?: Tab) => void;
|
|
21
|
+
snapshotTabsState: () => Array<{
|
|
22
|
+
index: number;
|
|
23
|
+
name: string;
|
|
24
|
+
running: boolean;
|
|
25
|
+
ready: boolean;
|
|
26
|
+
asking: boolean;
|
|
27
|
+
runningSince?: number;
|
|
28
|
+
}>;
|
|
29
|
+
currentTab: () => Tab;
|
|
30
|
+
tabIndex: (name: string) => number;
|
|
31
|
+
readyCount: () => number;
|
|
32
|
+
maybeAutoName: (tab: Tab) => void;
|
|
33
|
+
persistTabs: () => void;
|
|
34
|
+
refreshUsageFromCache: () => void;
|
|
35
|
+
adapterOptsBase: Record<string, unknown>;
|
|
36
|
+
usage: UsageAccumulators;
|
|
37
|
+
reportAsyncError: (label: string, tab?: Tab) => (e: unknown) => void;
|
|
38
|
+
runTurn: (tab: Tab) => Promise<void>;
|
|
39
|
+
bgTasks?: BgTaskWatcher;
|
|
40
|
+
}
|
|
41
|
+
export interface PredictContext {
|
|
42
|
+
adapterOptsBase: TurnContext["adapterOptsBase"];
|
|
43
|
+
pushNotif: TurnContext["pushNotif"];
|
|
44
|
+
}
|
|
45
|
+
export declare function predictNext(tab: Tab, lastReply: string, ctx: PredictContext): Promise<void>;
|
|
46
|
+
export declare function runTurnFor(tab: Tab, ctx: TurnContext): Promise<void>;
|
|
47
|
+
//# sourceMappingURL=turn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn.d.ts","sourceRoot":"","sources":["../../src/cli/turn.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAsB5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,cAAc,CAAC;AAMrE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvB,SAAS,EAAE,CAAC,CAAC,EAAE,mBAAmB,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACvD,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC5D,iBAAiB,EAAE,MAAM,KAAK,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,UAAU,EAAE,MAAM,GAAG,CAAC;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,KAAK,EAAE,iBAAiB,CAAC;IACzB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAIrC,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAWD,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAChD,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;CACrC;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAmEf;AAOD,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwlB1E"}
|