@zhijiewang/openharness 0.12.0 → 0.12.1
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/README.md +13 -0
- package/dist/agents/roles.js +42 -0
- package/dist/commands/index.js +31 -2
- package/dist/harness/session.d.ts +19 -0
- package/dist/harness/session.js +53 -0
- package/dist/mcp/registry.d.ts +31 -0
- package/dist/mcp/registry.js +180 -0
- package/dist/repl.js +13 -0
- package/dist/tools/AgentTool/index.js +1 -1
- package/package.json +5 -2
- package/dist/DeferredTool.d.ts.map +0 -1
- package/dist/DeferredTool.js.map +0 -1
- package/dist/DeferredTool.test.d.ts +0 -2
- package/dist/DeferredTool.test.d.ts.map +0 -1
- package/dist/DeferredTool.test.js +0 -79
- package/dist/DeferredTool.test.js.map +0 -1
- package/dist/Tool.d.ts.map +0 -1
- package/dist/Tool.js.map +0 -1
- package/dist/Tool.test.d.ts +0 -2
- package/dist/Tool.test.d.ts.map +0 -1
- package/dist/Tool.test.js +0 -48
- package/dist/Tool.test.js.map +0 -1
- package/dist/agents/roles.d.ts.map +0 -1
- package/dist/agents/roles.js.map +0 -1
- package/dist/agents/roles.test.d.ts +0 -2
- package/dist/agents/roles.test.d.ts.map +0 -1
- package/dist/agents/roles.test.js +0 -62
- package/dist/agents/roles.test.js.map +0 -1
- package/dist/commands/commands-new.test.d.ts +0 -5
- package/dist/commands/commands-new.test.d.ts.map +0 -1
- package/dist/commands/commands-new.test.js +0 -132
- package/dist/commands/commands-new.test.js.map +0 -1
- package/dist/commands/commands.test.d.ts +0 -2
- package/dist/commands/commands.test.d.ts.map +0 -1
- package/dist/commands/commands.test.js +0 -98
- package/dist/commands/commands.test.js.map +0 -1
- package/dist/commands/cybergotchi.d.ts.map +0 -1
- package/dist/commands/cybergotchi.js.map +0 -1
- package/dist/commands/index.d.ts.map +0 -1
- package/dist/commands/index.js.map +0 -1
- package/dist/components/App.d.ts.map +0 -1
- package/dist/components/App.js.map +0 -1
- package/dist/components/CompanionFooter.d.ts.map +0 -1
- package/dist/components/CompanionFooter.js.map +0 -1
- package/dist/components/CybergotchiBubble.d.ts.map +0 -1
- package/dist/components/CybergotchiBubble.js.map +0 -1
- package/dist/components/CybergotchiPanel.d.ts.map +0 -1
- package/dist/components/CybergotchiPanel.js.map +0 -1
- package/dist/components/CybergotchiPanelConnected.d.ts.map +0 -1
- package/dist/components/CybergotchiPanelConnected.js.map +0 -1
- package/dist/components/CybergotchiSetup.d.ts.map +0 -1
- package/dist/components/CybergotchiSetup.js.map +0 -1
- package/dist/components/CybergotchiSprite.d.ts.map +0 -1
- package/dist/components/CybergotchiSprite.js.map +0 -1
- package/dist/components/DiffView.d.ts.map +0 -1
- package/dist/components/DiffView.js.map +0 -1
- package/dist/components/ErrorBoundary.d.ts.map +0 -1
- package/dist/components/ErrorBoundary.js.map +0 -1
- package/dist/components/InitWizard.d.ts.map +0 -1
- package/dist/components/InitWizard.js.map +0 -1
- package/dist/components/Markdown.d.ts.map +0 -1
- package/dist/components/Markdown.js.map +0 -1
- package/dist/components/Messages.d.ts.map +0 -1
- package/dist/components/Messages.js.map +0 -1
- package/dist/components/PermissionPrompt.d.ts.map +0 -1
- package/dist/components/PermissionPrompt.js.map +0 -1
- package/dist/components/REPL.d.ts.map +0 -1
- package/dist/components/REPL.js.map +0 -1
- package/dist/components/Spinner.d.ts.map +0 -1
- package/dist/components/Spinner.js.map +0 -1
- package/dist/components/TextInput.d.ts.map +0 -1
- package/dist/components/TextInput.js.map +0 -1
- package/dist/components/ToolCallDisplay.d.ts.map +0 -1
- package/dist/components/ToolCallDisplay.js.map +0 -1
- package/dist/cybergotchi/bones.d.ts.map +0 -1
- package/dist/cybergotchi/bones.js.map +0 -1
- package/dist/cybergotchi/bones.test.d.ts +0 -2
- package/dist/cybergotchi/bones.test.d.ts.map +0 -1
- package/dist/cybergotchi/bones.test.js +0 -100
- package/dist/cybergotchi/bones.test.js.map +0 -1
- package/dist/cybergotchi/config.d.ts.map +0 -1
- package/dist/cybergotchi/config.js.map +0 -1
- package/dist/cybergotchi/events.d.ts.map +0 -1
- package/dist/cybergotchi/events.js.map +0 -1
- package/dist/cybergotchi/needs.d.ts.map +0 -1
- package/dist/cybergotchi/needs.js.map +0 -1
- package/dist/cybergotchi/needs.test.d.ts +0 -2
- package/dist/cybergotchi/needs.test.d.ts.map +0 -1
- package/dist/cybergotchi/needs.test.js +0 -150
- package/dist/cybergotchi/needs.test.js.map +0 -1
- package/dist/cybergotchi/personality.d.ts.map +0 -1
- package/dist/cybergotchi/personality.js.map +0 -1
- package/dist/cybergotchi/species.d.ts.map +0 -1
- package/dist/cybergotchi/species.js.map +0 -1
- package/dist/cybergotchi/speech.d.ts.map +0 -1
- package/dist/cybergotchi/speech.js.map +0 -1
- package/dist/cybergotchi/types.d.ts.map +0 -1
- package/dist/cybergotchi/types.js.map +0 -1
- package/dist/cybergotchi/useCybergotchi.d.ts.map +0 -1
- package/dist/cybergotchi/useCybergotchi.js.map +0 -1
- package/dist/git/git.test.d.ts +0 -2
- package/dist/git/git.test.d.ts.map +0 -1
- package/dist/git/git.test.js +0 -141
- package/dist/git/git.test.js.map +0 -1
- package/dist/git/index.d.ts.map +0 -1
- package/dist/git/index.js.map +0 -1
- package/dist/harness/checkpoints.d.ts.map +0 -1
- package/dist/harness/checkpoints.js.map +0 -1
- package/dist/harness/config.d.ts.map +0 -1
- package/dist/harness/config.js.map +0 -1
- package/dist/harness/config.test.d.ts +0 -2
- package/dist/harness/config.test.d.ts.map +0 -1
- package/dist/harness/config.test.js +0 -107
- package/dist/harness/config.test.js.map +0 -1
- package/dist/harness/context-warning.d.ts.map +0 -1
- package/dist/harness/context-warning.js.map +0 -1
- package/dist/harness/context-warning.test.d.ts +0 -2
- package/dist/harness/context-warning.test.d.ts.map +0 -1
- package/dist/harness/context-warning.test.js +0 -72
- package/dist/harness/context-warning.test.js.map +0 -1
- package/dist/harness/cost.d.ts.map +0 -1
- package/dist/harness/cost.js.map +0 -1
- package/dist/harness/cost.test.d.ts +0 -2
- package/dist/harness/cost.test.d.ts.map +0 -1
- package/dist/harness/cost.test.js +0 -43
- package/dist/harness/cost.test.js.map +0 -1
- package/dist/harness/credentials.d.ts.map +0 -1
- package/dist/harness/credentials.js.map +0 -1
- package/dist/harness/credentials.test.d.ts +0 -2
- package/dist/harness/credentials.test.d.ts.map +0 -1
- package/dist/harness/credentials.test.js +0 -113
- package/dist/harness/credentials.test.js.map +0 -1
- package/dist/harness/hooks-env.test.d.ts +0 -5
- package/dist/harness/hooks-env.test.d.ts.map +0 -1
- package/dist/harness/hooks-env.test.js +0 -41
- package/dist/harness/hooks-env.test.js.map +0 -1
- package/dist/harness/hooks.d.ts.map +0 -1
- package/dist/harness/hooks.js.map +0 -1
- package/dist/harness/hooks.test.d.ts +0 -2
- package/dist/harness/hooks.test.d.ts.map +0 -1
- package/dist/harness/hooks.test.js +0 -24
- package/dist/harness/hooks.test.js.map +0 -1
- package/dist/harness/keybindings.d.ts.map +0 -1
- package/dist/harness/keybindings.js.map +0 -1
- package/dist/harness/keybindings.test.d.ts +0 -2
- package/dist/harness/keybindings.test.d.ts.map +0 -1
- package/dist/harness/keybindings.test.js +0 -38
- package/dist/harness/keybindings.test.js.map +0 -1
- package/dist/harness/memory-consolidation.test.d.ts +0 -2
- package/dist/harness/memory-consolidation.test.d.ts.map +0 -1
- package/dist/harness/memory-consolidation.test.js +0 -152
- package/dist/harness/memory-consolidation.test.js.map +0 -1
- package/dist/harness/memory.d.ts.map +0 -1
- package/dist/harness/memory.js.map +0 -1
- package/dist/harness/memory.test.d.ts +0 -2
- package/dist/harness/memory.test.d.ts.map +0 -1
- package/dist/harness/memory.test.js +0 -107
- package/dist/harness/memory.test.js.map +0 -1
- package/dist/harness/onboarding.d.ts.map +0 -1
- package/dist/harness/onboarding.js.map +0 -1
- package/dist/harness/onboarding.test.d.ts +0 -5
- package/dist/harness/onboarding.test.d.ts.map +0 -1
- package/dist/harness/onboarding.test.js +0 -93
- package/dist/harness/onboarding.test.js.map +0 -1
- package/dist/harness/plugins.d.ts.map +0 -1
- package/dist/harness/plugins.js.map +0 -1
- package/dist/harness/plugins.test.d.ts +0 -2
- package/dist/harness/plugins.test.d.ts.map +0 -1
- package/dist/harness/plugins.test.js +0 -97
- package/dist/harness/plugins.test.js.map +0 -1
- package/dist/harness/rules.d.ts.map +0 -1
- package/dist/harness/rules.js.map +0 -1
- package/dist/harness/rules.test.d.ts +0 -2
- package/dist/harness/rules.test.d.ts.map +0 -1
- package/dist/harness/rules.test.js +0 -54
- package/dist/harness/rules.test.js.map +0 -1
- package/dist/harness/session.d.ts.map +0 -1
- package/dist/harness/session.js.map +0 -1
- package/dist/harness/session.test.d.ts +0 -2
- package/dist/harness/session.test.d.ts.map +0 -1
- package/dist/harness/session.test.js +0 -73
- package/dist/harness/session.test.js.map +0 -1
- package/dist/harness/store.d.ts.map +0 -1
- package/dist/harness/store.js.map +0 -1
- package/dist/harness/store.test.d.ts +0 -2
- package/dist/harness/store.test.d.ts.map +0 -1
- package/dist/harness/store.test.js +0 -71
- package/dist/harness/store.test.js.map +0 -1
- package/dist/harness/submit-handler.d.ts.map +0 -1
- package/dist/harness/submit-handler.js.map +0 -1
- package/dist/harness/submit-handler.test.d.ts +0 -2
- package/dist/harness/submit-handler.test.d.ts.map +0 -1
- package/dist/harness/submit-handler.test.js +0 -62
- package/dist/harness/submit-handler.test.js.map +0 -1
- package/dist/harness/verification.d.ts.map +0 -1
- package/dist/harness/verification.js.map +0 -1
- package/dist/harness/verification.test.d.ts +0 -2
- package/dist/harness/verification.test.d.ts.map +0 -1
- package/dist/harness/verification.test.js +0 -181
- package/dist/harness/verification.test.js.map +0 -1
- package/dist/lsp/client.d.ts.map +0 -1
- package/dist/lsp/client.js.map +0 -1
- package/dist/lsp/client.test.d.ts +0 -2
- package/dist/lsp/client.test.d.ts.map +0 -1
- package/dist/lsp/client.test.js +0 -44
- package/dist/lsp/client.test.js.map +0 -1
- package/dist/main.d.ts.map +0 -1
- package/dist/main.js.map +0 -1
- package/dist/mcp/DeferredMcpTool.d.ts.map +0 -1
- package/dist/mcp/DeferredMcpTool.js.map +0 -1
- package/dist/mcp/McpTool.d.ts.map +0 -1
- package/dist/mcp/McpTool.js.map +0 -1
- package/dist/mcp/McpTool.test.d.ts +0 -2
- package/dist/mcp/McpTool.test.d.ts.map +0 -1
- package/dist/mcp/McpTool.test.js +0 -53
- package/dist/mcp/McpTool.test.js.map +0 -1
- package/dist/mcp/client.d.ts.map +0 -1
- package/dist/mcp/client.js.map +0 -1
- package/dist/mcp/loader.d.ts.map +0 -1
- package/dist/mcp/loader.js.map +0 -1
- package/dist/mcp/loader.test.d.ts +0 -7
- package/dist/mcp/loader.test.d.ts.map +0 -1
- package/dist/mcp/loader.test.js +0 -25
- package/dist/mcp/loader.test.js.map +0 -1
- package/dist/mcp/schema.d.ts.map +0 -1
- package/dist/mcp/schema.js.map +0 -1
- package/dist/mcp/schema.test.d.ts +0 -2
- package/dist/mcp/schema.test.d.ts.map +0 -1
- package/dist/mcp/schema.test.js +0 -33
- package/dist/mcp/schema.test.js.map +0 -1
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/server.test.d.ts +0 -2
- package/dist/mcp/server.test.d.ts.map +0 -1
- package/dist/mcp/server.test.js +0 -54
- package/dist/mcp/server.test.js.map +0 -1
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/mcp/types.js.map +0 -1
- package/dist/providers/anthropic-convert.test.d.ts +0 -5
- package/dist/providers/anthropic-convert.test.d.ts.map +0 -1
- package/dist/providers/anthropic-convert.test.js +0 -98
- package/dist/providers/anthropic-convert.test.js.map +0 -1
- package/dist/providers/anthropic.d.ts.map +0 -1
- package/dist/providers/anthropic.js.map +0 -1
- package/dist/providers/anthropic.test.d.ts +0 -2
- package/dist/providers/anthropic.test.d.ts.map +0 -1
- package/dist/providers/anthropic.test.js +0 -18
- package/dist/providers/anthropic.test.js.map +0 -1
- package/dist/providers/base.d.ts.map +0 -1
- package/dist/providers/base.js.map +0 -1
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/llamacpp.d.ts.map +0 -1
- package/dist/providers/llamacpp.js.map +0 -1
- package/dist/providers/llamacpp.test.d.ts +0 -2
- package/dist/providers/llamacpp.test.d.ts.map +0 -1
- package/dist/providers/llamacpp.test.js +0 -33
- package/dist/providers/llamacpp.test.js.map +0 -1
- package/dist/providers/message-format.test.d.ts +0 -2
- package/dist/providers/message-format.test.d.ts.map +0 -1
- package/dist/providers/message-format.test.js +0 -31
- package/dist/providers/message-format.test.js.map +0 -1
- package/dist/providers/ollama.d.ts.map +0 -1
- package/dist/providers/ollama.js.map +0 -1
- package/dist/providers/ollama.test.d.ts +0 -2
- package/dist/providers/ollama.test.d.ts.map +0 -1
- package/dist/providers/ollama.test.js +0 -40
- package/dist/providers/ollama.test.js.map +0 -1
- package/dist/providers/openai.d.ts.map +0 -1
- package/dist/providers/openai.js.map +0 -1
- package/dist/providers/openai.test.d.ts +0 -2
- package/dist/providers/openai.test.d.ts.map +0 -1
- package/dist/providers/openai.test.js +0 -23
- package/dist/providers/openai.test.js.map +0 -1
- package/dist/providers/openrouter.d.ts.map +0 -1
- package/dist/providers/openrouter.js.map +0 -1
- package/dist/providers/stream-parsing.test.d.ts +0 -6
- package/dist/providers/stream-parsing.test.d.ts.map +0 -1
- package/dist/providers/stream-parsing.test.js +0 -174
- package/dist/providers/stream-parsing.test.js.map +0 -1
- package/dist/query/compress.d.ts.map +0 -1
- package/dist/query/compress.js.map +0 -1
- package/dist/query/errors.d.ts.map +0 -1
- package/dist/query/errors.js.map +0 -1
- package/dist/query/index.d.ts.map +0 -1
- package/dist/query/index.js.map +0 -1
- package/dist/query/tools.d.ts.map +0 -1
- package/dist/query/tools.js.map +0 -1
- package/dist/query/types.d.ts.map +0 -1
- package/dist/query/types.js.map +0 -1
- package/dist/query.d.ts.map +0 -1
- package/dist/query.js.map +0 -1
- package/dist/query.test.d.ts +0 -2
- package/dist/query.test.d.ts.map +0 -1
- package/dist/query.test.js +0 -121
- package/dist/query.test.js.map +0 -1
- package/dist/remote/server.d.ts.map +0 -1
- package/dist/remote/server.js.map +0 -1
- package/dist/remote/server.test.d.ts +0 -2
- package/dist/remote/server.test.d.ts.map +0 -1
- package/dist/remote/server.test.js +0 -120
- package/dist/remote/server.test.js.map +0 -1
- package/dist/renderer/cells.d.ts.map +0 -1
- package/dist/renderer/cells.js.map +0 -1
- package/dist/renderer/cells.test.d.ts +0 -2
- package/dist/renderer/cells.test.d.ts.map +0 -1
- package/dist/renderer/cells.test.js +0 -69
- package/dist/renderer/cells.test.js.map +0 -1
- package/dist/renderer/colors.d.ts.map +0 -1
- package/dist/renderer/colors.js.map +0 -1
- package/dist/renderer/diff.d.ts.map +0 -1
- package/dist/renderer/diff.js.map +0 -1
- package/dist/renderer/diff.test.d.ts +0 -5
- package/dist/renderer/diff.test.d.ts.map +0 -1
- package/dist/renderer/diff.test.js +0 -140
- package/dist/renderer/diff.test.js.map +0 -1
- package/dist/renderer/differ.d.ts.map +0 -1
- package/dist/renderer/differ.js.map +0 -1
- package/dist/renderer/e2e.test.d.ts +0 -6
- package/dist/renderer/e2e.test.d.ts.map +0 -1
- package/dist/renderer/e2e.test.js +0 -702
- package/dist/renderer/e2e.test.js.map +0 -1
- package/dist/renderer/image.d.ts.map +0 -1
- package/dist/renderer/image.js.map +0 -1
- package/dist/renderer/image.test.d.ts +0 -5
- package/dist/renderer/image.test.d.ts.map +0 -1
- package/dist/renderer/image.test.js +0 -66
- package/dist/renderer/image.test.js.map +0 -1
- package/dist/renderer/index.d.ts.map +0 -1
- package/dist/renderer/index.js.map +0 -1
- package/dist/renderer/input.d.ts.map +0 -1
- package/dist/renderer/input.js.map +0 -1
- package/dist/renderer/input.test.d.ts +0 -5
- package/dist/renderer/input.test.d.ts.map +0 -1
- package/dist/renderer/input.test.js +0 -129
- package/dist/renderer/input.test.js.map +0 -1
- package/dist/renderer/layout.d.ts.map +0 -1
- package/dist/renderer/layout.js.map +0 -1
- package/dist/renderer/markdown.d.ts.map +0 -1
- package/dist/renderer/markdown.js.map +0 -1
- package/dist/renderer/markdown.test.d.ts +0 -2
- package/dist/renderer/markdown.test.d.ts.map +0 -1
- package/dist/renderer/markdown.test.js +0 -81
- package/dist/renderer/markdown.test.js.map +0 -1
- package/dist/renderer/perf.test.d.ts +0 -2
- package/dist/renderer/perf.test.d.ts.map +0 -1
- package/dist/renderer/perf.test.js +0 -128
- package/dist/renderer/perf.test.js.map +0 -1
- package/dist/renderer/session-browser.d.ts.map +0 -1
- package/dist/renderer/session-browser.js.map +0 -1
- package/dist/renderer/session-browser.test.d.ts +0 -6
- package/dist/renderer/session-browser.test.d.ts.map +0 -1
- package/dist/renderer/session-browser.test.js +0 -95
- package/dist/renderer/session-browser.test.js.map +0 -1
- package/dist/renderer/ui-ux.test.d.ts +0 -15
- package/dist/renderer/ui-ux.test.d.ts.map +0 -1
- package/dist/renderer/ui-ux.test.js +0 -470
- package/dist/renderer/ui-ux.test.js.map +0 -1
- package/dist/repl.d.ts.map +0 -1
- package/dist/repl.js.map +0 -1
- package/dist/services/AgentDispatcher.d.ts.map +0 -1
- package/dist/services/AgentDispatcher.js.map +0 -1
- package/dist/services/AgentDispatcher.test.d.ts +0 -2
- package/dist/services/AgentDispatcher.test.d.ts.map +0 -1
- package/dist/services/AgentDispatcher.test.js +0 -66
- package/dist/services/AgentDispatcher.test.js.map +0 -1
- package/dist/services/CronExecutor.d.ts.map +0 -1
- package/dist/services/CronExecutor.js.map +0 -1
- package/dist/services/CronExecutor.test.d.ts +0 -2
- package/dist/services/CronExecutor.test.d.ts.map +0 -1
- package/dist/services/CronExecutor.test.js +0 -128
- package/dist/services/CronExecutor.test.js.map +0 -1
- package/dist/services/StreamingToolExecutor.d.ts.map +0 -1
- package/dist/services/StreamingToolExecutor.js.map +0 -1
- package/dist/services/StreamingToolExecutor.test.d.ts +0 -2
- package/dist/services/StreamingToolExecutor.test.d.ts.map +0 -1
- package/dist/services/StreamingToolExecutor.test.js +0 -103
- package/dist/services/StreamingToolExecutor.test.js.map +0 -1
- package/dist/services/agent-messaging.d.ts.map +0 -1
- package/dist/services/agent-messaging.js.map +0 -1
- package/dist/services/agent-messaging.test.d.ts +0 -2
- package/dist/services/agent-messaging.test.d.ts.map +0 -1
- package/dist/services/agent-messaging.test.js +0 -88
- package/dist/services/agent-messaging.test.js.map +0 -1
- package/dist/services/cron.d.ts.map +0 -1
- package/dist/services/cron.js.map +0 -1
- package/dist/services/cron.test.d.ts +0 -2
- package/dist/services/cron.test.d.ts.map +0 -1
- package/dist/services/cron.test.js +0 -49
- package/dist/services/cron.test.js.map +0 -1
- package/dist/test-helpers.d.ts +0 -31
- package/dist/test-helpers.d.ts.map +0 -1
- package/dist/test-helpers.js +0 -106
- package/dist/test-helpers.js.map +0 -1
- package/dist/tools/AgentTool/index.d.ts.map +0 -1
- package/dist/tools/AgentTool/index.js.map +0 -1
- package/dist/tools/AskUserTool/index.d.ts.map +0 -1
- package/dist/tools/AskUserTool/index.js.map +0 -1
- package/dist/tools/BashTool/index.d.ts.map +0 -1
- package/dist/tools/BashTool/index.js.map +0 -1
- package/dist/tools/CronTool/index.d.ts.map +0 -1
- package/dist/tools/CronTool/index.js.map +0 -1
- package/dist/tools/DiagnosticsTool/index.d.ts.map +0 -1
- package/dist/tools/DiagnosticsTool/index.js.map +0 -1
- package/dist/tools/EnterPlanModeTool/index.d.ts.map +0 -1
- package/dist/tools/EnterPlanModeTool/index.js.map +0 -1
- package/dist/tools/EnterWorktreeTool/index.d.ts.map +0 -1
- package/dist/tools/EnterWorktreeTool/index.js.map +0 -1
- package/dist/tools/ExitPlanModeTool/index.d.ts.map +0 -1
- package/dist/tools/ExitPlanModeTool/index.js.map +0 -1
- package/dist/tools/ExitWorktreeTool/index.d.ts.map +0 -1
- package/dist/tools/ExitWorktreeTool/index.js.map +0 -1
- package/dist/tools/FileEditTool/index.d.ts.map +0 -1
- package/dist/tools/FileEditTool/index.js.map +0 -1
- package/dist/tools/FileReadTool/index.d.ts.map +0 -1
- package/dist/tools/FileReadTool/index.js.map +0 -1
- package/dist/tools/FileWriteTool/index.d.ts.map +0 -1
- package/dist/tools/FileWriteTool/index.js.map +0 -1
- package/dist/tools/GlobTool/index.d.ts.map +0 -1
- package/dist/tools/GlobTool/index.js.map +0 -1
- package/dist/tools/GrepTool/index.d.ts.map +0 -1
- package/dist/tools/GrepTool/index.js.map +0 -1
- package/dist/tools/ImageReadTool/index.d.ts.map +0 -1
- package/dist/tools/ImageReadTool/index.js.map +0 -1
- package/dist/tools/KillProcessTool/index.d.ts.map +0 -1
- package/dist/tools/KillProcessTool/index.js.map +0 -1
- package/dist/tools/LSTool/index.d.ts.map +0 -1
- package/dist/tools/LSTool/index.js.map +0 -1
- package/dist/tools/MemoryTool/index.d.ts.map +0 -1
- package/dist/tools/MemoryTool/index.js.map +0 -1
- package/dist/tools/MultiEditTool/index.d.ts.map +0 -1
- package/dist/tools/MultiEditTool/index.js.map +0 -1
- package/dist/tools/NotebookEditTool/index.d.ts.map +0 -1
- package/dist/tools/NotebookEditTool/index.js.map +0 -1
- package/dist/tools/ParallelAgentTool/index.d.ts.map +0 -1
- package/dist/tools/ParallelAgentTool/index.js.map +0 -1
- package/dist/tools/RemoteTriggerTool/index.d.ts.map +0 -1
- package/dist/tools/RemoteTriggerTool/index.js.map +0 -1
- package/dist/tools/SendMessageTool/index.d.ts.map +0 -1
- package/dist/tools/SendMessageTool/index.js.map +0 -1
- package/dist/tools/SkillTool/index.d.ts.map +0 -1
- package/dist/tools/SkillTool/index.js.map +0 -1
- package/dist/tools/TaskCreateTool/index.d.ts.map +0 -1
- package/dist/tools/TaskCreateTool/index.js.map +0 -1
- package/dist/tools/TaskGetTool/index.d.ts.map +0 -1
- package/dist/tools/TaskGetTool/index.js.map +0 -1
- package/dist/tools/TaskListTool/index.d.ts.map +0 -1
- package/dist/tools/TaskListTool/index.js.map +0 -1
- package/dist/tools/TaskOutputTool/index.d.ts.map +0 -1
- package/dist/tools/TaskOutputTool/index.js.map +0 -1
- package/dist/tools/TaskStopTool/index.d.ts.map +0 -1
- package/dist/tools/TaskStopTool/index.js.map +0 -1
- package/dist/tools/TaskUpdateTool/index.d.ts.map +0 -1
- package/dist/tools/TaskUpdateTool/index.js.map +0 -1
- package/dist/tools/ToolSearchTool/index.d.ts.map +0 -1
- package/dist/tools/ToolSearchTool/index.js.map +0 -1
- package/dist/tools/WebFetchTool/index.d.ts.map +0 -1
- package/dist/tools/WebFetchTool/index.js.map +0 -1
- package/dist/tools/WebSearchTool/index.d.ts.map +0 -1
- package/dist/tools/WebSearchTool/index.js.map +0 -1
- package/dist/tools/file-edit.test.d.ts +0 -2
- package/dist/tools/file-edit.test.d.ts.map +0 -1
- package/dist/tools/file-edit.test.js +0 -35
- package/dist/tools/file-edit.test.js.map +0 -1
- package/dist/tools/tools-basic.test.d.ts +0 -6
- package/dist/tools/tools-basic.test.d.ts.map +0 -1
- package/dist/tools/tools-basic.test.js +0 -379
- package/dist/tools/tools-basic.test.js.map +0 -1
- package/dist/tools/web-fetch.test.d.ts +0 -2
- package/dist/tools/web-fetch.test.d.ts.map +0 -1
- package/dist/tools/web-fetch.test.js +0 -27
- package/dist/tools/web-fetch.test.js.map +0 -1
- package/dist/tools.d.ts.map +0 -1
- package/dist/tools.js.map +0 -1
- package/dist/types/events.d.ts.map +0 -1
- package/dist/types/events.js.map +0 -1
- package/dist/types/message.d.ts.map +0 -1
- package/dist/types/message.js.map +0 -1
- package/dist/types/message.test.d.ts +0 -2
- package/dist/types/message.test.d.ts.map +0 -1
- package/dist/types/message.test.js +0 -46
- package/dist/types/message.test.js.map +0 -1
- package/dist/types/permissions.d.ts.map +0 -1
- package/dist/types/permissions.js.map +0 -1
- package/dist/types/permissions.test.d.ts +0 -2
- package/dist/types/permissions.test.d.ts.map +0 -1
- package/dist/types/permissions.test.js +0 -127
- package/dist/types/permissions.test.js.map +0 -1
- package/dist/utils/bash-safety.d.ts.map +0 -1
- package/dist/utils/bash-safety.js.map +0 -1
- package/dist/utils/bash-safety.test.d.ts +0 -2
- package/dist/utils/bash-safety.test.d.ts.map +0 -1
- package/dist/utils/bash-safety.test.js +0 -112
- package/dist/utils/bash-safety.test.js.map +0 -1
- package/dist/utils/diff-algorithm.d.ts.map +0 -1
- package/dist/utils/diff-algorithm.js.map +0 -1
- package/dist/utils/diff-algorithm.test.d.ts +0 -2
- package/dist/utils/diff-algorithm.test.d.ts.map +0 -1
- package/dist/utils/diff-algorithm.test.js +0 -49
- package/dist/utils/diff-algorithm.test.js.map +0 -1
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/fs.d.ts.map +0 -1
- package/dist/utils/fs.js.map +0 -1
- package/dist/utils/fs.test.d.ts +0 -5
- package/dist/utils/fs.test.d.ts.map +0 -1
- package/dist/utils/fs.test.js +0 -82
- package/dist/utils/fs.test.js.map +0 -1
- package/dist/utils/safe-env.d.ts.map +0 -1
- package/dist/utils/safe-env.js.map +0 -1
- package/dist/utils/theme-data.d.ts.map +0 -1
- package/dist/utils/theme-data.js.map +0 -1
- package/dist/utils/theme.d.ts.map +0 -1
- package/dist/utils/theme.js.map +0 -1
- package/dist/utils/tool-summary.d.ts.map +0 -1
- package/dist/utils/tool-summary.js.map +0 -1
- package/dist/utils/tool-summary.test.d.ts +0 -2
- package/dist/utils/tool-summary.test.d.ts.map +0 -1
- package/dist/utils/tool-summary.test.js +0 -93
- package/dist/utils/tool-summary.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -366,6 +366,16 @@ mcpServers:
|
|
|
366
366
|
|
|
367
367
|
MCP tools appear alongside built-in tools. `/status` shows connected servers.
|
|
368
368
|
|
|
369
|
+
**MCP Server Registry** — browse and install from a curated catalog:
|
|
370
|
+
|
|
371
|
+
```
|
|
372
|
+
/mcp-registry # browse all available servers
|
|
373
|
+
/mcp-registry github # show install config for a specific server
|
|
374
|
+
/mcp-registry database # search by category
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Categories: filesystem, git, database, api, search, productivity, dev-tools, ai.
|
|
378
|
+
|
|
369
379
|
## Git Integration
|
|
370
380
|
|
|
371
381
|
OpenHarness auto-commits AI edits in git repos:
|
|
@@ -460,6 +470,9 @@ Dispatch specialized sub-agents for focused tasks:
|
|
|
460
470
|
| `refactorer` | Simplify code without changing behavior | All file tools + Bash |
|
|
461
471
|
| `security-auditor` | OWASP, injection, secrets, CVE scanning | Read-only + Bash |
|
|
462
472
|
| `evaluator` | Evaluate code quality and run tests (read-only) | Read-only + Bash + Diagnostics |
|
|
473
|
+
| `planner` | Design step-by-step implementation plans | Read-only + Bash |
|
|
474
|
+
| `architect` | Analyze architecture and design structural changes | Read-only |
|
|
475
|
+
| `migrator` | Systematic codebase migrations and upgrades | All file tools + Bash |
|
|
463
476
|
|
|
464
477
|
Each role restricts the sub-agent to only its suggested tools. You can also pass `allowed_tools` explicitly:
|
|
465
478
|
|
package/dist/agents/roles.js
CHANGED
|
@@ -114,6 +114,48 @@ Report findings with severity (Critical/High/Medium/Low), affected file:line, an
|
|
|
114
114
|
You CANNOT modify files. Only read, search, and run test/lint commands to evaluate.`,
|
|
115
115
|
suggestedTools: ['Read', 'Glob', 'Grep', 'LS', 'Bash', 'Diagnostics'],
|
|
116
116
|
},
|
|
117
|
+
{
|
|
118
|
+
id: 'planner',
|
|
119
|
+
name: 'Planner',
|
|
120
|
+
description: 'Designs step-by-step implementation plans from requirements',
|
|
121
|
+
systemPromptSupplement: `You are a planning agent. Your job is to:
|
|
122
|
+
- Read the codebase to understand architecture, patterns, and conventions
|
|
123
|
+
- Design a detailed step-by-step implementation plan for the given task
|
|
124
|
+
- Identify files to create, modify, or delete with specific change descriptions
|
|
125
|
+
- Flag risks, dependencies, and the recommended implementation order
|
|
126
|
+
- Estimate scope (number of files, complexity)
|
|
127
|
+
|
|
128
|
+
Do NOT implement anything. Your output is a plan document, not code. Read widely before planning.`,
|
|
129
|
+
suggestedTools: ['Read', 'Glob', 'Grep', 'LS', 'Bash'],
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
id: 'architect',
|
|
133
|
+
name: 'Architect',
|
|
134
|
+
description: 'Analyzes system architecture and designs structural changes',
|
|
135
|
+
systemPromptSupplement: `You are an architecture agent. Your job is to:
|
|
136
|
+
- Map the current system architecture (modules, dependencies, data flow)
|
|
137
|
+
- Identify architectural patterns and conventions in use
|
|
138
|
+
- Design structural changes that preserve existing patterns
|
|
139
|
+
- Evaluate trade-offs between approaches (performance, maintainability, complexity)
|
|
140
|
+
- Document interfaces, contracts, and integration points
|
|
141
|
+
|
|
142
|
+
Focus on the big picture: module boundaries, data flow, dependency graphs. Leave implementation details to other agents.`,
|
|
143
|
+
suggestedTools: ['Read', 'Glob', 'Grep', 'LS'],
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
id: 'migrator',
|
|
147
|
+
name: 'Migrator',
|
|
148
|
+
description: 'Performs codebase migrations (API upgrades, framework changes, renames)',
|
|
149
|
+
systemPromptSupplement: `You are a migration agent. Your job is to:
|
|
150
|
+
- Identify all occurrences of the pattern/API/convention being migrated
|
|
151
|
+
- Apply changes systematically across all affected files
|
|
152
|
+
- Preserve behavior while updating the implementation
|
|
153
|
+
- Run tests after each batch of changes to catch regressions
|
|
154
|
+
- Handle edge cases and conditional patterns that need manual review
|
|
155
|
+
|
|
156
|
+
Work methodically: search exhaustively, change incrementally, test after each batch. Never leave a migration half-done.`,
|
|
157
|
+
suggestedTools: ['Read', 'Write', 'Edit', 'Glob', 'Grep', 'Bash'],
|
|
158
|
+
},
|
|
117
159
|
];
|
|
118
160
|
/** Get a role by ID */
|
|
119
161
|
export function getRole(id) {
|
package/dist/commands/index.js
CHANGED
|
@@ -27,7 +27,7 @@ register("help", "Show available commands", () => {
|
|
|
27
27
|
const categories = {
|
|
28
28
|
'Session': ['clear', 'compact', 'export', 'history', 'browse', 'resume', 'fork', 'pin', 'unpin'],
|
|
29
29
|
'Git': ['diff', 'undo', 'rewind', 'commit', 'log'],
|
|
30
|
-
'Info': ['help', 'cost', 'status', 'config', 'files', 'model', 'memory', 'doctor', 'context', 'mcp'],
|
|
30
|
+
'Info': ['help', 'cost', 'status', 'config', 'files', 'model', 'memory', 'doctor', 'context', 'mcp', 'mcp-registry'],
|
|
31
31
|
'Settings': ['theme', 'vim', 'companion', 'fast', 'keys'],
|
|
32
32
|
'AI': ['plan', 'review', 'roles'],
|
|
33
33
|
'Pet': ['cybergotchi'],
|
|
@@ -519,14 +519,43 @@ register("context", "Show context window usage breakdown", (_args, ctx) => {
|
|
|
519
519
|
register("mcp", "Show MCP server status", () => {
|
|
520
520
|
const mcp = connectedMcpServers();
|
|
521
521
|
if (mcp.length === 0) {
|
|
522
|
-
return { output: "No MCP servers connected.\nConfigure in .oh/config.yaml under mcpServers.", handled: true };
|
|
522
|
+
return { output: "No MCP servers connected.\nConfigure in .oh/config.yaml under mcpServers.\nRun /mcp-registry to browse available servers.", handled: true };
|
|
523
523
|
}
|
|
524
524
|
const lines = [`MCP Servers (${mcp.length} connected):\n`];
|
|
525
525
|
for (const name of mcp) {
|
|
526
526
|
lines.push(` ✓ ${name}`);
|
|
527
527
|
}
|
|
528
|
+
lines.push("\nRun /mcp-registry to browse and add more servers.");
|
|
528
529
|
return { output: lines.join("\n"), handled: true };
|
|
529
530
|
});
|
|
531
|
+
register("mcp-registry", "Browse and add MCP servers from the curated registry", (args) => {
|
|
532
|
+
const { searchRegistry, formatRegistry, generateConfigBlock, MCP_REGISTRY } = require('../mcp/registry.js');
|
|
533
|
+
const query = args.trim();
|
|
534
|
+
if (!query) {
|
|
535
|
+
// Show full registry
|
|
536
|
+
const output = `MCP Server Registry (${MCP_REGISTRY.length} servers)\n${'─'.repeat(50)}\n\n${formatRegistry()}\n\nUsage:\n /mcp-registry <name> Show install config for a server\n /mcp-registry <keyword> Search by name, description, or category`;
|
|
537
|
+
return { output, handled: true };
|
|
538
|
+
}
|
|
539
|
+
// Search or show specific server
|
|
540
|
+
const results = searchRegistry(query);
|
|
541
|
+
if (results.length === 0) {
|
|
542
|
+
return { output: `No MCP servers found matching "${query}".`, handled: true };
|
|
543
|
+
}
|
|
544
|
+
if (results.length === 1) {
|
|
545
|
+
// Show install instructions
|
|
546
|
+
const entry = results[0];
|
|
547
|
+
const config = generateConfigBlock(entry);
|
|
548
|
+
const envNote = entry.envVars?.length
|
|
549
|
+
? `\n\nRequired environment variables:\n${entry.envVars.map((v) => ` - ${v}`).join('\n')}`
|
|
550
|
+
: '';
|
|
551
|
+
return {
|
|
552
|
+
output: `${entry.name} — ${entry.description}\nPackage: ${entry.package}\nRisk: ${entry.riskLevel ?? 'medium'}${envNote}\n\nAdd to .oh/config.yaml under mcpServers:\n\n${config}`,
|
|
553
|
+
handled: true,
|
|
554
|
+
};
|
|
555
|
+
}
|
|
556
|
+
// Multiple results
|
|
557
|
+
return { output: `Found ${results.length} servers:\n\n${formatRegistry(results)}`, handled: true };
|
|
558
|
+
});
|
|
530
559
|
function setPinned(args, ctx, pinned) {
|
|
531
560
|
const idx = parseInt(args.trim(), 10);
|
|
532
561
|
if (isNaN(idx) || idx < 1 || idx > ctx.messages.length) {
|
|
@@ -13,6 +13,14 @@ export type Session = {
|
|
|
13
13
|
gitBranch?: string;
|
|
14
14
|
workingDir?: string;
|
|
15
15
|
tools?: string[];
|
|
16
|
+
/** Hibernate state — saved on exit for wake reconstruction */
|
|
17
|
+
hibernate?: {
|
|
18
|
+
summary?: string;
|
|
19
|
+
lastUserMessage?: string;
|
|
20
|
+
pendingTask?: string;
|
|
21
|
+
totalInputTokens?: number;
|
|
22
|
+
totalOutputTokens?: number;
|
|
23
|
+
};
|
|
16
24
|
};
|
|
17
25
|
export declare function createSession(provider: string, model: string, extras?: {
|
|
18
26
|
gitBranch?: string;
|
|
@@ -30,6 +38,17 @@ export declare function listSessions(dir?: string): Array<{
|
|
|
30
38
|
}>;
|
|
31
39
|
/** Returns the ID of the most recently updated session, or null if none exist. */
|
|
32
40
|
export declare function getLastSessionId(dir?: string): string | null;
|
|
41
|
+
/**
|
|
42
|
+
* Build hibernate state from the current session.
|
|
43
|
+
* Captures the last user message, recent assistant activity,
|
|
44
|
+
* and a brief summary for context reconstruction on wake.
|
|
45
|
+
*/
|
|
46
|
+
export declare function buildHibernateState(messages: Message[]): Session['hibernate'];
|
|
47
|
+
/**
|
|
48
|
+
* Generate a wake-up context message for a resumed session.
|
|
49
|
+
* Tells the LLM what happened in the previous session.
|
|
50
|
+
*/
|
|
51
|
+
export declare function buildWakeContext(session: Session): string;
|
|
33
52
|
/**
|
|
34
53
|
* Evict oldest sessions when count exceeds MAX_SESSIONS.
|
|
35
54
|
* Called automatically by saveSession.
|
package/dist/harness/session.js
CHANGED
|
@@ -72,6 +72,59 @@ export function getLastSessionId(dir) {
|
|
|
72
72
|
const sessions = listSessions(dir);
|
|
73
73
|
return sessions.length > 0 ? sessions[0].id : null;
|
|
74
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Build hibernate state from the current session.
|
|
77
|
+
* Captures the last user message, recent assistant activity,
|
|
78
|
+
* and a brief summary for context reconstruction on wake.
|
|
79
|
+
*/
|
|
80
|
+
export function buildHibernateState(messages) {
|
|
81
|
+
if (messages.length === 0)
|
|
82
|
+
return undefined;
|
|
83
|
+
// Find last user message
|
|
84
|
+
const lastUser = [...messages].reverse().find(m => m.role === 'user');
|
|
85
|
+
const lastAssistant = [...messages].reverse().find(m => m.role === 'assistant');
|
|
86
|
+
// Build a brief summary from the last few exchanges
|
|
87
|
+
const recentMsgs = messages.slice(-6);
|
|
88
|
+
const summaryParts = [];
|
|
89
|
+
for (const m of recentMsgs) {
|
|
90
|
+
if (m.role === 'user') {
|
|
91
|
+
summaryParts.push(`User: ${m.content.slice(0, 100)}`);
|
|
92
|
+
}
|
|
93
|
+
else if (m.role === 'assistant' && m.content) {
|
|
94
|
+
summaryParts.push(`Assistant: ${m.content.slice(0, 100)}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
lastUserMessage: lastUser?.content.slice(0, 200),
|
|
99
|
+
pendingTask: lastAssistant?.content.slice(0, 200),
|
|
100
|
+
summary: summaryParts.join('\n'),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Generate a wake-up context message for a resumed session.
|
|
105
|
+
* Tells the LLM what happened in the previous session.
|
|
106
|
+
*/
|
|
107
|
+
export function buildWakeContext(session) {
|
|
108
|
+
const parts = ['[Session Resumed]'];
|
|
109
|
+
if (session.workingDir) {
|
|
110
|
+
parts.push(`Previous working directory: ${session.workingDir}`);
|
|
111
|
+
if (session.workingDir !== process.cwd()) {
|
|
112
|
+
parts.push(`WARNING: Working directory changed! Was: ${session.workingDir}, Now: ${process.cwd()}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (session.gitBranch) {
|
|
116
|
+
parts.push(`Previous git branch: ${session.gitBranch}`);
|
|
117
|
+
}
|
|
118
|
+
if (session.hibernate?.summary) {
|
|
119
|
+
parts.push(`\nPrevious session context:\n${session.hibernate.summary}`);
|
|
120
|
+
}
|
|
121
|
+
if (session.hibernate?.lastUserMessage) {
|
|
122
|
+
parts.push(`\nLast user request: ${session.hibernate.lastUserMessage}`);
|
|
123
|
+
}
|
|
124
|
+
parts.push(`\nSession has ${session.messages.length} messages and cost $${session.totalCost.toFixed(4)} so far.`);
|
|
125
|
+
parts.push('Continue where you left off. If the user\'s last request was incomplete, acknowledge that and ask how to proceed.');
|
|
126
|
+
return parts.join('\n');
|
|
127
|
+
}
|
|
75
128
|
/** Maximum number of sessions to keep on disk. */
|
|
76
129
|
const MAX_SESSIONS = 100;
|
|
77
130
|
/**
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Registry — curated list of compatible MCP servers.
|
|
3
|
+
*
|
|
4
|
+
* Provides a browsable catalog of MCP servers that users can add
|
|
5
|
+
* to their .oh/config.yaml with a single command.
|
|
6
|
+
*/
|
|
7
|
+
export type McpRegistryEntry = {
|
|
8
|
+
name: string;
|
|
9
|
+
package: string;
|
|
10
|
+
description: string;
|
|
11
|
+
category: 'filesystem' | 'git' | 'database' | 'api' | 'search' | 'productivity' | 'dev-tools' | 'ai';
|
|
12
|
+
args?: string[];
|
|
13
|
+
envVars?: string[];
|
|
14
|
+
riskLevel?: 'low' | 'medium' | 'high';
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Curated registry of popular MCP servers.
|
|
18
|
+
* Each entry has enough info to generate the config.yaml block.
|
|
19
|
+
*/
|
|
20
|
+
export declare const MCP_REGISTRY: McpRegistryEntry[];
|
|
21
|
+
/** Search the registry by name or keyword */
|
|
22
|
+
export declare function searchRegistry(query: string): McpRegistryEntry[];
|
|
23
|
+
/** Get all entries in a category */
|
|
24
|
+
export declare function getByCategory(category: McpRegistryEntry['category']): McpRegistryEntry[];
|
|
25
|
+
/** Get all unique categories */
|
|
26
|
+
export declare function getCategories(): string[];
|
|
27
|
+
/** Generate the config.yaml block for a registry entry */
|
|
28
|
+
export declare function generateConfigBlock(entry: McpRegistryEntry): string;
|
|
29
|
+
/** Format registry as a browsable list */
|
|
30
|
+
export declare function formatRegistry(entries?: McpRegistryEntry[]): string;
|
|
31
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Registry — curated list of compatible MCP servers.
|
|
3
|
+
*
|
|
4
|
+
* Provides a browsable catalog of MCP servers that users can add
|
|
5
|
+
* to their .oh/config.yaml with a single command.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Curated registry of popular MCP servers.
|
|
9
|
+
* Each entry has enough info to generate the config.yaml block.
|
|
10
|
+
*/
|
|
11
|
+
export const MCP_REGISTRY = [
|
|
12
|
+
// ── Filesystem ──
|
|
13
|
+
{
|
|
14
|
+
name: 'filesystem',
|
|
15
|
+
package: '@modelcontextprotocol/server-filesystem',
|
|
16
|
+
description: 'Read, write, and manage files on the local filesystem',
|
|
17
|
+
category: 'filesystem',
|
|
18
|
+
args: ['/tmp'],
|
|
19
|
+
riskLevel: 'medium',
|
|
20
|
+
},
|
|
21
|
+
// ── Git & GitHub ──
|
|
22
|
+
{
|
|
23
|
+
name: 'github',
|
|
24
|
+
package: '@modelcontextprotocol/server-github',
|
|
25
|
+
description: 'GitHub API — issues, PRs, repos, code search',
|
|
26
|
+
category: 'git',
|
|
27
|
+
envVars: ['GITHUB_PERSONAL_ACCESS_TOKEN'],
|
|
28
|
+
riskLevel: 'medium',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'gitlab',
|
|
32
|
+
package: '@modelcontextprotocol/server-gitlab',
|
|
33
|
+
description: 'GitLab API — issues, merge requests, pipelines',
|
|
34
|
+
category: 'git',
|
|
35
|
+
envVars: ['GITLAB_PERSONAL_ACCESS_TOKEN', 'GITLAB_API_URL'],
|
|
36
|
+
riskLevel: 'medium',
|
|
37
|
+
},
|
|
38
|
+
// ── Database ──
|
|
39
|
+
{
|
|
40
|
+
name: 'sqlite',
|
|
41
|
+
package: '@modelcontextprotocol/server-sqlite',
|
|
42
|
+
description: 'Query and modify SQLite databases',
|
|
43
|
+
category: 'database',
|
|
44
|
+
args: ['./database.sqlite'],
|
|
45
|
+
riskLevel: 'medium',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'postgres',
|
|
49
|
+
package: '@modelcontextprotocol/server-postgres',
|
|
50
|
+
description: 'Query PostgreSQL databases (read-only by default)',
|
|
51
|
+
category: 'database',
|
|
52
|
+
envVars: ['POSTGRES_CONNECTION_STRING'],
|
|
53
|
+
riskLevel: 'medium',
|
|
54
|
+
},
|
|
55
|
+
// ── Search & Web ──
|
|
56
|
+
{
|
|
57
|
+
name: 'brave-search',
|
|
58
|
+
package: '@modelcontextprotocol/server-brave-search',
|
|
59
|
+
description: 'Web search via Brave Search API',
|
|
60
|
+
category: 'search',
|
|
61
|
+
envVars: ['BRAVE_API_KEY'],
|
|
62
|
+
riskLevel: 'low',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'fetch',
|
|
66
|
+
package: '@modelcontextprotocol/server-fetch',
|
|
67
|
+
description: 'Fetch and parse web pages, convert HTML to markdown',
|
|
68
|
+
category: 'search',
|
|
69
|
+
riskLevel: 'low',
|
|
70
|
+
},
|
|
71
|
+
// ── Productivity ──
|
|
72
|
+
{
|
|
73
|
+
name: 'slack',
|
|
74
|
+
package: '@modelcontextprotocol/server-slack',
|
|
75
|
+
description: 'Read and send Slack messages, list channels',
|
|
76
|
+
category: 'productivity',
|
|
77
|
+
envVars: ['SLACK_BOT_TOKEN'],
|
|
78
|
+
riskLevel: 'high',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'google-drive',
|
|
82
|
+
package: '@anthropic/mcp-server-google-drive',
|
|
83
|
+
description: 'Search and read Google Drive documents',
|
|
84
|
+
category: 'productivity',
|
|
85
|
+
envVars: ['GOOGLE_DRIVE_CREDENTIALS'],
|
|
86
|
+
riskLevel: 'medium',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'linear',
|
|
90
|
+
package: '@anthropic/mcp-server-linear',
|
|
91
|
+
description: 'Linear issue tracker — create, update, search issues',
|
|
92
|
+
category: 'productivity',
|
|
93
|
+
envVars: ['LINEAR_API_KEY'],
|
|
94
|
+
riskLevel: 'medium',
|
|
95
|
+
},
|
|
96
|
+
// ── Dev Tools ──
|
|
97
|
+
{
|
|
98
|
+
name: 'docker',
|
|
99
|
+
package: '@modelcontextprotocol/server-docker',
|
|
100
|
+
description: 'Manage Docker containers, images, and volumes',
|
|
101
|
+
category: 'dev-tools',
|
|
102
|
+
riskLevel: 'high',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'puppeteer',
|
|
106
|
+
package: '@modelcontextprotocol/server-puppeteer',
|
|
107
|
+
description: 'Browser automation — navigate, screenshot, interact with web pages',
|
|
108
|
+
category: 'dev-tools',
|
|
109
|
+
riskLevel: 'medium',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: 'memory',
|
|
113
|
+
package: '@modelcontextprotocol/server-memory',
|
|
114
|
+
description: 'Persistent knowledge graph for long-term memory',
|
|
115
|
+
category: 'ai',
|
|
116
|
+
riskLevel: 'low',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'sequential-thinking',
|
|
120
|
+
package: '@modelcontextprotocol/server-sequential-thinking',
|
|
121
|
+
description: 'Step-by-step reasoning and chain-of-thought tools',
|
|
122
|
+
category: 'ai',
|
|
123
|
+
riskLevel: 'low',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: 'context7',
|
|
127
|
+
package: '@anthropic/mcp-server-context7',
|
|
128
|
+
description: 'Fetch up-to-date library documentation for any framework',
|
|
129
|
+
category: 'dev-tools',
|
|
130
|
+
riskLevel: 'low',
|
|
131
|
+
},
|
|
132
|
+
];
|
|
133
|
+
/** Search the registry by name or keyword */
|
|
134
|
+
export function searchRegistry(query) {
|
|
135
|
+
const q = query.toLowerCase();
|
|
136
|
+
return MCP_REGISTRY.filter(e => e.name.includes(q) ||
|
|
137
|
+
e.description.toLowerCase().includes(q) ||
|
|
138
|
+
e.category.includes(q) ||
|
|
139
|
+
e.package.toLowerCase().includes(q));
|
|
140
|
+
}
|
|
141
|
+
/** Get all entries in a category */
|
|
142
|
+
export function getByCategory(category) {
|
|
143
|
+
return MCP_REGISTRY.filter(e => e.category === category);
|
|
144
|
+
}
|
|
145
|
+
/** Get all unique categories */
|
|
146
|
+
export function getCategories() {
|
|
147
|
+
return [...new Set(MCP_REGISTRY.map(e => e.category))];
|
|
148
|
+
}
|
|
149
|
+
/** Generate the config.yaml block for a registry entry */
|
|
150
|
+
export function generateConfigBlock(entry) {
|
|
151
|
+
const lines = [
|
|
152
|
+
` - name: ${entry.name}`,
|
|
153
|
+
` command: npx`,
|
|
154
|
+
` args: ["-y", "${entry.package}"${entry.args ? ', ' + entry.args.map(a => `"${a}"`).join(', ') : ''}]`,
|
|
155
|
+
];
|
|
156
|
+
if (entry.envVars && entry.envVars.length > 0) {
|
|
157
|
+
lines.push(' env:');
|
|
158
|
+
for (const v of entry.envVars) {
|
|
159
|
+
lines.push(` ${v}: "YOUR_${v}"`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (entry.riskLevel && entry.riskLevel !== 'medium') {
|
|
163
|
+
lines.push(` riskLevel: ${entry.riskLevel}`);
|
|
164
|
+
}
|
|
165
|
+
return lines.join('\n');
|
|
166
|
+
}
|
|
167
|
+
/** Format registry as a browsable list */
|
|
168
|
+
export function formatRegistry(entries) {
|
|
169
|
+
const list = entries ?? MCP_REGISTRY;
|
|
170
|
+
const categories = [...new Set(list.map(e => e.category))];
|
|
171
|
+
const sections = [];
|
|
172
|
+
for (const cat of categories) {
|
|
173
|
+
const catEntries = list.filter(e => e.category === cat);
|
|
174
|
+
const header = cat.charAt(0).toUpperCase() + cat.slice(1).replace('-', ' ');
|
|
175
|
+
const rows = catEntries.map(e => ` ${e.name.padEnd(20)} ${e.description}${e.envVars ? ' [requires: ' + e.envVars.join(', ') + ']' : ''}`);
|
|
176
|
+
sections.push(`${header}:\n${rows.join('\n')}`);
|
|
177
|
+
}
|
|
178
|
+
return sections.join('\n\n');
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=registry.js.map
|
package/dist/repl.js
CHANGED
|
@@ -48,6 +48,13 @@ export async function startREPL(config) {
|
|
|
48
48
|
catch {
|
|
49
49
|
session = createSession(config.provider.name, config.model ?? '', sessionExtras);
|
|
50
50
|
}
|
|
51
|
+
// Wake context: inject session summary when resuming
|
|
52
|
+
if (config.resumeSessionId && session.hibernate) {
|
|
53
|
+
const { buildWakeContext } = await import('./harness/session.js');
|
|
54
|
+
const wakeMsg = buildWakeContext(session);
|
|
55
|
+
const { createInfoMessage } = await import('./types/message.js');
|
|
56
|
+
session.messages.push(createInfoMessage(wakeMsg));
|
|
57
|
+
}
|
|
51
58
|
// Initialize checkpoints for file rewind
|
|
52
59
|
const { initCheckpoints } = await import('./harness/checkpoints.js');
|
|
53
60
|
initCheckpoints(session.id);
|
|
@@ -602,6 +609,12 @@ export async function startREPL(config) {
|
|
|
602
609
|
renderer.setError(null);
|
|
603
610
|
// Exit
|
|
604
611
|
if (input === 'exit' || input === 'quit' || input === '/exit' || input === '/quit' || input === '/q') {
|
|
612
|
+
// Hibernate: save session state for potential wake-up resume
|
|
613
|
+
try {
|
|
614
|
+
const { buildHibernateState } = await import('./harness/session.js');
|
|
615
|
+
session.hibernate = buildHibernateState(messages);
|
|
616
|
+
}
|
|
617
|
+
catch { /* ignore */ }
|
|
605
618
|
// Dream consolidation: prune stale memories before exit
|
|
606
619
|
try {
|
|
607
620
|
const { consolidateMemories } = await import('./harness/memory.js');
|
|
@@ -199,7 +199,7 @@ export const AgentTool = {
|
|
|
199
199
|
- isolated (boolean, optional): Whether to use git worktree isolation (default: true if in a git repo).
|
|
200
200
|
- run_in_background (boolean, optional): Run the agent in the background. Returns immediately; you will be notified when it completes.
|
|
201
201
|
- model (string, optional): Override the model for this sub-agent (e.g., use a faster model for exploration).
|
|
202
|
-
- subagent_type (string, optional): Specialize the agent behavior. Types: "Explore" (read-only codebase search), "Plan" (design implementation plans), "code-reviewer"
|
|
202
|
+
- subagent_type (string, optional): Specialize the agent behavior. Types: "Explore" (read-only codebase search), "Plan" (design implementation plans), "code-reviewer", "test-writer", "debugger", "refactorer", "security-auditor", "evaluator" (read-only evaluation), "planner" (implementation plans), "architect" (system design), "migrator" (codebase migrations).
|
|
203
203
|
- allowed_tools (string[], optional): Restrict the sub-agent to only these tools by name. If omitted and a role has suggested tools, those are used.`;
|
|
204
204
|
},
|
|
205
205
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhijiewang/openharness",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.1",
|
|
4
4
|
"description": "Open-source terminal coding agent. Works with any LLM.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -9,7 +9,10 @@
|
|
|
9
9
|
},
|
|
10
10
|
"main": "./dist/main.js",
|
|
11
11
|
"files": [
|
|
12
|
-
"dist",
|
|
12
|
+
"dist/**/*.js",
|
|
13
|
+
"dist/**/*.d.ts",
|
|
14
|
+
"!dist/**/*.test.*",
|
|
15
|
+
"!dist/**/test-helpers.*",
|
|
13
16
|
"README.md",
|
|
14
17
|
"LICENSE"
|
|
15
18
|
],
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeferredTool.d.ts","sourceRoot":"","sources":["../src/DeferredTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,qBAAa,YAAa,YAAW,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,UAAU,CAAS;gBAEf,IAAI,EAAE,IAAI;IAStB,gEAAgE;IAChE,IAAI,SAAS,IAAI,OAAO,CAA4B;IAEpD,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAInC,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAIpC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAajE,+DAA+D;IAC/D,MAAM,IAAI,MAAM;IAKhB,0DAA0D;IAC1D,QAAQ,IAAI,IAAI;IAIhB,4EAA4E;IAC5E,QAAQ,IAAI,IAAI;CAGjB"}
|
package/dist/DeferredTool.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeferredTool.js","sourceRoot":"","sources":["../src/DeferredTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,OAAO,YAAY;IACd,IAAI,CAAS;IACb,WAAW,CAAS;IACpB,WAAW,CAAY;IACvB,SAAS,CAAY;IAEtB,KAAK,CAAO;IACZ,UAAU,GAAG,KAAK,CAAC;IAE3B,YAAY,IAAU;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,yDAAyD;QACzD,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,gEAAgE;IAChE,IAAI,SAAS,KAAc,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEpD,UAAU,CAAC,KAAc;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,iBAAiB,CAAC,KAAc;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAU,EAAE,OAAoB;QACzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,gCAAgC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,MAAM,EAAE,4BAA4B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC1D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,+DAA+D;IAC/D,MAAM;QACJ,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChD,OAAO,cAAc,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;IACxD,CAAC;IAED,0DAA0D;IAC1D,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,4EAA4E;IAC5E,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeferredTool.test.d.ts","sourceRoot":"","sources":["../src/DeferredTool.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { describe, it } from 'node:test';
|
|
2
|
-
import assert from 'node:assert/strict';
|
|
3
|
-
import { createMockTool } from './test-helpers.js';
|
|
4
|
-
import { DeferredTool } from './DeferredTool.js';
|
|
5
|
-
describe('DeferredTool', () => {
|
|
6
|
-
it('wraps a tool with correct name and description', () => {
|
|
7
|
-
const inner = createMockTool('TestTool');
|
|
8
|
-
const deferred = new DeferredTool(inner);
|
|
9
|
-
assert.equal(deferred.name, 'TestTool');
|
|
10
|
-
assert.equal(deferred.description, inner.description);
|
|
11
|
-
assert.equal(deferred.riskLevel, inner.riskLevel);
|
|
12
|
-
});
|
|
13
|
-
it('returns deferred prompt before activation', () => {
|
|
14
|
-
const inner = createMockTool('TestTool');
|
|
15
|
-
const deferred = new DeferredTool(inner);
|
|
16
|
-
const prompt = deferred.prompt();
|
|
17
|
-
assert.ok(prompt.startsWith('[deferred]'));
|
|
18
|
-
assert.ok(prompt.includes('TestTool'));
|
|
19
|
-
});
|
|
20
|
-
it('returns full prompt after activation', () => {
|
|
21
|
-
const inner = createMockTool('TestTool');
|
|
22
|
-
const deferred = new DeferredTool(inner);
|
|
23
|
-
deferred.activate();
|
|
24
|
-
assert.equal(deferred.prompt(), inner.prompt());
|
|
25
|
-
});
|
|
26
|
-
it('is not activated by default', () => {
|
|
27
|
-
const inner = createMockTool('TestTool');
|
|
28
|
-
const deferred = new DeferredTool(inner);
|
|
29
|
-
assert.equal(deferred.activated, false);
|
|
30
|
-
});
|
|
31
|
-
it('activates on call()', async () => {
|
|
32
|
-
const inner = createMockTool('TestTool');
|
|
33
|
-
const deferred = new DeferredTool(inner);
|
|
34
|
-
assert.equal(deferred.activated, false);
|
|
35
|
-
const result = await deferred.call({ input: 'test' }, { workingDir: '/tmp' });
|
|
36
|
-
assert.equal(deferred.activated, true);
|
|
37
|
-
assert.equal(result.isError, false);
|
|
38
|
-
assert.ok(result.output.includes('TestTool'));
|
|
39
|
-
});
|
|
40
|
-
it('activates via activate() method', () => {
|
|
41
|
-
const inner = createMockTool('TestTool');
|
|
42
|
-
const deferred = new DeferredTool(inner);
|
|
43
|
-
deferred.activate();
|
|
44
|
-
assert.equal(deferred.activated, true);
|
|
45
|
-
});
|
|
46
|
-
it('returns full prompt after call()', async () => {
|
|
47
|
-
const inner = createMockTool('TestTool');
|
|
48
|
-
const deferred = new DeferredTool(inner);
|
|
49
|
-
await deferred.call({ input: 'test' }, { workingDir: '/tmp' });
|
|
50
|
-
assert.equal(deferred.prompt(), inner.prompt());
|
|
51
|
-
});
|
|
52
|
-
it('validates input against inner schema and returns error', async () => {
|
|
53
|
-
const inner = createMockTool('TestTool');
|
|
54
|
-
const deferred = new DeferredTool(inner);
|
|
55
|
-
// Inner schema expects { input?: string }, pass something wildly wrong
|
|
56
|
-
// Since z.object({ input: z.string().optional() }) is permissive,
|
|
57
|
-
// we pass a valid object and check it works
|
|
58
|
-
const result = await deferred.call({ input: 'valid' }, { workingDir: '/tmp' });
|
|
59
|
-
assert.equal(result.isError, false);
|
|
60
|
-
});
|
|
61
|
-
it('exposes inner tool via getInner()', () => {
|
|
62
|
-
const inner = createMockTool('TestTool');
|
|
63
|
-
const deferred = new DeferredTool(inner);
|
|
64
|
-
assert.equal(deferred.getInner(), inner);
|
|
65
|
-
});
|
|
66
|
-
it('delegates isReadOnly to inner tool', () => {
|
|
67
|
-
const readOnly = createMockTool('ReadOnly', { readOnly: true });
|
|
68
|
-
const writable = createMockTool('Writable', { readOnly: false });
|
|
69
|
-
assert.equal(new DeferredTool(readOnly).isReadOnly({}), true);
|
|
70
|
-
assert.equal(new DeferredTool(writable).isReadOnly({}), false);
|
|
71
|
-
});
|
|
72
|
-
it('delegates isConcurrencySafe to inner tool', () => {
|
|
73
|
-
const safe = createMockTool('Safe', { concurrent: true });
|
|
74
|
-
const unsafe = createMockTool('Unsafe', { concurrent: false });
|
|
75
|
-
assert.equal(new DeferredTool(safe).isConcurrencySafe({}), true);
|
|
76
|
-
assert.equal(new DeferredTool(unsafe).isConcurrencySafe({}), false);
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
//# sourceMappingURL=DeferredTool.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeferredTool.test.js","sourceRoot":"","sources":["../src/DeferredTool.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,uEAAuE;QACvE,kEAAkE;QAClE,4CAA4C;QAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/Tool.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tool.d.ts","sourceRoot":"","sources":["../src/Tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,gDAAgD;IAChD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,iEAAiE;IACjE,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7E,CAAC;AAEF,MAAM,MAAM,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B,8DAA8D;IAC9D,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IAE3C,8DAA8D;IAC9D,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IAElD,wBAAwB;IACxB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvE,mDAAmD;IACnD,MAAM,IAAI,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;AAE3B;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG;IAC3C,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;CACtE,CASA;AA4CD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAO3E"}
|
package/dist/Tool.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tool.js","sourceRoot":"","sources":["../src/Tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgDH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAU;IAIxC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;YAC1B,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;SAC9C;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,MAAiB;IACxC,wDAAwD;IACxD,MAAM,GAAG,GAAI,MAAc,CAAC,IAAI,CAAC;IAEjC,IAAI,GAAG,EAAE,QAAQ,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,KAAK,GAAI,MAA2B,CAAC,KAAK,CAAC;QACjD,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,KAAkB,CAAC;YACjC,MAAM,QAAQ,GAAI,KAAa,CAAC,IAAI,CAAC;YAErC,IAAI,QAAQ,EAAE,QAAQ,KAAK,aAAa,EAAE,CAAC;gBACzC,UAAU,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBACzC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;YAED,6BAA6B;YAC7B,IAAK,KAAa,CAAC,WAAW,EAAE,CAAC;gBAC9B,UAAU,CAAC,GAAG,CAAS,CAAC,WAAW,GAAI,KAAa,CAAC,WAAW,CAAC;YACpE,CAAC;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,GAAG,EAAE,QAAQ,KAAK,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC7D,IAAI,GAAG,EAAE,QAAQ,KAAK,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC7D,IAAI,GAAG,EAAE,QAAQ,KAAK,YAAY;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC/D,IAAI,GAAG,EAAE,QAAQ,KAAK,UAAU;QAC9B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAE7D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,WAAW;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,IAAY;IACvD,oBAAoB;IACpB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACjD,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,4BAA4B;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/Tool.test.d.ts
DELETED
package/dist/Tool.test.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tool.test.d.ts","sourceRoot":"","sources":["../src/Tool.test.ts"],"names":[],"mappings":""}
|