@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,449 @@
|
|
|
1
|
+
// Phase 22 → 62: streaming-friendly markdown parser.
|
|
2
|
+
//
|
|
3
|
+
// Block detection (in priority order, on a non-fence line):
|
|
4
|
+
// 1. Fenced code block: ```lang? ... ``` (multiline)
|
|
5
|
+
// 2. Heading: #|##|### text (single line)
|
|
6
|
+
// 3. Horizontal rule: --- or *** alone on a line
|
|
7
|
+
// 4. List item: - foo / * foo / 1. foo
|
|
8
|
+
// 5. Blockquote: > foo (consecutive lines join)
|
|
9
|
+
// 6. Paragraph: everything else (blank line ends para)
|
|
10
|
+
//
|
|
11
|
+
// Inline (within paragraph / heading / list-item / quote-line):
|
|
12
|
+
// - Inline code: `code`
|
|
13
|
+
// - Bold: **text** or __text__
|
|
14
|
+
// - Italic: *text* or _text_
|
|
15
|
+
// - Link: [text](url)
|
|
16
|
+
//
|
|
17
|
+
// All multi-line block groupings (list, quote, para) coalesce
|
|
18
|
+
// consecutive matching lines; a blank line or a different block
|
|
19
|
+
// kind ends the run.
|
|
20
|
+
//
|
|
21
|
+
// Streaming-friendly: an unclosed fence at the tail renders as
|
|
22
|
+
// an in-progress fence; an in-progress list/quote/para keeps its
|
|
23
|
+
// kind even if the next line hasn't arrived yet.
|
|
24
|
+
import { shortcodeToEmoji } from "./emoji.js";
|
|
25
|
+
const FENCE_RE = /```([^\n`]*)\n([\s\S]*?)\n?```/g;
|
|
26
|
+
/** Top-level parse: split on fenced blocks first; everything in
|
|
27
|
+
* between is treated as line-based blocks (headings / lists /
|
|
28
|
+
* quotes / rules / paragraphs). */
|
|
29
|
+
export function parseBlocks(input) {
|
|
30
|
+
const blocks = [];
|
|
31
|
+
let cursor = 0;
|
|
32
|
+
for (const m of input.matchAll(FENCE_RE)) {
|
|
33
|
+
const start = m.index ?? 0;
|
|
34
|
+
if (start > cursor) {
|
|
35
|
+
pushLineBlocks(blocks, input.slice(cursor, start));
|
|
36
|
+
}
|
|
37
|
+
blocks.push({ kind: "fence", lang: m[1].trim(), body: m[2] });
|
|
38
|
+
cursor = start + m[0].length;
|
|
39
|
+
}
|
|
40
|
+
if (cursor < input.length) {
|
|
41
|
+
const rest = input.slice(cursor);
|
|
42
|
+
const openerIdx = rest.indexOf("```");
|
|
43
|
+
if (openerIdx >= 0) {
|
|
44
|
+
if (openerIdx > 0)
|
|
45
|
+
pushLineBlocks(blocks, rest.slice(0, openerIdx));
|
|
46
|
+
const afterOpen = rest.slice(openerIdx + 3);
|
|
47
|
+
const nlIdx = afterOpen.indexOf("\n");
|
|
48
|
+
if (nlIdx >= 0) {
|
|
49
|
+
const lang = afterOpen.slice(0, nlIdx).trim();
|
|
50
|
+
const body = afterOpen.slice(nlIdx + 1).replace(/\n+$/, "");
|
|
51
|
+
blocks.push({ kind: "fence", lang, body });
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
pushLineBlocks(blocks, rest.slice(openerIdx));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
pushLineBlocks(blocks, rest);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (blocks.length === 0) {
|
|
62
|
+
pushLineBlocks(blocks, input);
|
|
63
|
+
}
|
|
64
|
+
return blocks;
|
|
65
|
+
}
|
|
66
|
+
export const EMPTY_INCREMENTAL_STATE = {
|
|
67
|
+
fullText: "",
|
|
68
|
+
blocks: [],
|
|
69
|
+
settledIdx: 0,
|
|
70
|
+
settledBlocks: 0,
|
|
71
|
+
};
|
|
72
|
+
/** Walk `text` line-by-line; return the largest index where
|
|
73
|
+
* text[0..idx] ends in a paragraph break (`\n\n`) AND fence depth is
|
|
74
|
+
* even (no open fence at that point). Returns 0 when no such
|
|
75
|
+
* boundary exists. */
|
|
76
|
+
export function findSettledBoundary(text) {
|
|
77
|
+
let inFence = false;
|
|
78
|
+
let best = 0;
|
|
79
|
+
let lineStart = 0;
|
|
80
|
+
for (let i = 0; i < text.length; i++) {
|
|
81
|
+
if (text[i] !== "\n")
|
|
82
|
+
continue;
|
|
83
|
+
const line = text.slice(lineStart, i);
|
|
84
|
+
if (line.trimStart().startsWith("```")) {
|
|
85
|
+
inFence = !inFence;
|
|
86
|
+
}
|
|
87
|
+
if (!inFence && i + 1 < text.length && text[i + 1] === "\n") {
|
|
88
|
+
// We're at "\n\n" outside a fence. text[0..i+2] is settled.
|
|
89
|
+
best = i + 2;
|
|
90
|
+
}
|
|
91
|
+
lineStart = i + 1;
|
|
92
|
+
}
|
|
93
|
+
return best;
|
|
94
|
+
}
|
|
95
|
+
/** Incrementally parse `text` given a previous state. When `text`
|
|
96
|
+
* monotonically extends `prev.fullText`, reuses settled blocks and
|
|
97
|
+
* only re-parses the unsettled tail. Otherwise falls back to a full
|
|
98
|
+
* parse. The returned state's `.blocks` is always identical to
|
|
99
|
+
* `parseBlocks(text)` — only the per-call cost differs. */
|
|
100
|
+
export function parseBlocksIncremental(prev, text) {
|
|
101
|
+
// Fast path: monotonic growth.
|
|
102
|
+
if (text.length >= prev.fullText.length && text.startsWith(prev.fullText)) {
|
|
103
|
+
const newBoundary = findSettledBoundary(text);
|
|
104
|
+
if (newBoundary <= prev.settledIdx) {
|
|
105
|
+
// Boundary didn't move. Reuse settled blocks; only re-parse tail.
|
|
106
|
+
const tailBlocks = parseBlocks(text.slice(prev.settledIdx));
|
|
107
|
+
return {
|
|
108
|
+
fullText: text,
|
|
109
|
+
blocks: [...prev.blocks.slice(0, prev.settledBlocks), ...tailBlocks],
|
|
110
|
+
settledIdx: prev.settledIdx,
|
|
111
|
+
settledBlocks: prev.settledBlocks,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// Boundary advanced. Re-parse the new settled prefix once, then tail.
|
|
115
|
+
const settled = parseBlocks(text.slice(0, newBoundary));
|
|
116
|
+
const tail = parseBlocks(text.slice(newBoundary));
|
|
117
|
+
return {
|
|
118
|
+
fullText: text,
|
|
119
|
+
blocks: [...settled, ...tail],
|
|
120
|
+
settledIdx: newBoundary,
|
|
121
|
+
settledBlocks: settled.length,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
// Cold path: text differs from prev (rewind / replace / first call).
|
|
125
|
+
const newBoundary = findSettledBoundary(text);
|
|
126
|
+
const settled = newBoundary > 0 ? parseBlocks(text.slice(0, newBoundary)) : [];
|
|
127
|
+
const tail = parseBlocks(text.slice(newBoundary));
|
|
128
|
+
return {
|
|
129
|
+
fullText: text,
|
|
130
|
+
blocks: [...settled, ...tail],
|
|
131
|
+
settledIdx: newBoundary,
|
|
132
|
+
settledBlocks: settled.length,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/** Phase 172: the body of the last fenced code block in some markdown,
|
|
136
|
+
* or undefined when there are no code fences. Used by `/copy` to grab
|
|
137
|
+
* the most recent code block from an assistant turn. */
|
|
138
|
+
export function lastFenceBody(markdown) {
|
|
139
|
+
const blocks = parseBlocks(markdown);
|
|
140
|
+
for (let i = blocks.length - 1; i >= 0; i--) {
|
|
141
|
+
const b = blocks[i];
|
|
142
|
+
if (b.kind === "fence")
|
|
143
|
+
return b.body;
|
|
144
|
+
}
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
/** Heading: `#` to `###` followed by a space. */
|
|
148
|
+
const HEADING_RE = /^(#{1,3})\s+(.*)$/;
|
|
149
|
+
/** Horizontal rule: exactly --- or *** on a line. */
|
|
150
|
+
const RULE_RE = /^(-{3,}|\*{3,})\s*$/;
|
|
151
|
+
/** Unordered list marker, allowing leading indent (groups: indent, body). */
|
|
152
|
+
const ULIST_RE = /^(\s*)[-*]\s+(.*)$/;
|
|
153
|
+
/** Ordered list marker, allowing leading indent (groups: indent, num, body). */
|
|
154
|
+
const OLIST_RE = /^(\s*)(\d+)\.\s+(.*)$/;
|
|
155
|
+
/** Blockquote. */
|
|
156
|
+
const QUOTE_RE = /^>\s?(.*)$/;
|
|
157
|
+
/** GitHub alert marker on a blockquote's first line: `[!NOTE]` etc. */
|
|
158
|
+
const ALERT_RE = /^\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\s*$/i;
|
|
159
|
+
/** Task-list checkbox prefix inside a list item: `[ ]` or `[x]`. */
|
|
160
|
+
const TASK_RE = /^\[([ xX])\]\s+(.*)$/;
|
|
161
|
+
/** A GFM table separator cell: optional colons around dashes. */
|
|
162
|
+
const TABLE_SEP_CELL = /^:?-{1,}:?$/;
|
|
163
|
+
/** Split a table row into trimmed cells, dropping the optional
|
|
164
|
+
* leading / trailing pipe. */
|
|
165
|
+
function splitTableRow(line) {
|
|
166
|
+
let s = line.trim();
|
|
167
|
+
if (s.startsWith("|"))
|
|
168
|
+
s = s.slice(1);
|
|
169
|
+
if (s.endsWith("|"))
|
|
170
|
+
s = s.slice(0, -1);
|
|
171
|
+
return s.split("|").map((c) => c.trim());
|
|
172
|
+
}
|
|
173
|
+
function cellAlign(cell) {
|
|
174
|
+
const left = cell.startsWith(":");
|
|
175
|
+
const right = cell.endsWith(":");
|
|
176
|
+
if (left && right)
|
|
177
|
+
return "center";
|
|
178
|
+
if (right)
|
|
179
|
+
return "right";
|
|
180
|
+
return "left";
|
|
181
|
+
}
|
|
182
|
+
/** Walk a chunk of plain (non-fence) text line by line, group
|
|
183
|
+
* consecutive list / quote / paragraph lines, and emit blocks
|
|
184
|
+
* to `out`. */
|
|
185
|
+
function pushLineBlocks(out, text) {
|
|
186
|
+
if (text.length === 0)
|
|
187
|
+
return;
|
|
188
|
+
const lines = text.split("\n");
|
|
189
|
+
let pendingList = null;
|
|
190
|
+
let pendingQuote = null;
|
|
191
|
+
let pendingPara = null;
|
|
192
|
+
const flushList = () => {
|
|
193
|
+
if (pendingList) {
|
|
194
|
+
out.push({
|
|
195
|
+
kind: "list",
|
|
196
|
+
ordered: pendingList.ordered,
|
|
197
|
+
items: pendingList.items,
|
|
198
|
+
});
|
|
199
|
+
pendingList = null;
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
const flushQuote = () => {
|
|
203
|
+
if (pendingQuote) {
|
|
204
|
+
if (pendingQuote.variant) {
|
|
205
|
+
out.push({
|
|
206
|
+
kind: "alert",
|
|
207
|
+
variant: pendingQuote.variant,
|
|
208
|
+
lines: pendingQuote.lines,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
out.push({ kind: "quote", lines: pendingQuote.lines });
|
|
213
|
+
}
|
|
214
|
+
pendingQuote = null;
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
const flushPara = () => {
|
|
218
|
+
if (pendingPara && pendingPara.segments.length > 0) {
|
|
219
|
+
out.push({ kind: "para", segments: pendingPara.segments });
|
|
220
|
+
}
|
|
221
|
+
pendingPara = null;
|
|
222
|
+
};
|
|
223
|
+
const flushAll = () => {
|
|
224
|
+
flushList();
|
|
225
|
+
flushQuote();
|
|
226
|
+
flushPara();
|
|
227
|
+
};
|
|
228
|
+
for (let idx = 0; idx < lines.length; idx++) {
|
|
229
|
+
const line = lines[idx];
|
|
230
|
+
if (line.trim() === "") {
|
|
231
|
+
flushAll();
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
// GFM table: a header row with `|` immediately followed by a
|
|
235
|
+
// separator row (`|---|:--:|`). Without the separator a `|` line
|
|
236
|
+
// is just a paragraph — so a half-streamed table (header only)
|
|
237
|
+
// safely falls through and renders as text until the rest lands.
|
|
238
|
+
if (line.includes("|") && idx + 1 < lines.length) {
|
|
239
|
+
const sepCells = splitTableRow(lines[idx + 1]);
|
|
240
|
+
if (sepCells.length > 0 &&
|
|
241
|
+
sepCells.every((c) => TABLE_SEP_CELL.test(c))) {
|
|
242
|
+
flushAll();
|
|
243
|
+
const header = splitTableRow(line).map(parseInline);
|
|
244
|
+
const align = sepCells.map(cellAlign);
|
|
245
|
+
const rows = [];
|
|
246
|
+
let j = idx + 2;
|
|
247
|
+
for (; j < lines.length; j++) {
|
|
248
|
+
if (lines[j].trim() === "" || !lines[j].includes("|"))
|
|
249
|
+
break;
|
|
250
|
+
rows.push(splitTableRow(lines[j]).map(parseInline));
|
|
251
|
+
}
|
|
252
|
+
out.push({ kind: "table", header, align, rows });
|
|
253
|
+
idx = j - 1;
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// Heading.
|
|
258
|
+
const hm = HEADING_RE.exec(line);
|
|
259
|
+
if (hm) {
|
|
260
|
+
flushAll();
|
|
261
|
+
const level = hm[1].length;
|
|
262
|
+
out.push({
|
|
263
|
+
kind: "heading",
|
|
264
|
+
level,
|
|
265
|
+
segments: parseInline(hm[2]),
|
|
266
|
+
});
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
// Horizontal rule.
|
|
270
|
+
if (RULE_RE.test(line)) {
|
|
271
|
+
flushAll();
|
|
272
|
+
out.push({ kind: "rule" });
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
// List item (ordered or unordered, possibly indented for nesting).
|
|
276
|
+
const om = OLIST_RE.exec(line);
|
|
277
|
+
const um = om ? null : ULIST_RE.exec(line);
|
|
278
|
+
const indent = om ? om[1].length : um ? um[1].length : 0;
|
|
279
|
+
const depth = Math.floor(indent / 2);
|
|
280
|
+
// An indented marker only nests under an already-open list. A
|
|
281
|
+
// standalone indented `- x` / `1. x` (no list in progress) stays a
|
|
282
|
+
// paragraph — this keeps arbitrary indented CLI output (e.g. the
|
|
283
|
+
// `/tabs` listing) from being reflowed as a list.
|
|
284
|
+
if ((om || um) && (depth === 0 || pendingList)) {
|
|
285
|
+
flushQuote();
|
|
286
|
+
flushPara();
|
|
287
|
+
const ordered = om !== null;
|
|
288
|
+
// Start a new list block only when nothing is pending, or when a
|
|
289
|
+
// top-level item flips ordered-ness (`- a` then `1. b` = two
|
|
290
|
+
// lists). A deeper item never splits — it's a sub-list.
|
|
291
|
+
if (!pendingList || (depth === 0 && pendingList.ordered !== ordered)) {
|
|
292
|
+
flushList();
|
|
293
|
+
pendingList = { ordered, items: [] };
|
|
294
|
+
}
|
|
295
|
+
const content = om ? om[3] : um[2];
|
|
296
|
+
pendingList.items.push(makeListItem(content, depth, ordered, om ? om[2] : undefined));
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
// Blockquote — and its GitHub-alert special case, where the first
|
|
300
|
+
// line is a `[!NOTE]`-style marker that names a colored variant.
|
|
301
|
+
const qm = QUOTE_RE.exec(line);
|
|
302
|
+
if (qm) {
|
|
303
|
+
flushList();
|
|
304
|
+
flushPara();
|
|
305
|
+
if (!pendingQuote) {
|
|
306
|
+
const am = ALERT_RE.exec(qm[1].trim());
|
|
307
|
+
pendingQuote = {
|
|
308
|
+
lines: [],
|
|
309
|
+
variant: am ? am[1].toUpperCase() : undefined,
|
|
310
|
+
};
|
|
311
|
+
// The marker line itself isn't body content — skip it.
|
|
312
|
+
if (am)
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
pendingQuote.lines.push(parseInline(qm[1]));
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
// Paragraph — accumulate. Soft-wrap join: insert a space when
|
|
319
|
+
// appending to a non-empty para so consecutive lines flow.
|
|
320
|
+
flushList();
|
|
321
|
+
flushQuote();
|
|
322
|
+
if (!pendingPara)
|
|
323
|
+
pendingPara = { segments: parseInline(line) };
|
|
324
|
+
else {
|
|
325
|
+
pendingPara.segments.push({ kind: "text", text: "\n" });
|
|
326
|
+
for (const s of parseInline(line))
|
|
327
|
+
pendingPara.segments.push(s);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
flushAll();
|
|
331
|
+
}
|
|
332
|
+
/** Build a list item from its raw content, peeling a `[ ]`/`[x]`
|
|
333
|
+
* task-list checkbox if present. */
|
|
334
|
+
function makeListItem(content, depth, ordered, marker) {
|
|
335
|
+
const tm = TASK_RE.exec(content);
|
|
336
|
+
if (tm) {
|
|
337
|
+
return {
|
|
338
|
+
segments: parseInline(tm[2]),
|
|
339
|
+
checked: tm[1].toLowerCase() === "x",
|
|
340
|
+
depth,
|
|
341
|
+
ordered,
|
|
342
|
+
marker,
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
return { segments: parseInline(content), depth, ordered, marker };
|
|
346
|
+
}
|
|
347
|
+
/** Inline parser. Greedy left-to-right; the first matching delimiter
|
|
348
|
+
* on the cursor wins. Unclosed delimiters degrade to plain text. */
|
|
349
|
+
export function parseInline(input) {
|
|
350
|
+
const out = [];
|
|
351
|
+
let i = 0;
|
|
352
|
+
let plain = "";
|
|
353
|
+
const flush = () => {
|
|
354
|
+
if (plain.length > 0) {
|
|
355
|
+
out.push({ kind: "text", text: plain });
|
|
356
|
+
plain = "";
|
|
357
|
+
}
|
|
358
|
+
};
|
|
359
|
+
while (i < input.length) {
|
|
360
|
+
const ch = input[i];
|
|
361
|
+
// Link: [text](url)
|
|
362
|
+
if (ch === "[") {
|
|
363
|
+
const closeBracket = input.indexOf("]", i + 1);
|
|
364
|
+
if (closeBracket > i && input[closeBracket + 1] === "(") {
|
|
365
|
+
const closeParen = input.indexOf(")", closeBracket + 2);
|
|
366
|
+
if (closeParen > closeBracket) {
|
|
367
|
+
flush();
|
|
368
|
+
out.push({
|
|
369
|
+
kind: "link",
|
|
370
|
+
text: input.slice(i + 1, closeBracket),
|
|
371
|
+
url: input.slice(closeBracket + 2, closeParen),
|
|
372
|
+
});
|
|
373
|
+
i = closeParen + 1;
|
|
374
|
+
continue;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
// Inline code (single backtick). No multi-line code spans here —
|
|
379
|
+
// those belong inside a fenced block.
|
|
380
|
+
if (ch === "`") {
|
|
381
|
+
const end = input.indexOf("`", i + 1);
|
|
382
|
+
if (end > i) {
|
|
383
|
+
flush();
|
|
384
|
+
out.push({ kind: "code", text: input.slice(i + 1, end) });
|
|
385
|
+
i = end + 1;
|
|
386
|
+
continue;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
// Strikethrough: ~~ ... ~~
|
|
390
|
+
if (ch === "~" && input[i + 1] === "~") {
|
|
391
|
+
const end = input.indexOf("~~", i + 2);
|
|
392
|
+
if (end > i + 1) {
|
|
393
|
+
flush();
|
|
394
|
+
out.push({ kind: "strike", text: input.slice(i + 2, end) });
|
|
395
|
+
i = end + 2;
|
|
396
|
+
continue;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
// Bold: ** ... ** or __ ... __
|
|
400
|
+
if ((ch === "*" || ch === "_") && input[i + 1] === ch) {
|
|
401
|
+
const delim = ch.repeat(2);
|
|
402
|
+
const end = input.indexOf(delim, i + 2);
|
|
403
|
+
if (end > i + 1) {
|
|
404
|
+
flush();
|
|
405
|
+
out.push({ kind: "bold", text: input.slice(i + 2, end) });
|
|
406
|
+
i = end + 2;
|
|
407
|
+
continue;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
// Italic: * ... * or _ ... _ (single delim, not part of bold)
|
|
411
|
+
if (ch === "*" || ch === "_") {
|
|
412
|
+
if (input[i + 1] !== ch) {
|
|
413
|
+
let end = -1;
|
|
414
|
+
for (let j = i + 1; j < input.length; j++) {
|
|
415
|
+
if (input[j] === ch && input[j + 1] !== ch && input[j - 1] !== ch) {
|
|
416
|
+
end = j;
|
|
417
|
+
break;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
if (end > i) {
|
|
421
|
+
flush();
|
|
422
|
+
out.push({ kind: "italic", text: input.slice(i + 1, end) });
|
|
423
|
+
i = end + 1;
|
|
424
|
+
continue;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
// Phase 133: :shortcode: → emoji. Only inside plain runs — code
|
|
429
|
+
// spans / links are handled by their own branches above, so a
|
|
430
|
+
// shortcode inside `code` is never substituted (GitHub parity).
|
|
431
|
+
// An unknown name is left as literal text.
|
|
432
|
+
if (ch === ":") {
|
|
433
|
+
const m = /^:([a-z0-9_+-]+):/.exec(input.slice(i));
|
|
434
|
+
if (m) {
|
|
435
|
+
const emoji = shortcodeToEmoji(m[1]);
|
|
436
|
+
if (emoji) {
|
|
437
|
+
plain += emoji;
|
|
438
|
+
i += m[0].length;
|
|
439
|
+
continue;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
plain += ch;
|
|
444
|
+
i += 1;
|
|
445
|
+
}
|
|
446
|
+
flush();
|
|
447
|
+
return out;
|
|
448
|
+
}
|
|
449
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/ui/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type MouseWheelDirection = "up" | "down";
|
|
2
|
+
export interface MouseWheelEvent {
|
|
3
|
+
direction: MouseWheelDirection;
|
|
4
|
+
x?: number;
|
|
5
|
+
y?: number;
|
|
6
|
+
}
|
|
7
|
+
/** Detect any SGR mouse packet emitted by xterm-compatible terminals.
|
|
8
|
+
*
|
|
9
|
+
* Ink strips the leading ESC before calling `useInput`, while its
|
|
10
|
+
* internal input emitter still carries the full sequence. Accept both
|
|
11
|
+
* shapes so App can handle wheel packets and CommandInput can ignore
|
|
12
|
+
* every mouse packet before it reaches printable text insertion.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isMouseSequence(input: string): boolean;
|
|
15
|
+
/** Parse xterm SGR wheel packets.
|
|
16
|
+
*
|
|
17
|
+
* Wheel events use button codes 64 (up) and 65 (down). Modifier bits
|
|
18
|
+
* may be ORed into the button code, so only the low wheel bit matters:
|
|
19
|
+
* 64/66/68/... are up, 65/67/69/... are down.
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseMouseWheel(input: string): MouseWheelEvent | null;
|
|
22
|
+
//# sourceMappingURL=mouse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mouse.d.ts","sourceRoot":"","sources":["../../src/ui/mouse.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAYrE"}
|
package/dist/ui/mouse.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const SGR_MOUSE_RE = /^(?:\x1b)?\[<(\d+);(\d+);(\d+)([Mm])$/;
|
|
2
|
+
/** Detect any SGR mouse packet emitted by xterm-compatible terminals.
|
|
3
|
+
*
|
|
4
|
+
* Ink strips the leading ESC before calling `useInput`, while its
|
|
5
|
+
* internal input emitter still carries the full sequence. Accept both
|
|
6
|
+
* shapes so App can handle wheel packets and CommandInput can ignore
|
|
7
|
+
* every mouse packet before it reaches printable text insertion.
|
|
8
|
+
*/
|
|
9
|
+
export function isMouseSequence(input) {
|
|
10
|
+
return SGR_MOUSE_RE.test(input);
|
|
11
|
+
}
|
|
12
|
+
/** Parse xterm SGR wheel packets.
|
|
13
|
+
*
|
|
14
|
+
* Wheel events use button codes 64 (up) and 65 (down). Modifier bits
|
|
15
|
+
* may be ORed into the button code, so only the low wheel bit matters:
|
|
16
|
+
* 64/66/68/... are up, 65/67/69/... are down.
|
|
17
|
+
*/
|
|
18
|
+
export function parseMouseWheel(input) {
|
|
19
|
+
const match = SGR_MOUSE_RE.exec(input);
|
|
20
|
+
if (!match)
|
|
21
|
+
return null;
|
|
22
|
+
const button = Number(match[1]);
|
|
23
|
+
if (!Number.isFinite(button) || button < 64 || button > 95)
|
|
24
|
+
return null;
|
|
25
|
+
return {
|
|
26
|
+
direction: button % 2 === 0 ? "up" : "down",
|
|
27
|
+
x: Number(match[2]),
|
|
28
|
+
y: Number(match[3]),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=mouse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mouse.js","sourceRoot":"","sources":["../../src/ui/mouse.ts"],"names":[],"mappings":"AAQA,MAAM,YAAY,GAAG,uCAAuC,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAExE,OAAO;QACL,SAAS,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;QAC3C,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface UserNotification {
|
|
2
|
+
jsonrpc: "2.0";
|
|
3
|
+
method: string;
|
|
4
|
+
params: Record<string, unknown>;
|
|
5
|
+
}
|
|
6
|
+
export interface JsonRpcResponse {
|
|
7
|
+
jsonrpc: "2.0";
|
|
8
|
+
id: string;
|
|
9
|
+
result: unknown;
|
|
10
|
+
}
|
|
11
|
+
export type OutboundMessage = UserNotification | JsonRpcResponse;
|
|
12
|
+
export declare function configureOutbound(handler: (msg: OutboundMessage) => void): void;
|
|
13
|
+
export declare function sendQuit(): void;
|
|
14
|
+
export declare function sendCancel(): void;
|
|
15
|
+
export declare function sendSessionSelect(id: string, provider?: string): void;
|
|
16
|
+
export declare function sendPickerClose(): void;
|
|
17
|
+
export declare function sendInput(text: string, attachments?: readonly string[]): void;
|
|
18
|
+
export declare function sendSlashCommand(name: string, args: string): void;
|
|
19
|
+
export declare function respondRequest(id: string, result: unknown): void;
|
|
20
|
+
//# sourceMappingURL=outbound.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbound.d.ts","sourceRoot":"","sources":["../../src/ui/outbound.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAIjE,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,GACtC,IAAI,CAGN;AAMD,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAMrE;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAM7E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMjE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAEhE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Outbound channel: user events leaving the UI back to the orchestrator.
|
|
2
|
+
//
|
|
3
|
+
// In B+1 (in-process UI) the UI shares a runtime with the orchestrator,
|
|
4
|
+
// so "outbound" is no longer a serialized byte stream — it's an event
|
|
5
|
+
// bus the launcher subscribes to. configureOutbound() wires the bus
|
|
6
|
+
// to the launcher's handler; components keep calling sendQuit / sendInput
|
|
7
|
+
// / sendSlashCommand / respondRequest as before.
|
|
8
|
+
import { EventEmitter } from "node:events";
|
|
9
|
+
const bus = new EventEmitter();
|
|
10
|
+
export function configureOutbound(handler) {
|
|
11
|
+
bus.removeAllListeners("msg");
|
|
12
|
+
bus.on("msg", handler);
|
|
13
|
+
}
|
|
14
|
+
function emit(msg) {
|
|
15
|
+
bus.emit("msg", msg);
|
|
16
|
+
}
|
|
17
|
+
export function sendQuit() {
|
|
18
|
+
emit({ jsonrpc: "2.0", method: "user/quit", params: {} });
|
|
19
|
+
}
|
|
20
|
+
export function sendCancel() {
|
|
21
|
+
emit({ jsonrpc: "2.0", method: "user/cancel", params: {} });
|
|
22
|
+
}
|
|
23
|
+
export function sendSessionSelect(id, provider) {
|
|
24
|
+
emit({
|
|
25
|
+
jsonrpc: "2.0",
|
|
26
|
+
method: "user/select_session",
|
|
27
|
+
params: provider ? { id, provider } : { id },
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
export function sendPickerClose() {
|
|
31
|
+
emit({ jsonrpc: "2.0", method: "user/picker_close", params: {} });
|
|
32
|
+
}
|
|
33
|
+
export function sendInput(text, attachments) {
|
|
34
|
+
// Phase 340: attachments = absolute image paths for this turn (clipboard
|
|
35
|
+
// capture or @path). Omitted when empty to keep the wire unchanged.
|
|
36
|
+
const params = attachments && attachments.length > 0 ? { text, attachments } : { text };
|
|
37
|
+
emit({ jsonrpc: "2.0", method: "user/input", params });
|
|
38
|
+
}
|
|
39
|
+
export function sendSlashCommand(name, args) {
|
|
40
|
+
emit({
|
|
41
|
+
jsonrpc: "2.0",
|
|
42
|
+
method: "user/slash",
|
|
43
|
+
params: { name, args },
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export function respondRequest(id, result) {
|
|
47
|
+
emit({ jsonrpc: "2.0", id, result });
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=outbound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbound.js","sourceRoot":"","sources":["../../src/ui/outbound.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,wEAAwE;AACxE,sEAAsE;AACtE,oEAAoE;AACpE,0EAA0E;AAC1E,iDAAiD;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAgB3C,MAAM,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;AAE/B,MAAM,UAAU,iBAAiB,CAC/B,OAAuC;IAEvC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC9B,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,IAAI,CAAC,GAAoB;IAChC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAU,EAAE,QAAiB;IAC7D,IAAI,CAAC;QACH,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;KAC7C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,WAA+B;IACrE,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,MAAM,GACV,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3E,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAY;IACzD,IAAI,CAAC;QACH,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;KACvB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU,EAAE,MAAe;IACxD,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** Screen mode policy: normal-screen transcript by default.
|
|
2
|
+
*
|
|
3
|
+
* OMG is a chat/transcript TUI, so the default is normal-screen mode:
|
|
4
|
+
* settled rows are committed to the terminal's native scrollback via
|
|
5
|
+
* Ink's <Static>, and only the live tail repaints. That gives native
|
|
6
|
+
* scroll, search (Cmd+F), and copy across the full history, plays well
|
|
7
|
+
* with multiplexers, and minimizes flicker — the same model Claude
|
|
8
|
+
* Code uses. The two bugs that once pushed OMG toward alt-screen are
|
|
9
|
+
* now fixed independently: the macOS Hangul IME cursor via the Ink 6
|
|
10
|
+
* `useCursor` upgrade (Phase 268), and the <Static> scrollback
|
|
11
|
+
* dup/lag via the `splitTranscriptGroups` guard (Phase 270).
|
|
12
|
+
*
|
|
13
|
+
* Alternate-screen (Codex-style full-frame) mode remains available as
|
|
14
|
+
* an explicit opt-in for users who prefer it: `omg --alt-screen` or
|
|
15
|
+
* `OMG_ALT_SCREEN=1`. Its trade-off is structural, not a quality bug
|
|
16
|
+
* we can polish away — the alternate buffer has no usable native
|
|
17
|
+
* scrollback during the session and some multiplexers (zellij, certain
|
|
18
|
+
* VS Code terminals) mishandle its scroll events.
|
|
19
|
+
*
|
|
20
|
+
* `OMG_NO_ALT_SCREEN=1` is honored as an explicit force-off so scripts
|
|
21
|
+
* that already export it keep working and it always wins over an
|
|
22
|
+
* accidental opt-in.
|
|
23
|
+
*/
|
|
24
|
+
export declare function wantsAltScreen(): boolean;
|
|
25
|
+
//# sourceMappingURL=screenMode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenMode.d.ts","sourceRoot":"","sources":["../../src/ui/screenMode.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAIxC"}
|