@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 @@
|
|
|
1
|
+
{"version":3,"file":"bgTasks.d.ts","sourceRoot":"","sources":["../../src/cli/bgTasks.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,UAAU;IACzB;4BACwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB;uEACmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB;gCAC4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,CAC3B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,KACX,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAuB1B;;6CAE6C;AAC7C,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAA0B,GACnC,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,qBAAa,aAAa;IAIZ,OAAO,CAAC,QAAQ,CAAC,UAAU;IAHvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,KAAK,CAA+C;gBAE/B,UAAU,EAAE,cAAc;IAEvD;;wCAEoC;IACpC,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAS7B;6CACyC;IACzC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ7B,iEAAiE;IACjE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAUjC,KAAK,IAAI,IAAI;YAQC,IAAI;CA6DnB;AAED;;;;;;;;;;aAUa;AACb,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,OAAO,GACd;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAY/C"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
// Phase 257: claude-cli `run_in_background` continuation.
|
|
2
|
+
//
|
|
3
|
+
// claude-cli's Bash tool can run a command in the background and
|
|
4
|
+
// promises "you will be notified when it completes." That promise
|
|
5
|
+
// assumes an interactive Claude Code session that polls the task
|
|
6
|
+
// output file. omg runs claude-cli in print mode (`claude -p ...`)
|
|
7
|
+
// per turn — the process exits after the turn ends, so the
|
|
8
|
+
// notification mechanism has nowhere to surface.
|
|
9
|
+
//
|
|
10
|
+
// User-visible symptom: claude says "I'll wait for the build" but
|
|
11
|
+
// never auto-continues. User has to type "is it done?" to trigger a
|
|
12
|
+
// new turn, at which point claude reads the marker and replies.
|
|
13
|
+
//
|
|
14
|
+
// This module watches the background task's output file. When the
|
|
15
|
+
// file's size has been stable for `STABLE_MS` (and the task has
|
|
16
|
+
// been running for at least `MIN_AGE_MS`), the watcher fires its
|
|
17
|
+
// callback with the captured output. The CLI uses that callback to
|
|
18
|
+
// auto-inject a continuation into the owning tab — same path as a
|
|
19
|
+
// user typing the next message, so claude resumes naturally.
|
|
20
|
+
import { promises as fs } from "node:fs";
|
|
21
|
+
import { outputSignalsCompletion } from "../core/util/bgProtocol.js";
|
|
22
|
+
/** Poll interval. Fast enough that long-running tasks resume soon
|
|
23
|
+
* after completion, slow enough to ignore minor writes during
|
|
24
|
+
* output bursts. */
|
|
25
|
+
const POLL_MS = 3_000;
|
|
26
|
+
/** A task must show no file growth for this long before we consider
|
|
27
|
+
* it done. Tasks like docker builds have quiet phases — too short a
|
|
28
|
+
* window causes false positives mid-build. */
|
|
29
|
+
const STABLE_MS = 15_000;
|
|
30
|
+
/** Don't fire the completion callback inside the first MIN_AGE_MS —
|
|
31
|
+
* a fast command (≤ poll cycle) can race the first poll, look
|
|
32
|
+
* "stable" immediately, and trigger before its output even exists.
|
|
33
|
+
* 20s is well below typical docker/test workloads. */
|
|
34
|
+
const MIN_AGE_MS = 20_000;
|
|
35
|
+
/** Phase 315: how many trailing bytes of the output file to scan for the
|
|
36
|
+
* completion marker. The marker is the command's last echo, so it lives
|
|
37
|
+
* at the very end — no need to read megabytes of build log each poll. */
|
|
38
|
+
const MARKER_SCAN_BYTES = 8_192;
|
|
39
|
+
/** Read the last `maxBytes` of a file as UTF-8 (the whole file when it's
|
|
40
|
+
* smaller). Used to cheaply scan a growing output tail for the
|
|
41
|
+
* completion marker. Exported for tests. */
|
|
42
|
+
export async function readTail(path, maxBytes = MARKER_SCAN_BYTES) {
|
|
43
|
+
const { size } = await fs.stat(path);
|
|
44
|
+
if (size <= maxBytes)
|
|
45
|
+
return fs.readFile(path, "utf8");
|
|
46
|
+
const fh = await fs.open(path, "r");
|
|
47
|
+
try {
|
|
48
|
+
const buf = Buffer.alloc(maxBytes);
|
|
49
|
+
await fh.read(buf, 0, maxBytes, size - maxBytes);
|
|
50
|
+
return buf.toString("utf8");
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
await fh.close();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export class BgTaskWatcher {
|
|
57
|
+
onComplete;
|
|
58
|
+
tasks = new Map();
|
|
59
|
+
timer = null;
|
|
60
|
+
constructor(onComplete) {
|
|
61
|
+
this.onComplete = onComplete;
|
|
62
|
+
}
|
|
63
|
+
/** Register a task. The watcher polls until the task's output
|
|
64
|
+
* file size has been stable for STABLE_MS, then fires the
|
|
65
|
+
* callback once and forgets it. */
|
|
66
|
+
track(task) {
|
|
67
|
+
if (this.tasks.has(task.toolId))
|
|
68
|
+
return;
|
|
69
|
+
this.tasks.set(task.toolId, task);
|
|
70
|
+
if (this.timer === null) {
|
|
71
|
+
this.timer = setInterval(() => void this.poll(), POLL_MS);
|
|
72
|
+
this.timer.unref?.();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/** Drop a tracked task without firing — used when the owning tab
|
|
76
|
+
* is closed before the task settles. */
|
|
77
|
+
untrack(toolId) {
|
|
78
|
+
this.tasks.delete(toolId);
|
|
79
|
+
if (this.tasks.size === 0 && this.timer !== null) {
|
|
80
|
+
clearInterval(this.timer);
|
|
81
|
+
this.timer = null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/** Drop every tracked task for a given tab. Called on /close. */
|
|
85
|
+
untrackTab(tabName) {
|
|
86
|
+
for (const [id, t] of this.tasks) {
|
|
87
|
+
if (t.tabName === tabName)
|
|
88
|
+
this.tasks.delete(id);
|
|
89
|
+
}
|
|
90
|
+
if (this.tasks.size === 0 && this.timer !== null) {
|
|
91
|
+
clearInterval(this.timer);
|
|
92
|
+
this.timer = null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
close() {
|
|
96
|
+
if (this.timer !== null) {
|
|
97
|
+
clearInterval(this.timer);
|
|
98
|
+
this.timer = null;
|
|
99
|
+
}
|
|
100
|
+
this.tasks.clear();
|
|
101
|
+
}
|
|
102
|
+
async poll() {
|
|
103
|
+
const now = Date.now();
|
|
104
|
+
for (const [toolId, task] of [...this.tasks]) {
|
|
105
|
+
let size;
|
|
106
|
+
try {
|
|
107
|
+
size = (await fs.stat(task.outputPath)).size;
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// ENOENT — file hasn't appeared yet or was deleted. Reset
|
|
111
|
+
// the stable-since clock; we'll keep waiting until the file
|
|
112
|
+
// shows up or the task is untracked.
|
|
113
|
+
task.stableSince = now;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
// Phase 315: an explicit completion marker is definitive — fire
|
|
117
|
+
// immediately, bypassing both MIN_AGE_MS and the STABLE_MS quiet
|
|
118
|
+
// window (which a deploy's silent phases can otherwise mis-trigger
|
|
119
|
+
// or stall on). The marker is the command's last echo, so scanning
|
|
120
|
+
// the tail is enough.
|
|
121
|
+
try {
|
|
122
|
+
if (outputSignalsCompletion(await readTail(task.outputPath))) {
|
|
123
|
+
this.tasks.delete(toolId);
|
|
124
|
+
const output = await fs
|
|
125
|
+
.readFile(task.outputPath, "utf8")
|
|
126
|
+
.catch(() => "");
|
|
127
|
+
void Promise.resolve(this.onComplete(task, output)).catch(() => {
|
|
128
|
+
/* the callback's own error reporting handles failures */
|
|
129
|
+
});
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
/* tail read raced a delete — fall through to stabilization */
|
|
135
|
+
}
|
|
136
|
+
// No marker: fall back to the output-quiet heuristic, but never
|
|
137
|
+
// before MIN_AGE_MS (a fast command can look "stable" on the first
|
|
138
|
+
// poll before its output even exists).
|
|
139
|
+
if (now - task.startedAt < MIN_AGE_MS)
|
|
140
|
+
continue;
|
|
141
|
+
if (size === task.lastSize) {
|
|
142
|
+
if (now - task.stableSince >= STABLE_MS) {
|
|
143
|
+
// Settled. Read final content and fire.
|
|
144
|
+
let output = "";
|
|
145
|
+
try {
|
|
146
|
+
output = await fs.readFile(task.outputPath, "utf8");
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
/* file vanished between stat and read — proceed empty */
|
|
150
|
+
}
|
|
151
|
+
this.tasks.delete(toolId);
|
|
152
|
+
void Promise.resolve(this.onComplete(task, output)).catch(() => {
|
|
153
|
+
/* the callback's own error reporting handles failures */
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
// File grew (or shrunk) since last poll. Reset stabilization.
|
|
159
|
+
task.lastSize = size;
|
|
160
|
+
task.stableSince = now;
|
|
161
|
+
}
|
|
162
|
+
if (this.tasks.size === 0 && this.timer !== null) {
|
|
163
|
+
clearInterval(this.timer);
|
|
164
|
+
this.timer = null;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/** Pull the task id + output path out of a Bash tool_use_end result.
|
|
169
|
+
*
|
|
170
|
+
* claude-cli's hint reads roughly:
|
|
171
|
+
* Command running in background with ID: <id>. Output is being
|
|
172
|
+
* written to: <path>. You will be notified when it completes.
|
|
173
|
+
*
|
|
174
|
+
* Both the leading text and the trailing punctuation are stable;
|
|
175
|
+
* the regex tolerates the trailing period plus optional whitespace.
|
|
176
|
+
* Returns null when the result doesn't match (a regular Bash result
|
|
177
|
+
* with command output) — caller treats null as "not a background
|
|
178
|
+
* task." */
|
|
179
|
+
export function parseBgTaskResult(result) {
|
|
180
|
+
const text = typeof result === "string"
|
|
181
|
+
? result
|
|
182
|
+
: typeof result?.stdout === "string"
|
|
183
|
+
? result.stdout
|
|
184
|
+
: "";
|
|
185
|
+
if (!text)
|
|
186
|
+
return null;
|
|
187
|
+
const idMatch = /background with ID:\s*(\S+?)[.\s]/i.exec(text);
|
|
188
|
+
const pathMatch = /written to:\s*(\S+?)\.\s/i.exec(text);
|
|
189
|
+
if (!idMatch || !pathMatch)
|
|
190
|
+
return null;
|
|
191
|
+
return { taskId: idMatch[1], outputPath: pathMatch[1] };
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=bgTasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bgTasks.js","sourceRoot":"","sources":["../../src/cli/bgTasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { DEFAULT_COMPACT_THRESHOLD, shouldAutoCompact } from "../core/context/summarizer.js";
|
|
2
|
+
import type { Tab } from "./types.js";
|
|
3
|
+
export interface CompactSuccess {
|
|
4
|
+
ok: true;
|
|
5
|
+
/** How many messages got folded into the summary. */
|
|
6
|
+
compactedCount: number;
|
|
7
|
+
/** The generated summary text (already inserted into tab.messages). */
|
|
8
|
+
summary: string;
|
|
9
|
+
}
|
|
10
|
+
export interface CompactSkipped {
|
|
11
|
+
ok: false;
|
|
12
|
+
/** Why nothing happened. `too-short` = tab.messages has fewer than
|
|
13
|
+
* keepLast entries; nothing earlier to compact. `empty-summary` =
|
|
14
|
+
* the cheap summarizer model returned nothing usable. */
|
|
15
|
+
reason: "too-short" | "empty-summary";
|
|
16
|
+
/** Total messages on the tab at compact time. Surfaced in
|
|
17
|
+
* diagnostic UI so the user understands "compact ran but couldn't
|
|
18
|
+
* help — your tab only has N messages". */
|
|
19
|
+
messagesCount: number;
|
|
20
|
+
/** keepLast value used. */
|
|
21
|
+
keepLast: number;
|
|
22
|
+
}
|
|
23
|
+
export type CompactResult = CompactSuccess | CompactSkipped;
|
|
24
|
+
/** Compact `tab.messages` in place. Returns a discriminated union so
|
|
25
|
+
* callers can surface a precise diagnostic when nothing happens.
|
|
26
|
+
* Phase 258: was returning bare null on no-op; users saw the
|
|
27
|
+
* "compacting…" spinner with no visible follow-up and assumed the
|
|
28
|
+
* feature was broken.
|
|
29
|
+
* Phase 259: caller may pass an `onCancel` callback to receive a
|
|
30
|
+
* cancel handle the compact's owner can park on `tab.cancel`. Esc
|
|
31
|
+
* → cancel SIGTERMs the summarizer child; otherwise compact is
|
|
32
|
+
* opaque from the user's side ("compacting… 4m" with no way out).
|
|
33
|
+
*/
|
|
34
|
+
export declare function compactTab(tab: Tab, baseOpts: Record<string, unknown>, opts?: {
|
|
35
|
+
keepLast?: number;
|
|
36
|
+
onCancel?: (handle: {
|
|
37
|
+
cancel: () => void;
|
|
38
|
+
}) => void;
|
|
39
|
+
onProgress?: (chars: number) => void;
|
|
40
|
+
focus?: string;
|
|
41
|
+
}): Promise<CompactResult>;
|
|
42
|
+
export { shouldAutoCompact, DEFAULT_COMPACT_THRESHOLD };
|
|
43
|
+
/** Phase 322 (T2): user-facing success line for a completed compaction —
|
|
44
|
+
* how many messages folded, the summary's rough token size, and a
|
|
45
|
+
* one-line preview so the user can verify continuity. Shared by the auto
|
|
46
|
+
* (turn.ts) and manual (/compact) paths. */
|
|
47
|
+
export declare function formatCompactSuccess(r: CompactSuccess): string;
|
|
48
|
+
//# sourceMappingURL=compactor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compactor.d.ts","sourceRoot":"","sources":["../../src/cli/compactor.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EAElB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAMtC,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,IAAI,CAAC;IACT,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,KAAK,CAAC;IACV;;8DAE0D;IAC1D,MAAM,EAAE,WAAW,GAAG,eAAe,CAAC;IACtC;;gDAE4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC;AAE5D;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,IAAI,GAAE;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAGpD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC,KAAK,CAAC,EAAE,MAAM,CAAC;CACX,GACL,OAAO,CAAC,aAAa,CAAC,CA6CxB;AAED,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,CAAC;AAExD;;;6CAG6C;AAC7C,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,CAS9D"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Phase 182: tab-level auto-compact. Replaces the earliest messages of
|
|
2
|
+
// a tab's history with one summary message and resets the adapter's
|
|
3
|
+
// captured session so the next turn re-sends the (now-compacted)
|
|
4
|
+
// history from scratch.
|
|
5
|
+
import { DEFAULT_COMPACT_THRESHOLD, shouldAutoCompact, summarizeMessages, } from "../core/context/summarizer.js";
|
|
6
|
+
/** How many most-recent messages stay verbatim. ~2 turns of context
|
|
7
|
+
* the model can lean on while the summary covers everything earlier. */
|
|
8
|
+
const KEEP_LAST_MESSAGES = 4;
|
|
9
|
+
/** Compact `tab.messages` in place. Returns a discriminated union so
|
|
10
|
+
* callers can surface a precise diagnostic when nothing happens.
|
|
11
|
+
* Phase 258: was returning bare null on no-op; users saw the
|
|
12
|
+
* "compacting…" spinner with no visible follow-up and assumed the
|
|
13
|
+
* feature was broken.
|
|
14
|
+
* Phase 259: caller may pass an `onCancel` callback to receive a
|
|
15
|
+
* cancel handle the compact's owner can park on `tab.cancel`. Esc
|
|
16
|
+
* → cancel SIGTERMs the summarizer child; otherwise compact is
|
|
17
|
+
* opaque from the user's side ("compacting… 4m" with no way out).
|
|
18
|
+
*/
|
|
19
|
+
export async function compactTab(tab, baseOpts, opts = {}) {
|
|
20
|
+
const keep = opts.keepLast ?? KEEP_LAST_MESSAGES;
|
|
21
|
+
if (tab.messages.length <= keep) {
|
|
22
|
+
return {
|
|
23
|
+
ok: false,
|
|
24
|
+
reason: "too-short",
|
|
25
|
+
messagesCount: tab.messages.length,
|
|
26
|
+
keepLast: keep,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const toCompact = tab.messages.slice(0, -keep);
|
|
30
|
+
const keepMessages = tab.messages.slice(-keep);
|
|
31
|
+
const flat = toCompact.map((m) => ({ role: m.role, text: m.text }));
|
|
32
|
+
const summary = await summarizeMessages(flat, tab.provider, tab.model, baseOpts, {
|
|
33
|
+
onCancel: opts.onCancel,
|
|
34
|
+
onProgress: opts.onProgress,
|
|
35
|
+
focus: opts.focus,
|
|
36
|
+
});
|
|
37
|
+
if (!summary) {
|
|
38
|
+
return {
|
|
39
|
+
ok: false,
|
|
40
|
+
reason: "empty-summary",
|
|
41
|
+
messagesCount: tab.messages.length,
|
|
42
|
+
keepLast: keep,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// Replace contents in place so the turn loop (which already holds a
|
|
46
|
+
// reference to tab.messages) sees the new history.
|
|
47
|
+
tab.messages.length = 0;
|
|
48
|
+
tab.messages.push({
|
|
49
|
+
role: "user",
|
|
50
|
+
text: `[Earlier conversation summary]\n${summary}`,
|
|
51
|
+
});
|
|
52
|
+
for (const m of keepMessages)
|
|
53
|
+
tab.messages.push(m);
|
|
54
|
+
// The captured CLI session still carries the uncompacted history;
|
|
55
|
+
// drop it so the next stream() starts a fresh session that only
|
|
56
|
+
// sees the compacted messages above.
|
|
57
|
+
tab.adapter.resetSession?.();
|
|
58
|
+
return { ok: true, compactedCount: toCompact.length, summary };
|
|
59
|
+
}
|
|
60
|
+
export { shouldAutoCompact, DEFAULT_COMPACT_THRESHOLD };
|
|
61
|
+
/** Phase 322 (T2): user-facing success line for a completed compaction —
|
|
62
|
+
* how many messages folded, the summary's rough token size, and a
|
|
63
|
+
* one-line preview so the user can verify continuity. Shared by the auto
|
|
64
|
+
* (turn.ts) and manual (/compact) paths. */
|
|
65
|
+
export function formatCompactSuccess(r) {
|
|
66
|
+
const tok = Math.round(r.summary.length / 4);
|
|
67
|
+
const size = tok >= 1000 ? `${Math.round(tok / 1000)}K` : String(tok);
|
|
68
|
+
const firstLine = r.summary.split("\n").find((l) => l.trim().length > 0)?.trim() ?? "";
|
|
69
|
+
const preview = firstLine.length > 80 ? `${firstLine.slice(0, 79)}…` : firstLine;
|
|
70
|
+
const head = `[compact] folded ${r.compactedCount} earlier messages → summary ~${size} tokens (context re-measured next turn).`;
|
|
71
|
+
return preview ? `${head}\n kept: ${preview}\n` : `${head}\n`;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=compactor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compactor.js","sourceRoot":"","sources":["../../src/cli/compactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { type LoginProvider } from "./login.js";
|
|
2
|
+
export type BaseProvider = LoginProvider;
|
|
3
|
+
export declare const BASE_PROVIDERS: readonly BaseProvider[];
|
|
4
|
+
/** Which paths a base provider is needed on, derived from the active
|
|
5
|
+
* team policy. `cli` = a role uses `<p>-cli`; `sdk` = a role uses the
|
|
6
|
+
* bare SDK provider id. */
|
|
7
|
+
export interface ProviderNeed {
|
|
8
|
+
cli: boolean;
|
|
9
|
+
sdk: boolean;
|
|
10
|
+
}
|
|
11
|
+
export type RequiredSet = Record<BaseProvider, ProviderNeed>;
|
|
12
|
+
export declare function emptyRequired(): RequiredSet;
|
|
13
|
+
/** Map a team.yaml provider string onto a base provider + path. Returns
|
|
14
|
+
* null for non-provider ids ("stub", "policy") and unknown strings. */
|
|
15
|
+
export declare function classifyProvider(raw: string): {
|
|
16
|
+
base: BaseProvider;
|
|
17
|
+
path: "cli" | "sdk";
|
|
18
|
+
} | null;
|
|
19
|
+
/** Build the required set from a list of team.yaml provider strings. */
|
|
20
|
+
export declare function requiredFromProviders(providers: Iterable<string>): RequiredSet;
|
|
21
|
+
/** Injected probe — the only seam touching the real machine. Tests pass a
|
|
22
|
+
* fake; `nodeDoctorEnv()` is the production impl. */
|
|
23
|
+
export interface DoctorEnv {
|
|
24
|
+
onPath(bin: string): boolean;
|
|
25
|
+
fileExists(path: string): boolean;
|
|
26
|
+
readFile(path: string): string | null;
|
|
27
|
+
envVar(name: string): string | undefined;
|
|
28
|
+
canImport(moduleName: string): Promise<boolean>;
|
|
29
|
+
home(): string;
|
|
30
|
+
}
|
|
31
|
+
export interface ProviderDiagnosis {
|
|
32
|
+
provider: BaseProvider;
|
|
33
|
+
required: ProviderNeed;
|
|
34
|
+
cliOnPath: boolean;
|
|
35
|
+
authFilePresent: boolean;
|
|
36
|
+
/** null = the SDK import was not probed (only probed when needed). */
|
|
37
|
+
sdkImportable: boolean | null;
|
|
38
|
+
keyEnvSet: boolean;
|
|
39
|
+
/** gemini only; undefined for others. */
|
|
40
|
+
geminiMcpRegistered?: boolean;
|
|
41
|
+
/** Satisfies every required path for this provider. */
|
|
42
|
+
usable: boolean;
|
|
43
|
+
/** Actionable lines, emitted only for gaps on a REQUIRED path. */
|
|
44
|
+
fixes: string[];
|
|
45
|
+
}
|
|
46
|
+
/** Phase 348: a configured external MCP server, as doctor sees it. */
|
|
47
|
+
export interface McpServerStatus {
|
|
48
|
+
name: string;
|
|
49
|
+
enabled: boolean;
|
|
50
|
+
providers?: string[];
|
|
51
|
+
}
|
|
52
|
+
export interface DoctorReport {
|
|
53
|
+
providers: ProviderDiagnosis[];
|
|
54
|
+
/** True iff every required path across all providers is usable. */
|
|
55
|
+
pass: boolean;
|
|
56
|
+
/** Phase 348: external MCP servers from user + project mcp.json (optional;
|
|
57
|
+
* populated by the CLI shell, not by diagnose()). */
|
|
58
|
+
mcp?: McpServerStatus[];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Diagnose every base provider against the injected environment.
|
|
62
|
+
*
|
|
63
|
+
* `probeSdks` controls when the (heavier) dynamic-import probe runs:
|
|
64
|
+
* - "required" (default): only for providers whose SDK path is required.
|
|
65
|
+
* Cheap enough for the startup preflight nudge.
|
|
66
|
+
* - "all": every provider, for a full `omg doctor` picture.
|
|
67
|
+
*/
|
|
68
|
+
export declare function diagnose(env: DoctorEnv, required: RequiredSet, opts?: {
|
|
69
|
+
probeSdks?: "required" | "all";
|
|
70
|
+
}): Promise<DoctorReport>;
|
|
71
|
+
/** Production probe. */
|
|
72
|
+
export declare function nodeDoctorEnv(): DoctorEnv;
|
|
73
|
+
/** Human-readable report. Required providers first; fix lines only for
|
|
74
|
+
* gaps (UI restraint — nothing rendered when a provider is fine). */
|
|
75
|
+
export declare function renderReport(report: DoctorReport): string;
|
|
76
|
+
export declare function renderJson(report: DoctorReport): string;
|
|
77
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAIvE,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC;AAEzC,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAIjD,CAAC;AAyBF;;4BAE4B;AAC5B,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAE7D,wBAAgB,aAAa,IAAI,WAAW,CAM3C;AAED;wEACwE;AACxE,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,GACV;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,KAAK,GAAG,KAAK,CAAA;CAAE,GAAG,IAAI,CAOpD;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,WAAW,CAQ9E;AAED;sDACsD;AACtD,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACtC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,IAAI,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,sEAAsE;IACtE,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,yCAAyC;IACzC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uDAAuD;IACvD,MAAM,EAAE,OAAO,CAAC;IAChB,kEAAkE;IAClE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,mEAAmE;IACnE,IAAI,EAAE,OAAO,CAAC;IACd;0DACsD;IACtD,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC;CACzB;AAuBD;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,WAAW,EACrB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,UAAU,GAAG,KAAK,CAAA;CAAO,GAC5C,OAAO,CAAC,YAAY,CAAC,CAuEvB;AAED,wBAAwB;AACxB,wBAAgB,aAAa,IAAI,SAAS,CA+CzC;AAiBD;sEACsE;AACtE,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAqCzD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEvD"}
|