@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,279 @@
|
|
|
1
|
+
// Phase 344: `omg doctor` — provider setup diagnosis.
|
|
2
|
+
//
|
|
3
|
+
// A first-time user can't see, in one place, whether Claude / Codex /
|
|
4
|
+
// Gemini are installed, logged in, or (for Gemini) MCP-registered. They
|
|
5
|
+
// discover each gap one cryptic spawn failure at a time. `omg doctor`
|
|
6
|
+
// reports per-provider status and the exact command to fix each gap.
|
|
7
|
+
//
|
|
8
|
+
// This module is the testable core: a pure `diagnose()` over an injected
|
|
9
|
+
// `DoctorEnv` probe, plus formatters. The I/O shell (resolve the active
|
|
10
|
+
// preset → required providers, write output, set the exit code) lives in
|
|
11
|
+
// cli/modes/doctor.ts.
|
|
12
|
+
//
|
|
13
|
+
// Honesty rule (project "accuracy or hide"): a provider's auth file
|
|
14
|
+
// existing proves the file exists, NOT that the token is valid. We never
|
|
15
|
+
// render a green "authenticated". The strongest auth claim we make is
|
|
16
|
+
// "logged-in file present (run `<login>` if calls fail)".
|
|
17
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
18
|
+
import { homedir } from "node:os";
|
|
19
|
+
import { join } from "node:path";
|
|
20
|
+
import { BIN, loginCommandLine } from "./login.js";
|
|
21
|
+
import { INSTALL_HINTS } from "../core/adapters/cliAdapterBase.js";
|
|
22
|
+
import { buildOmgServerSpec } from "../core/tools/omgToolManifest.js";
|
|
23
|
+
export const BASE_PROVIDERS = [
|
|
24
|
+
"claude",
|
|
25
|
+
"codex",
|
|
26
|
+
"gemini",
|
|
27
|
+
];
|
|
28
|
+
/** The optional peer SDK that backs each provider's API-key path. */
|
|
29
|
+
const SDK_MODULE = {
|
|
30
|
+
claude: "@anthropic-ai/sdk",
|
|
31
|
+
codex: "openai",
|
|
32
|
+
gemini: "@google/genai",
|
|
33
|
+
};
|
|
34
|
+
/** The env var the SDK reads for auth (the SDK itself reads it; omg only
|
|
35
|
+
* checks whether it's set). */
|
|
36
|
+
const KEY_ENV = {
|
|
37
|
+
claude: "ANTHROPIC_API_KEY",
|
|
38
|
+
codex: "OPENAI_API_KEY",
|
|
39
|
+
gemini: "GOOGLE_API_KEY",
|
|
40
|
+
};
|
|
41
|
+
/** Files whose presence is a (partial) signal the CLI has been logged in
|
|
42
|
+
* at least once. Relative to the user's home dir. */
|
|
43
|
+
const AUTH_FILES = {
|
|
44
|
+
claude: [".claude.json", ".claude"],
|
|
45
|
+
codex: [".codex/auth.json"],
|
|
46
|
+
gemini: [".gemini/oauth_creds.json", ".gemini/google_accounts.json"],
|
|
47
|
+
};
|
|
48
|
+
export function emptyRequired() {
|
|
49
|
+
return {
|
|
50
|
+
claude: { cli: false, sdk: false },
|
|
51
|
+
codex: { cli: false, sdk: false },
|
|
52
|
+
gemini: { cli: false, sdk: false },
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/** Map a team.yaml provider string onto a base provider + path. Returns
|
|
56
|
+
* null for non-provider ids ("stub", "policy") and unknown strings. */
|
|
57
|
+
export function classifyProvider(raw) {
|
|
58
|
+
const cliMatch = /^(claude|codex|gemini)-cli$/.exec(raw);
|
|
59
|
+
if (cliMatch)
|
|
60
|
+
return { base: cliMatch[1], path: "cli" };
|
|
61
|
+
if (raw === "claude" || raw === "codex" || raw === "gemini") {
|
|
62
|
+
return { base: raw, path: "sdk" };
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
/** Build the required set from a list of team.yaml provider strings. */
|
|
67
|
+
export function requiredFromProviders(providers) {
|
|
68
|
+
const req = emptyRequired();
|
|
69
|
+
for (const p of providers) {
|
|
70
|
+
const c = classifyProvider(p);
|
|
71
|
+
if (!c)
|
|
72
|
+
continue;
|
|
73
|
+
req[c.base][c.path] = true;
|
|
74
|
+
}
|
|
75
|
+
return req;
|
|
76
|
+
}
|
|
77
|
+
function isGeminiOmgRegistered(env) {
|
|
78
|
+
const txt = env.readFile(join(env.home(), ".gemini", "settings.json"));
|
|
79
|
+
if (!txt)
|
|
80
|
+
return false;
|
|
81
|
+
try {
|
|
82
|
+
const obj = JSON.parse(txt);
|
|
83
|
+
const cur = obj.mcpServers?.omg;
|
|
84
|
+
const spec = buildOmgServerSpec({});
|
|
85
|
+
return (!!cur &&
|
|
86
|
+
cur.command === spec.command &&
|
|
87
|
+
Array.isArray(cur.args) &&
|
|
88
|
+
cur.args.length === spec.args.length &&
|
|
89
|
+
cur.args.every((a, i) => a === spec.args[i]));
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Diagnose every base provider against the injected environment.
|
|
97
|
+
*
|
|
98
|
+
* `probeSdks` controls when the (heavier) dynamic-import probe runs:
|
|
99
|
+
* - "required" (default): only for providers whose SDK path is required.
|
|
100
|
+
* Cheap enough for the startup preflight nudge.
|
|
101
|
+
* - "all": every provider, for a full `omg doctor` picture.
|
|
102
|
+
*/
|
|
103
|
+
export async function diagnose(env, required, opts = {}) {
|
|
104
|
+
const probeSdks = opts.probeSdks ?? "required";
|
|
105
|
+
const providers = [];
|
|
106
|
+
for (const base of BASE_PROVIDERS) {
|
|
107
|
+
const need = required[base];
|
|
108
|
+
const cliOnPath = env.onPath(BIN[base]);
|
|
109
|
+
const authFilePresent = AUTH_FILES[base].some((f) => env.fileExists(join(env.home(), f)));
|
|
110
|
+
const shouldProbeSdk = probeSdks === "all" || need.sdk;
|
|
111
|
+
const sdkImportable = shouldProbeSdk
|
|
112
|
+
? await env.canImport(SDK_MODULE[base])
|
|
113
|
+
: null;
|
|
114
|
+
const keyEnvSet = !!env.envVar(KEY_ENV[base]);
|
|
115
|
+
const geminiMcpRegistered = base === "gemini" ? isGeminiOmgRegistered(env) : undefined;
|
|
116
|
+
// Usability is gated only on REQUIRED paths.
|
|
117
|
+
let usable = true;
|
|
118
|
+
const fixes = [];
|
|
119
|
+
if (need.cli) {
|
|
120
|
+
if (!cliOnPath) {
|
|
121
|
+
usable = false;
|
|
122
|
+
fixes.push(`Install the ${base} CLI: ${INSTALL_HINTS[`${base}-cli`]}`);
|
|
123
|
+
}
|
|
124
|
+
else if (!authFilePresent) {
|
|
125
|
+
// Installed but no login signal — runtime calls would return empty
|
|
126
|
+
// bodies. Treat as a usability gap with an exact fix.
|
|
127
|
+
usable = false;
|
|
128
|
+
fixes.push(`${base} CLI found but not logged in — run \`${loginCommandLine(base)}\``);
|
|
129
|
+
}
|
|
130
|
+
if (base === "gemini" && cliOnPath && !geminiMcpRegistered) {
|
|
131
|
+
// Informational, not a hard fail: omg writes this on first
|
|
132
|
+
// gemini-cli run.
|
|
133
|
+
fixes.push("gemini omg MCP entry not found in ~/.gemini/settings.json — omg registers it automatically on first gemini-cli run.");
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (need.sdk) {
|
|
137
|
+
if (!sdkImportable) {
|
|
138
|
+
usable = false;
|
|
139
|
+
fixes.push(`Install the SDK for ${base}: \`npm install ${SDK_MODULE[base]}\``);
|
|
140
|
+
}
|
|
141
|
+
else if (!keyEnvSet) {
|
|
142
|
+
usable = false;
|
|
143
|
+
fixes.push(`Set \`${KEY_ENV[base]}\` in your environment for the ${base} SDK path.`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
providers.push({
|
|
147
|
+
provider: base,
|
|
148
|
+
required: need,
|
|
149
|
+
cliOnPath,
|
|
150
|
+
authFilePresent,
|
|
151
|
+
sdkImportable,
|
|
152
|
+
keyEnvSet,
|
|
153
|
+
geminiMcpRegistered,
|
|
154
|
+
usable,
|
|
155
|
+
fixes,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
const pass = providers
|
|
159
|
+
.filter((p) => p.required.cli || p.required.sdk)
|
|
160
|
+
.every((p) => p.usable);
|
|
161
|
+
return { providers, pass };
|
|
162
|
+
}
|
|
163
|
+
/** Production probe. */
|
|
164
|
+
export function nodeDoctorEnv() {
|
|
165
|
+
return {
|
|
166
|
+
onPath(bin) {
|
|
167
|
+
const PATH = process.env.PATH ?? "";
|
|
168
|
+
const isWin = process.platform === "win32";
|
|
169
|
+
const sep = isWin ? ";" : ":";
|
|
170
|
+
// On Windows a bare `claude` resolves via PATHEXT (.CMD/.EXE/…).
|
|
171
|
+
const exts = isWin
|
|
172
|
+
? (process.env.PATHEXT ?? ".COM;.EXE;.BAT;.CMD")
|
|
173
|
+
.split(";")
|
|
174
|
+
.map((e) => e.toLowerCase())
|
|
175
|
+
: [""];
|
|
176
|
+
for (const dir of PATH.split(sep)) {
|
|
177
|
+
if (!dir)
|
|
178
|
+
continue;
|
|
179
|
+
for (const ext of exts) {
|
|
180
|
+
const candidate = join(dir, bin + ext);
|
|
181
|
+
try {
|
|
182
|
+
if (statSync(candidate).isFile())
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
/* not here */
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return false;
|
|
191
|
+
},
|
|
192
|
+
fileExists: (p) => existsSync(p),
|
|
193
|
+
readFile(p) {
|
|
194
|
+
try {
|
|
195
|
+
return readFileSync(p, "utf-8");
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
envVar: (name) => process.env[name],
|
|
202
|
+
async canImport(moduleName) {
|
|
203
|
+
// Indirect via a variable so tsc doesn't statically resolve the
|
|
204
|
+
// optional peer dep (mirrors the SDK adapters).
|
|
205
|
+
const name = moduleName;
|
|
206
|
+
try {
|
|
207
|
+
await import(name);
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
home: () => process.env.HOME ?? homedir(),
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
// ── formatters ──────────────────────────────────────────────────────────
|
|
218
|
+
function cliStatusWord(d) {
|
|
219
|
+
if (!d.cliOnPath)
|
|
220
|
+
return "not installed";
|
|
221
|
+
if (!d.authFilePresent)
|
|
222
|
+
return "installed, not logged in";
|
|
223
|
+
return "installed, login file present";
|
|
224
|
+
}
|
|
225
|
+
function sdkStatusWord(d) {
|
|
226
|
+
if (d.sdkImportable === null)
|
|
227
|
+
return "not checked";
|
|
228
|
+
if (!d.sdkImportable)
|
|
229
|
+
return "SDK not installed";
|
|
230
|
+
if (!d.keyEnvSet)
|
|
231
|
+
return "SDK installed, key env unset";
|
|
232
|
+
return "SDK + key present";
|
|
233
|
+
}
|
|
234
|
+
/** Human-readable report. Required providers first; fix lines only for
|
|
235
|
+
* gaps (UI restraint — nothing rendered when a provider is fine). */
|
|
236
|
+
export function renderReport(report) {
|
|
237
|
+
const lines = ["omg doctor — provider setup", ""];
|
|
238
|
+
const ordered = [...report.providers].sort((a, b) => {
|
|
239
|
+
const ar = a.required.cli || a.required.sdk ? 0 : 1;
|
|
240
|
+
const br = b.required.cli || b.required.sdk ? 0 : 1;
|
|
241
|
+
return ar - br;
|
|
242
|
+
});
|
|
243
|
+
for (const d of ordered) {
|
|
244
|
+
const req = d.required.cli || d.required.sdk;
|
|
245
|
+
const tag = req ? " [required]" : "";
|
|
246
|
+
const mark = !req ? "·" : d.usable ? "✓" : "✗";
|
|
247
|
+
const bits = [];
|
|
248
|
+
// Show the CLI line whenever the CLI path is required or the binary
|
|
249
|
+
// is present (so an unused-but-installed CLI still shows up).
|
|
250
|
+
if (d.required.cli || d.cliOnPath)
|
|
251
|
+
bits.push(`CLI: ${cliStatusWord(d)}`);
|
|
252
|
+
if (d.required.sdk || d.sdkImportable)
|
|
253
|
+
bits.push(`SDK: ${sdkStatusWord(d)}`);
|
|
254
|
+
if (bits.length === 0)
|
|
255
|
+
bits.push("CLI: not installed");
|
|
256
|
+
lines.push(` ${mark} ${d.provider}${tag} — ${bits.join("; ")}`);
|
|
257
|
+
for (const f of d.fixes)
|
|
258
|
+
lines.push(` → ${f}`);
|
|
259
|
+
}
|
|
260
|
+
if (report.mcp && report.mcp.length > 0) {
|
|
261
|
+
lines.push("");
|
|
262
|
+
lines.push("Shared MCP servers (.omg/mcp.json):");
|
|
263
|
+
for (const s of report.mcp) {
|
|
264
|
+
const state = s.enabled ? "● on " : "○ off";
|
|
265
|
+
const scope = s.providers ? ` [${s.providers.join(",")} only]` : "";
|
|
266
|
+
lines.push(` ${state} ${s.name}${scope}`);
|
|
267
|
+
}
|
|
268
|
+
lines.push(" (toggle with `/mcp enable|disable <name>` in the TUI)");
|
|
269
|
+
}
|
|
270
|
+
lines.push("");
|
|
271
|
+
lines.push(report.pass
|
|
272
|
+
? "All required providers are usable."
|
|
273
|
+
: "Some required providers need setup (see → above). `omg login <provider>` re-authenticates a CLI.");
|
|
274
|
+
return lines.join("\n") + "\n";
|
|
275
|
+
}
|
|
276
|
+
export function renderJson(report) {
|
|
277
|
+
return JSON.stringify(report, null, 2) + "\n";
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitStatus.d.ts","sourceRoot":"","sources":["../../src/cli/gitStatus.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAgD1E"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Phase 229: cheap git status reader for the status bar.
|
|
2
|
+
//
|
|
3
|
+
// `git diff HEAD --numstat` gives `+ / -` line counts for every
|
|
4
|
+
// modified file vs the latest commit. Sum the numbers across files
|
|
5
|
+
// for a one-glance "how much has changed since the last commit"
|
|
6
|
+
// indicator. Combined with `git symbolic-ref --short HEAD` for the
|
|
7
|
+
// branch, we get `master +12/-3` style output the user asked for.
|
|
8
|
+
//
|
|
9
|
+
// Performance: each call spawns 2-3 git subprocesses. cli.ts polls
|
|
10
|
+
// on a 5s interval and on turn-end, NOT per chunk. Untracked files
|
|
11
|
+
// are intentionally not summed — `git diff` doesn't list them, and
|
|
12
|
+
// the user can spot them via `git status` if they want.
|
|
13
|
+
import { execFile } from "node:child_process";
|
|
14
|
+
import { promisify } from "node:util";
|
|
15
|
+
const execAsync = promisify(execFile);
|
|
16
|
+
const SPAWN_OPTS = { timeout: 2000, detached: true };
|
|
17
|
+
export async function readGitStatus(cwd) {
|
|
18
|
+
try {
|
|
19
|
+
await execAsync("git", ["rev-parse", "--is-inside-work-tree"], {
|
|
20
|
+
cwd,
|
|
21
|
+
...SPAWN_OPTS,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
let branch;
|
|
28
|
+
try {
|
|
29
|
+
const r = await execAsync("git", ["symbolic-ref", "--short", "HEAD"], {
|
|
30
|
+
cwd,
|
|
31
|
+
...SPAWN_OPTS,
|
|
32
|
+
});
|
|
33
|
+
branch = r.stdout.trim();
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// Detached HEAD — fall back to short SHA.
|
|
37
|
+
try {
|
|
38
|
+
const r = await execAsync("git", ["rev-parse", "--short", "HEAD"], {
|
|
39
|
+
cwd,
|
|
40
|
+
...SPAWN_OPTS,
|
|
41
|
+
});
|
|
42
|
+
branch = r.stdout.trim();
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
let added = 0;
|
|
49
|
+
let removed = 0;
|
|
50
|
+
try {
|
|
51
|
+
const r = await execAsync("git", ["diff", "HEAD", "--numstat"], {
|
|
52
|
+
cwd,
|
|
53
|
+
...SPAWN_OPTS,
|
|
54
|
+
});
|
|
55
|
+
for (const line of r.stdout.split("\n")) {
|
|
56
|
+
const m = /^(\d+|-)\s+(\d+|-)/.exec(line);
|
|
57
|
+
if (!m)
|
|
58
|
+
continue;
|
|
59
|
+
if (m[1] !== "-")
|
|
60
|
+
added += parseInt(m[1], 10);
|
|
61
|
+
if (m[2] !== "-")
|
|
62
|
+
removed += parseInt(m[2], 10);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// No diff (clean tree) or no commits yet — leave at 0.
|
|
67
|
+
}
|
|
68
|
+
return { branch, added, removed };
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=gitStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitStatus.js","sourceRoot":"","sources":["../../src/cli/gitStatus.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,gEAAgE;AAChE,mEAAmE;AACnE,gEAAgE;AAChE,mEAAmE;AACnE,kEAAkE;AAClE,EAAE;AACF,mEAAmE;AACnE,mEAAmE;AACnE,mEAAmE;AACnE,wDAAwD;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AACtC,MAAM,UAAU,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAW,CAAC;AAQ9D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,uBAAuB,CAAC,EAAE;YAC7D,GAAG;YACH,GAAG,UAAU;SACd,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;YACpE,GAAG;YACH,GAAG,UAAU;SACd,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;QAC1C,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;gBACjE,GAAG;gBACH,GAAG,UAAU;aACd,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;YAC9D,GAAG;YACH,GAAG,UAAU;SACd,CAAC,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Tab } from "./types.js";
|
|
2
|
+
export interface HandoffSuccess {
|
|
3
|
+
ok: true;
|
|
4
|
+
/** Absolute path the handoff doc was written to. */
|
|
5
|
+
path: string;
|
|
6
|
+
/** The generated handoff markdown (already armed for injection). */
|
|
7
|
+
doc: string;
|
|
8
|
+
}
|
|
9
|
+
export interface HandoffSkipped {
|
|
10
|
+
ok: false;
|
|
11
|
+
/** `no-messages` = nothing on the tab to hand off. `empty-summary` =
|
|
12
|
+
* the cheap summarizer returned nothing usable. */
|
|
13
|
+
reason: "no-messages" | "empty-summary";
|
|
14
|
+
messagesCount: number;
|
|
15
|
+
}
|
|
16
|
+
export type HandoffResult = HandoffSuccess | HandoffSkipped;
|
|
17
|
+
/** Reset a tab's CONTEXT (not its UI/status — the caller owns that):
|
|
18
|
+
* drop the conversation, any armed injection, and the adapter session
|
|
19
|
+
* so the next turn starts genuinely fresh. */
|
|
20
|
+
export declare function clearTabContext(tab: Tab): void;
|
|
21
|
+
/** Summarize the live conversation into a handoff doc, persist it under
|
|
22
|
+
* `~/.omg/handoffs/`, then clear the tab and arm the doc as the next
|
|
23
|
+
* turn's injected context. `stamp` is a filesystem-safe timestamp the
|
|
24
|
+
* caller supplies; `home` overrides the state dir (tests). */
|
|
25
|
+
export declare function handoffTab(tab: Tab, baseOpts: Record<string, unknown>, opts: {
|
|
26
|
+
stamp: string;
|
|
27
|
+
onCancel?: (handle: {
|
|
28
|
+
cancel: () => void;
|
|
29
|
+
}) => void;
|
|
30
|
+
home?: string;
|
|
31
|
+
}): Promise<HandoffResult>;
|
|
32
|
+
/** Load an existing handoff doc by path, clear the tab, and arm the doc
|
|
33
|
+
* for the next turn. Throws if the path can't be read — the caller
|
|
34
|
+
* surfaces a friendly message. */
|
|
35
|
+
export declare function loadHandoffIntoTab(tab: Tab, path: string): string;
|
|
36
|
+
//# sourceMappingURL=handoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/cli/handoff.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,IAAI,CAAC;IACT,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,KAAK,CAAC;IACV;wDACoD;IACpD,MAAM,EAAE,aAAa,GAAG,eAAe,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC;AAE5D;;+CAE+C;AAC/C,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAM9C;AAED;;;+DAG+D;AAC/D,wBAAsB,UAAU,CAC9B,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,aAAa,CAAC,CA0BxB;AAED;;mCAEmC;AACnC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjE"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Phase 290: tab-level session handoff. Two entry points, both leaving
|
|
2
|
+
// the tab with a clean context window and the handoff armed as the next
|
|
3
|
+
// turn's injected context:
|
|
4
|
+
//
|
|
5
|
+
// handoffTab — summarize the live conversation into a handoff
|
|
6
|
+
// doc, persist it, then clear + re-seed the tab.
|
|
7
|
+
// loadHandoffIntoTab — read an existing handoff doc by path, then
|
|
8
|
+
// clear + re-seed the tab (no summarization).
|
|
9
|
+
//
|
|
10
|
+
// The shared `clearTabContext` mirrors /reset's context sweep: it wipes
|
|
11
|
+
// the conversation AND drops the adapter session id, because clearing
|
|
12
|
+
// messages alone leaves the CLI adapter resuming its old session — the
|
|
13
|
+
// context would silently survive.
|
|
14
|
+
import { summarizeMessages } from "../core/context/summarizer.js";
|
|
15
|
+
import { HANDOFF_PROMPT, readHandoff, wrapHandoffInjection, writeHandoff, } from "../core/state/handoff.js";
|
|
16
|
+
/** Reset a tab's CONTEXT (not its UI/status — the caller owns that):
|
|
17
|
+
* drop the conversation, any armed injection, and the adapter session
|
|
18
|
+
* so the next turn starts genuinely fresh. */
|
|
19
|
+
export function clearTabContext(tab) {
|
|
20
|
+
tab.messages.length = 0;
|
|
21
|
+
tab.queued = undefined;
|
|
22
|
+
tab.pendingContinuumInjection = undefined;
|
|
23
|
+
tab.adapter.resetSession?.();
|
|
24
|
+
tab.sessionId = undefined;
|
|
25
|
+
}
|
|
26
|
+
/** Summarize the live conversation into a handoff doc, persist it under
|
|
27
|
+
* `~/.omg/handoffs/`, then clear the tab and arm the doc as the next
|
|
28
|
+
* turn's injected context. `stamp` is a filesystem-safe timestamp the
|
|
29
|
+
* caller supplies; `home` overrides the state dir (tests). */
|
|
30
|
+
export async function handoffTab(tab, baseOpts, opts) {
|
|
31
|
+
const flat = tab.messages
|
|
32
|
+
.filter((m) => m.text.trim().length > 0)
|
|
33
|
+
.map((m) => ({ role: m.role, text: m.text }));
|
|
34
|
+
if (flat.length === 0) {
|
|
35
|
+
return { ok: false, reason: "no-messages", messagesCount: 0 };
|
|
36
|
+
}
|
|
37
|
+
const summary = await summarizeMessages(flat, tab.provider, tab.model, baseOpts, { onCancel: opts.onCancel, systemPrompt: HANDOFF_PROMPT });
|
|
38
|
+
if (!summary.trim()) {
|
|
39
|
+
return {
|
|
40
|
+
ok: false,
|
|
41
|
+
reason: "empty-summary",
|
|
42
|
+
messagesCount: tab.messages.length,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const id = tab.continuumId ?? "session";
|
|
46
|
+
const path = writeHandoff(id, opts.stamp, summary, opts.home);
|
|
47
|
+
clearTabContext(tab);
|
|
48
|
+
tab.pendingContinuumInjection = wrapHandoffInjection(summary);
|
|
49
|
+
return { ok: true, path, doc: summary };
|
|
50
|
+
}
|
|
51
|
+
/** Load an existing handoff doc by path, clear the tab, and arm the doc
|
|
52
|
+
* for the next turn. Throws if the path can't be read — the caller
|
|
53
|
+
* surfaces a friendly message. */
|
|
54
|
+
export function loadHandoffIntoTab(tab, path) {
|
|
55
|
+
const doc = readHandoff(path);
|
|
56
|
+
clearTabContext(tab);
|
|
57
|
+
tab.pendingContinuumInjection = wrapHandoffInjection(doc);
|
|
58
|
+
return doc;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=handoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/cli/handoff.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,wEAAwE;AACxE,2BAA2B;AAC3B,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,oEAAoE;AACpE,oEAAoE;AACpE,EAAE;AACF,wEAAwE;AACxE,sEAAsE;AACtE,uEAAuE;AACvE,kCAAkC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACL,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAqBlC;;+CAE+C;AAC/C,MAAM,UAAU,eAAe,CAAC,GAAQ;IACtC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACxB,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC;IACvB,GAAG,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAC1C,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;IAC7B,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;AAC5B,CAAC;AAED;;;+DAG+D;AAC/D,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAQ,EACR,QAAiC,EACjC,IAIC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ;SACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CACrC,IAAI,EACJ,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,KAAK,EACT,QAAQ,EACR,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,CAC1D,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACpB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,eAAe;YACvB,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM;SACnC,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,IAAI,SAAS,CAAC;IACxC,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,eAAe,CAAC,GAAG,CAAC,CAAC;IACrB,GAAG,CAAC,yBAAyB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED;;mCAEmC;AACnC,MAAM,UAAU,kBAAkB,CAAC,GAAQ,EAAE,IAAY;IACvD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,eAAe,CAAC,GAAG,CAAC,CAAC;IACrB,GAAG,CAAC,yBAAyB,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC1D,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { InkSession } from "../../ui/launcher.js";
|
|
2
|
+
import type { SlashState } from "../slash.js";
|
|
3
|
+
import type { Tab } from "../types.js";
|
|
4
|
+
export declare function makeBrokers(deps: {
|
|
5
|
+
ink: InkSession;
|
|
6
|
+
slashState: SlashState;
|
|
7
|
+
tabs: Map<string, Tab>;
|
|
8
|
+
currentTab: () => Tab;
|
|
9
|
+
pushStatus: (s: Record<string, unknown>, tab?: Tab) => void;
|
|
10
|
+
snapshotTabsState: () => Array<{
|
|
11
|
+
index: number;
|
|
12
|
+
name: string;
|
|
13
|
+
running: boolean;
|
|
14
|
+
ready: boolean;
|
|
15
|
+
asking: boolean;
|
|
16
|
+
runningSince?: number;
|
|
17
|
+
}>;
|
|
18
|
+
}): Promise<{
|
|
19
|
+
permBroker: import("../../core/brokers/permissionBroker.js").PermissionBrokerHandle;
|
|
20
|
+
askBroker: import("../../core/brokers/askBroker.js").AskBrokerHandle;
|
|
21
|
+
hookedToolBroker: import("../../core/tools/hookedToolBroker.js").HookedToolBrokerHandle;
|
|
22
|
+
resolvePendingReply: (m: {
|
|
23
|
+
id?: unknown;
|
|
24
|
+
method?: unknown;
|
|
25
|
+
result?: unknown;
|
|
26
|
+
}) => boolean;
|
|
27
|
+
cleanupPendingForTab: (tab: Tab) => {
|
|
28
|
+
dropped: number;
|
|
29
|
+
};
|
|
30
|
+
}>;
|
|
31
|
+
//# sourceMappingURL=brokers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brokers.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/brokers.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGvC,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,GAAG,EAAE,UAAU,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,CAAC;IACtB,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;CACJ;;;;6BA4LiC;QAC9B,EAAE,CAAC,EAAE,OAAO,CAAC;QACb,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,KAAG,OAAO;gCA+CwB,GAAG,KAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;GAyB7D"}
|