indusagi 0.12.18 → 0.12.20
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 +17 -37
- package/dist/agent/agent-loop.d.ts +3 -9
- package/dist/agent/agent-loop.d.ts.map +1 -1
- package/dist/agent/agent-loop.js +19 -58
- package/dist/agent/agent-loop.js.map +1 -1
- package/dist/agent/agent.d.ts +9 -10
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +182 -129
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/error-handler.d.ts.map +1 -1
- package/dist/agent/error-handler.js.map +1 -1
- package/dist/agent/event-bus.d.ts.map +1 -1
- package/dist/agent/event-bus.js +1 -3
- package/dist/agent/event-bus.js.map +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +0 -6
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/messages.d.ts +1 -1
- package/dist/agent/messages.d.ts.map +1 -1
- package/dist/agent/proxy.d.ts +1 -14
- package/dist/agent/proxy.d.ts.map +1 -1
- package/dist/agent/proxy.js +67 -148
- package/dist/agent/proxy.js.map +1 -1
- package/dist/agent/session-manager.d.ts +10 -10
- package/dist/agent/session-manager.d.ts.map +1 -1
- package/dist/agent/session-manager.js +20 -16
- package/dist/agent/session-manager.js.map +1 -1
- package/dist/agent/state-manager.d.ts +1 -1
- package/dist/agent/state-manager.d.ts.map +1 -1
- package/dist/agent/state-manager.js +1 -0
- package/dist/agent/state-manager.js.map +1 -1
- package/dist/agent/telemetry.d.ts.map +1 -1
- package/dist/agent/telemetry.js +1 -3
- package/dist/agent/telemetry.js.map +1 -1
- package/dist/agent/tools/bash.d.ts.map +1 -1
- package/dist/agent/tools/bash.js +143 -118
- package/dist/agent/tools/bash.js.map +1 -1
- package/dist/agent/tools/edit-diff.d.ts +1 -1
- package/dist/agent/tools/edit-diff.d.ts.map +1 -1
- package/dist/agent/tools/edit-diff.js +189 -175
- package/dist/agent/tools/edit-diff.js.map +1 -1
- package/dist/agent/tools/edit.d.ts.map +1 -1
- package/dist/agent/tools/edit.js +137 -121
- package/dist/agent/tools/edit.js.map +1 -1
- package/dist/agent/tools/find.d.ts.map +1 -1
- package/dist/agent/tools/find.js +100 -65
- package/dist/agent/tools/find.js.map +1 -1
- package/dist/agent/tools/grep.d.ts.map +1 -1
- package/dist/agent/tools/grep.js +126 -97
- package/dist/agent/tools/grep.js.map +1 -1
- package/dist/agent/tools/index.d.ts +53 -40
- package/dist/agent/tools/index.d.ts.map +1 -1
- package/dist/agent/tools/index.js +19 -12
- package/dist/agent/tools/index.js.map +1 -1
- package/dist/agent/tools/ls.d.ts +2 -1
- package/dist/agent/tools/ls.d.ts.map +1 -1
- package/dist/agent/tools/ls.js +145 -94
- package/dist/agent/tools/ls.js.map +1 -1
- package/dist/agent/tools/path-utils.d.ts.map +1 -1
- package/dist/agent/tools/path-utils.js +48 -29
- package/dist/agent/tools/path-utils.js.map +1 -1
- package/dist/agent/tools/process-controller.d.ts +15 -0
- package/dist/agent/tools/process-controller.d.ts.map +1 -0
- package/dist/agent/tools/process-controller.js +39 -0
- package/dist/agent/tools/process-controller.js.map +1 -0
- package/dist/agent/tools/process-manager.d.ts +60 -0
- package/dist/agent/tools/process-manager.d.ts.map +1 -0
- package/dist/agent/tools/process-manager.js +485 -0
- package/dist/agent/tools/process-manager.js.map +1 -0
- package/dist/agent/tools/process-types.d.ts +74 -0
- package/dist/agent/tools/process-types.d.ts.map +1 -0
- package/dist/agent/tools/process-types.js +7 -0
- package/dist/agent/tools/process-types.js.map +1 -0
- package/dist/agent/tools/process.d.ts +38 -0
- package/dist/agent/tools/process.d.ts.map +1 -0
- package/dist/agent/tools/process.js +360 -0
- package/dist/agent/tools/process.js.map +1 -0
- package/dist/agent/tools/read.d.ts.map +1 -1
- package/dist/agent/tools/read.js +157 -135
- package/dist/agent/tools/read.js.map +1 -1
- package/dist/agent/tools/registry.js +2 -4
- package/dist/agent/tools/registry.js.map +1 -1
- package/dist/agent/tools/teams/activity-tracker.d.ts +66 -0
- package/dist/agent/tools/teams/activity-tracker.d.ts.map +1 -0
- package/dist/agent/tools/teams/activity-tracker.js +480 -0
- package/dist/agent/tools/teams/activity-tracker.js.map +1 -0
- package/dist/agent/tools/teams/cleanup.d.ts +51 -0
- package/dist/agent/tools/teams/cleanup.d.ts.map +1 -0
- package/dist/agent/tools/teams/cleanup.js +219 -0
- package/dist/agent/tools/teams/cleanup.js.map +1 -0
- package/dist/agent/tools/teams/fs-lock.d.ts +12 -0
- package/dist/agent/tools/teams/fs-lock.d.ts.map +1 -0
- package/dist/agent/tools/teams/fs-lock.js +74 -0
- package/dist/agent/tools/teams/fs-lock.js.map +1 -0
- package/dist/agent/tools/teams/index.d.ts +12 -0
- package/dist/agent/tools/teams/index.d.ts.map +1 -0
- package/dist/agent/tools/teams/index.js +12 -0
- package/dist/agent/tools/teams/index.js.map +1 -0
- package/dist/agent/tools/teams/mailbox.d.ts +21 -0
- package/dist/agent/tools/teams/mailbox.d.ts.map +1 -0
- package/dist/agent/tools/teams/mailbox.js +106 -0
- package/dist/agent/tools/teams/mailbox.js.map +1 -0
- package/dist/agent/tools/teams/model-policy.d.ts +23 -0
- package/dist/agent/tools/teams/model-policy.d.ts.map +1 -0
- package/dist/agent/tools/teams/model-policy.js +113 -0
- package/dist/agent/tools/teams/model-policy.js.map +1 -0
- package/dist/agent/tools/teams/names.d.ts +28 -0
- package/dist/agent/tools/teams/names.d.ts.map +1 -0
- package/dist/agent/tools/teams/names.js +109 -0
- package/dist/agent/tools/teams/names.js.map +1 -0
- package/dist/agent/tools/teams/protocol.d.ts +75 -0
- package/dist/agent/tools/teams/protocol.d.ts.map +1 -0
- package/dist/agent/tools/teams/protocol.js +205 -0
- package/dist/agent/tools/teams/protocol.js.map +1 -0
- package/dist/agent/tools/teams/task-store.d.ts +89 -0
- package/dist/agent/tools/teams/task-store.d.ts.map +1 -0
- package/dist/agent/tools/teams/task-store.js +445 -0
- package/dist/agent/tools/teams/task-store.js.map +1 -0
- package/dist/agent/tools/teams/team-attach-claim.d.ts +36 -0
- package/dist/agent/tools/teams/team-attach-claim.d.ts.map +1 -0
- package/dist/agent/tools/teams/team-attach-claim.js +144 -0
- package/dist/agent/tools/teams/team-attach-claim.js.map +1 -0
- package/dist/agent/tools/teams/team-config.d.ts +55 -0
- package/dist/agent/tools/teams/team-config.d.ts.map +1 -0
- package/dist/agent/tools/teams/team-config.js +252 -0
- package/dist/agent/tools/teams/team-config.js.map +1 -0
- package/dist/agent/tools/teams/worktree.d.ts +40 -0
- package/dist/agent/tools/teams/worktree.d.ts.map +1 -0
- package/dist/agent/tools/teams/worktree.js +213 -0
- package/dist/agent/tools/teams/worktree.js.map +1 -0
- package/dist/agent/tools/todo-store.js +2 -1
- package/dist/agent/tools/todo-store.js.map +1 -1
- package/dist/agent/tools/todo.d.ts +2 -2
- package/dist/agent/tools/todo.js +2 -2
- package/dist/agent/tools/truncate.d.ts.map +1 -1
- package/dist/agent/tools/truncate.js +150 -134
- package/dist/agent/tools/truncate.js.map +1 -1
- package/dist/agent/tools/utils/hook-runner.d.ts +9 -10
- package/dist/agent/tools/utils/hook-runner.d.ts.map +1 -1
- package/dist/agent/tools/utils/hook-runner.js +18 -16
- package/dist/agent/tools/utils/hook-runner.js.map +1 -1
- package/dist/agent/tools/utils/image-resize.d.ts +1 -14
- package/dist/agent/tools/utils/image-resize.d.ts.map +1 -1
- package/dist/agent/tools/utils/image-resize.js +80 -34
- package/dist/agent/tools/utils/image-resize.js.map +1 -1
- package/dist/agent/tools/utils/mime.d.ts +0 -8
- package/dist/agent/tools/utils/mime.d.ts.map +1 -1
- package/dist/agent/tools/utils/mime.js +43 -32
- package/dist/agent/tools/utils/mime.js.map +1 -1
- package/dist/agent/tools/utils/shell.d.ts +1 -23
- package/dist/agent/tools/utils/shell.d.ts.map +1 -1
- package/dist/agent/tools/utils/shell.js +43 -86
- package/dist/agent/tools/utils/shell.js.map +1 -1
- package/dist/agent/tools/write.d.ts.map +1 -1
- package/dist/agent/tools/write.js +105 -62
- package/dist/agent/tools/write.js.map +1 -1
- package/dist/agent/types.d.ts +69 -64
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +38 -23
- package/dist/agent/types.js.map +1 -1
- package/dist/agent.d.ts +4 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +4 -0
- package/dist/agent.js.map +1 -1
- package/dist/ai/api-registry.d.ts.map +1 -1
- package/dist/ai/api-registry.js +3 -4
- package/dist/ai/api-registry.js.map +1 -1
- package/dist/ai/cli.js +62 -82
- package/dist/ai/cli.js.map +1 -1
- package/dist/ai/env-api-keys.d.ts.map +1 -1
- package/dist/ai/env-api-keys.js +78 -81
- package/dist/ai/env-api-keys.js.map +1 -1
- package/dist/ai/index.d.ts +6 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +6 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/models.d.ts +7 -17
- package/dist/ai/models.d.ts.map +1 -1
- package/dist/ai/models.generated.d.ts +87 -244
- package/dist/ai/models.generated.d.ts.map +1 -1
- package/dist/ai/models.generated.js +82 -241
- package/dist/ai/models.generated.js.map +1 -1
- package/dist/ai/models.js +17 -11
- package/dist/ai/models.js.map +1 -1
- package/dist/ai/providers/amazon-bedrock.d.ts.map +1 -1
- package/dist/ai/providers/amazon-bedrock.js +319 -248
- package/dist/ai/providers/amazon-bedrock.js.map +1 -1
- package/dist/ai/providers/anthropic.d.ts.map +1 -1
- package/dist/ai/providers/anthropic.js +378 -324
- package/dist/ai/providers/anthropic.js.map +1 -1
- package/dist/ai/providers/azure-openai-responses.d.ts.map +1 -1
- package/dist/ai/providers/azure-openai-responses.js +164 -123
- package/dist/ai/providers/azure-openai-responses.js.map +1 -1
- package/dist/ai/providers/google-shared.d.ts +0 -18
- package/dist/ai/providers/google-shared.d.ts.map +1 -1
- package/dist/ai/providers/google-shared.js +224 -225
- package/dist/ai/providers/google-shared.js.map +1 -1
- package/dist/ai/providers/google-vertex.d.ts.map +1 -1
- package/dist/ai/providers/google-vertex.js +244 -226
- package/dist/ai/providers/google-vertex.js.map +1 -1
- package/dist/ai/providers/google.d.ts +3 -0
- package/dist/ai/providers/google.d.ts.map +1 -1
- package/dist/ai/providers/google.js +232 -210
- package/dist/ai/providers/google.js.map +1 -1
- package/dist/ai/providers/kimi.js +1 -0
- package/dist/ai/providers/kimi.js.map +1 -1
- package/dist/ai/providers/mock.d.ts +10 -0
- package/dist/ai/providers/mock.d.ts.map +1 -0
- package/dist/ai/providers/mock.js +64 -0
- package/dist/ai/providers/mock.js.map +1 -0
- package/dist/ai/providers/openai-codex-responses.d.ts.map +1 -1
- package/dist/ai/providers/openai-codex-responses.js +178 -133
- package/dist/ai/providers/openai-codex-responses.js.map +1 -1
- package/dist/ai/providers/openai-completions.d.ts.map +1 -1
- package/dist/ai/providers/openai-completions.js +468 -387
- package/dist/ai/providers/openai-completions.js.map +1 -1
- package/dist/ai/providers/openai-responses-shared.d.ts.map +1 -1
- package/dist/ai/providers/openai-responses-shared.js +187 -166
- package/dist/ai/providers/openai-responses-shared.js.map +1 -1
- package/dist/ai/providers/openai-responses.d.ts.map +1 -1
- package/dist/ai/providers/openai-responses.js +108 -85
- package/dist/ai/providers/openai-responses.js.map +1 -1
- package/dist/ai/providers/openai-scaffold.d.ts +4 -0
- package/dist/ai/providers/openai-scaffold.d.ts.map +1 -0
- package/dist/ai/providers/openai-scaffold.js +33 -0
- package/dist/ai/providers/openai-scaffold.js.map +1 -0
- package/dist/ai/providers/register-builtins.d.ts.map +1 -1
- package/dist/ai/providers/register-builtins.js +109 -42
- package/dist/ai/providers/register-builtins.js.map +1 -1
- package/dist/ai/providers/simple-options.js +2 -0
- package/dist/ai/providers/simple-options.js.map +1 -1
- package/dist/ai/providers/transform-messages.js +3 -9
- package/dist/ai/providers/transform-messages.js.map +1 -1
- package/dist/ai/stream.d.ts +4 -14
- package/dist/ai/stream.d.ts.map +1 -1
- package/dist/ai/stream.js +0 -36
- package/dist/ai/stream.js.map +1 -1
- package/dist/ai/types.d.ts +22 -3
- package/dist/ai/types.d.ts.map +1 -1
- package/dist/ai/types.js +154 -77
- package/dist/ai/types.js.map +1 -1
- package/dist/ai/utils/base-stream-handler.js +1 -0
- package/dist/ai/utils/base-stream-handler.js.map +1 -1
- package/dist/ai/utils/event-stream.d.ts +2 -0
- package/dist/ai/utils/event-stream.d.ts.map +1 -1
- package/dist/ai/utils/event-stream.js +22 -5
- package/dist/ai/utils/event-stream.js.map +1 -1
- package/dist/ai/utils/json-parse.d.ts +3 -0
- package/dist/ai/utils/json-parse.d.ts.map +1 -1
- package/dist/ai/utils/json-parse.js +8 -5
- package/dist/ai/utils/json-parse.js.map +1 -1
- package/dist/ai/utils/oauth/anthropic.d.ts.map +1 -1
- package/dist/ai/utils/oauth/anthropic.js +110 -65
- package/dist/ai/utils/oauth/anthropic.js.map +1 -1
- package/dist/ai/utils/oauth/github-copilot.d.ts +8 -16
- package/dist/ai/utils/oauth/github-copilot.d.ts.map +1 -1
- package/dist/ai/utils/oauth/github-copilot.js +218 -227
- package/dist/ai/utils/oauth/github-copilot.js.map +1 -1
- package/dist/ai/utils/oauth/openai-codex.d.ts +4 -2
- package/dist/ai/utils/oauth/openai-codex.d.ts.map +1 -1
- package/dist/ai/utils/oauth/openai-codex.js +221 -236
- package/dist/ai/utils/oauth/openai-codex.js.map +1 -1
- package/dist/ai/utils/oauth/pkce.d.ts +6 -5
- package/dist/ai/utils/oauth/pkce.d.ts.map +1 -1
- package/dist/ai/utils/oauth/pkce.js +24 -21
- package/dist/ai/utils/oauth/pkce.js.map +1 -1
- package/dist/ai/utils/oauth/types.d.ts +31 -12
- package/dist/ai/utils/oauth/types.d.ts.map +1 -1
- package/dist/ai/utils/oauth/types.js +10 -1
- package/dist/ai/utils/oauth/types.js.map +1 -1
- package/dist/ai/utils/overflow.d.ts.map +1 -1
- package/dist/ai/utils/overflow.js +49 -21
- package/dist/ai/utils/overflow.js.map +1 -1
- package/dist/ai/utils/provider-adapter.js +9 -0
- package/dist/ai/utils/provider-adapter.js.map +1 -1
- package/dist/ai/utils/provider-client-builder.js +1 -1
- package/dist/ai/utils/provider-client-builder.js.map +1 -1
- package/dist/ai/utils/provider-errors.js +2 -0
- package/dist/ai/utils/provider-errors.js.map +1 -1
- package/dist/ai/utils/sanitize-unicode.d.ts +0 -20
- package/dist/ai/utils/sanitize-unicode.d.ts.map +1 -1
- package/dist/ai/utils/sanitize-unicode.js +35 -17
- package/dist/ai/utils/sanitize-unicode.js.map +1 -1
- package/dist/ai/utils/stream-event-helper.js +3 -0
- package/dist/ai/utils/stream-event-helper.js.map +1 -1
- package/dist/ai/utils/stream-handler-types.js +5 -0
- package/dist/ai/utils/stream-handler-types.js.map +1 -1
- package/dist/ai/utils/streaming-state-manager.js +4 -2
- package/dist/ai/utils/streaming-state-manager.js.map +1 -1
- package/dist/ai/utils/typebox-helpers.d.ts +6 -4
- package/dist/ai/utils/typebox-helpers.d.ts.map +1 -1
- package/dist/ai/utils/typebox-helpers.js +25 -7
- package/dist/ai/utils/typebox-helpers.js.map +1 -1
- package/dist/ai/utils/validation.d.ts.map +1 -1
- package/dist/ai/utils/validation.js +67 -34
- package/dist/ai/utils/validation.js.map +1 -1
- package/dist/ai.d.ts +4 -0
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +4 -0
- package/dist/ai.js.map +1 -1
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/client-pool.js +3 -2
- package/dist/mcp/client-pool.js.map +1 -1
- package/dist/mcp/client.js +19 -6
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/config.d.ts +6 -6
- package/dist/mcp/config.js +17 -17
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/errors.js +8 -0
- package/dist/mcp/errors.js.map +1 -1
- package/dist/mcp/index.d.ts +5 -5
- package/dist/mcp/index.js +5 -5
- package/dist/mcp/schema-converter.d.ts +1 -1
- package/dist/mcp/schema-converter.js +1 -1
- package/dist/mcp/server.d.ts +4 -4
- package/dist/mcp/server.js +12 -7
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-factory.d.ts +2 -2
- package/dist/mcp/tool-factory.js +2 -2
- package/dist/mcp.d.ts +0 -4
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +0 -4
- package/dist/mcp.js.map +1 -1
- package/dist/observability.d.ts +2 -0
- package/dist/observability.d.ts.map +1 -0
- package/dist/observability.js +2 -0
- package/dist/observability.js.map +1 -0
- package/dist/tui/autocomplete.d.ts +14 -18
- package/dist/tui/autocomplete.d.ts.map +1 -1
- package/dist/tui/autocomplete.js +290 -402
- package/dist/tui/autocomplete.js.map +1 -1
- package/dist/tui/components/box.d.ts +1 -6
- package/dist/tui/components/box.d.ts.map +1 -1
- package/dist/tui/components/box.js +98 -67
- package/dist/tui/components/box.js.map +1 -1
- package/dist/tui/components/cancellable-loader.d.ts +6 -3
- package/dist/tui/components/cancellable-loader.d.ts.map +1 -1
- package/dist/tui/components/cancellable-loader.js +8 -9
- package/dist/tui/components/cancellable-loader.js.map +1 -1
- package/dist/tui/components/editor.d.ts +18 -0
- package/dist/tui/components/editor.d.ts.map +1 -1
- package/dist/tui/components/editor.js +356 -354
- package/dist/tui/components/editor.js.map +1 -1
- package/dist/tui/components/image.d.ts +2 -0
- package/dist/tui/components/image.d.ts.map +1 -1
- package/dist/tui/components/image.js +79 -37
- package/dist/tui/components/image.js.map +1 -1
- package/dist/tui/components/input.d.ts +4 -8
- package/dist/tui/components/input.d.ts.map +1 -1
- package/dist/tui/components/input.js +236 -232
- package/dist/tui/components/input.js.map +1 -1
- package/dist/tui/components/loader.d.ts +5 -5
- package/dist/tui/components/loader.d.ts.map +1 -1
- package/dist/tui/components/loader.js +22 -19
- package/dist/tui/components/loader.js.map +1 -1
- package/dist/tui/components/markdown.d.ts +2 -32
- package/dist/tui/components/markdown.d.ts.map +1 -1
- package/dist/tui/components/markdown.js +338 -357
- package/dist/tui/components/markdown.js.map +1 -1
- package/dist/tui/components/select-list.d.ts +1 -0
- package/dist/tui/components/select-list.d.ts.map +1 -1
- package/dist/tui/components/select-list.js +83 -82
- package/dist/tui/components/select-list.js.map +1 -1
- package/dist/tui/components/settings-list.d.ts +10 -10
- package/dist/tui/components/settings-list.d.ts.map +1 -1
- package/dist/tui/components/settings-list.js +48 -40
- package/dist/tui/components/settings-list.js.map +1 -1
- package/dist/tui/components/spacer.d.ts +1 -0
- package/dist/tui/components/spacer.d.ts.map +1 -1
- package/dist/tui/components/spacer.js +20 -5
- package/dist/tui/components/spacer.js.map +1 -1
- package/dist/tui/components/text.d.ts.map +1 -1
- package/dist/tui/components/text.js +47 -20
- package/dist/tui/components/text.js.map +1 -1
- package/dist/tui/components/truncated-text.d.ts +8 -4
- package/dist/tui/components/truncated-text.d.ts.map +1 -1
- package/dist/tui/components/truncated-text.js +15 -12
- package/dist/tui/components/truncated-text.js.map +1 -1
- package/dist/tui/editor-component.d.ts +87 -23
- package/dist/tui/editor-component.d.ts.map +1 -1
- package/dist/tui/fuzzy.d.ts.map +1 -1
- package/dist/tui/fuzzy.js +101 -50
- package/dist/tui/fuzzy.js.map +1 -1
- package/dist/tui/keybindings.d.ts +3 -3
- package/dist/tui/keybindings.d.ts.map +1 -1
- package/dist/tui/keybindings.js +137 -111
- package/dist/tui/keybindings.js.map +1 -1
- package/dist/tui/keys.d.ts +46 -43
- package/dist/tui/keys.d.ts.map +1 -1
- package/dist/tui/keys.js +493 -411
- package/dist/tui/keys.js.map +1 -1
- package/dist/tui/stdin-buffer.d.ts.map +1 -1
- package/dist/tui/stdin-buffer.js +162 -159
- package/dist/tui/stdin-buffer.js.map +1 -1
- package/dist/tui/terminal-image.d.ts +10 -5
- package/dist/tui/terminal-image.d.ts.map +1 -1
- package/dist/tui/terminal-image.js +53 -51
- package/dist/tui/terminal-image.js.map +1 -1
- package/dist/tui/terminal.d.ts +4 -27
- package/dist/tui/terminal.d.ts.map +1 -1
- package/dist/tui/terminal.js +123 -121
- package/dist/tui/terminal.js.map +1 -1
- package/dist/tui/tui.d.ts +14 -1
- package/dist/tui/tui.d.ts.map +1 -1
- package/dist/tui/tui.js +185 -145
- package/dist/tui/tui.js.map +1 -1
- package/dist/tui/utils.d.ts.map +1 -1
- package/dist/tui/utils.js +235 -216
- package/dist/tui/utils.js.map +1 -1
- package/dist/tui.d.ts +4 -0
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +4 -0
- package/dist/tui.js.map +1 -1
- package/package.json +23 -43
- package/LICENSE.md +0 -22
- package/dist/agent/tools/task-types.d.ts +0 -74
- package/dist/agent/tools/task-types.d.ts.map +0 -1
- package/dist/agent/tools/task-types.js +0 -8
- package/dist/agent/tools/task-types.js.map +0 -1
- package/dist/agent/tools/task.d.ts +0 -84
- package/dist/agent/tools/task.d.ts.map +0 -1
- package/dist/agent/tools/task.js +0 -184
- package/dist/agent/tools/task.js.map +0 -1
- package/dist/memory/embedder/base.d.ts +0 -41
- package/dist/memory/embedder/base.d.ts.map +0 -1
- package/dist/memory/embedder/base.js +0 -10
- package/dist/memory/embedder/base.js.map +0 -1
- package/dist/memory/embedder/index.d.ts +0 -8
- package/dist/memory/embedder/index.d.ts.map +0 -1
- package/dist/memory/embedder/index.js +0 -6
- package/dist/memory/embedder/index.js.map +0 -1
- package/dist/memory/embedder/openai.d.ts +0 -35
- package/dist/memory/embedder/openai.d.ts.map +0 -1
- package/dist/memory/embedder/openai.js +0 -103
- package/dist/memory/embedder/openai.js.map +0 -1
- package/dist/memory/index.d.ts +0 -33
- package/dist/memory/index.d.ts.map +0 -1
- package/dist/memory/index.js +0 -31
- package/dist/memory/index.js.map +0 -1
- package/dist/memory/memory.d.ts +0 -126
- package/dist/memory/memory.d.ts.map +0 -1
- package/dist/memory/memory.js +0 -280
- package/dist/memory/memory.js.map +0 -1
- package/dist/memory/processors/base.d.ts +0 -42
- package/dist/memory/processors/base.d.ts.map +0 -1
- package/dist/memory/processors/base.js +0 -6
- package/dist/memory/processors/base.js.map +0 -1
- package/dist/memory/processors/index.d.ts +0 -16
- package/dist/memory/processors/index.d.ts.map +0 -1
- package/dist/memory/processors/index.js +0 -18
- package/dist/memory/processors/index.js.map +0 -1
- package/dist/memory/processors/message-history.d.ts +0 -35
- package/dist/memory/processors/message-history.d.ts.map +0 -1
- package/dist/memory/processors/message-history.js +0 -51
- package/dist/memory/processors/message-history.js.map +0 -1
- package/dist/memory/processors/observational-memory/index.d.ts +0 -82
- package/dist/memory/processors/observational-memory/index.d.ts.map +0 -1
- package/dist/memory/processors/observational-memory/index.js +0 -234
- package/dist/memory/processors/observational-memory/index.js.map +0 -1
- package/dist/memory/processors/observational-memory/observer-agent.d.ts +0 -64
- package/dist/memory/processors/observational-memory/observer-agent.d.ts.map +0 -1
- package/dist/memory/processors/observational-memory/observer-agent.js +0 -362
- package/dist/memory/processors/observational-memory/observer-agent.js.map +0 -1
- package/dist/memory/processors/observational-memory/reflector-agent.d.ts +0 -38
- package/dist/memory/processors/observational-memory/reflector-agent.d.ts.map +0 -1
- package/dist/memory/processors/observational-memory/reflector-agent.js +0 -213
- package/dist/memory/processors/observational-memory/reflector-agent.js.map +0 -1
- package/dist/memory/processors/observational-memory/token-counter.d.ts +0 -35
- package/dist/memory/processors/observational-memory/token-counter.d.ts.map +0 -1
- package/dist/memory/processors/observational-memory/token-counter.js +0 -90
- package/dist/memory/processors/observational-memory/token-counter.js.map +0 -1
- package/dist/memory/processors/semantic-recall.d.ts +0 -55
- package/dist/memory/processors/semantic-recall.d.ts.map +0 -1
- package/dist/memory/processors/semantic-recall.js +0 -143
- package/dist/memory/processors/semantic-recall.js.map +0 -1
- package/dist/memory/processors/working-memory.d.ts +0 -41
- package/dist/memory/processors/working-memory.d.ts.map +0 -1
- package/dist/memory/processors/working-memory.js +0 -82
- package/dist/memory/processors/working-memory.js.map +0 -1
- package/dist/memory/storage/base.d.ts +0 -288
- package/dist/memory/storage/base.d.ts.map +0 -1
- package/dist/memory/storage/base.js +0 -211
- package/dist/memory/storage/base.js.map +0 -1
- package/dist/memory/storage/index.d.ts +0 -9
- package/dist/memory/storage/index.d.ts.map +0 -1
- package/dist/memory/storage/index.js +0 -7
- package/dist/memory/storage/index.js.map +0 -1
- package/dist/memory/storage/inmemory.d.ts +0 -93
- package/dist/memory/storage/inmemory.d.ts.map +0 -1
- package/dist/memory/storage/inmemory.js +0 -646
- package/dist/memory/storage/inmemory.js.map +0 -1
- package/dist/memory/tools/working-memory.d.ts +0 -100
- package/dist/memory/tools/working-memory.d.ts.map +0 -1
- package/dist/memory/tools/working-memory.js +0 -237
- package/dist/memory/tools/working-memory.js.map +0 -1
- package/dist/memory/types.d.ts +0 -386
- package/dist/memory/types.d.ts.map +0 -1
- package/dist/memory/types.js +0 -58
- package/dist/memory/types.js.map +0 -1
- package/dist/memory/vector/base.d.ts +0 -145
- package/dist/memory/vector/base.d.ts.map +0 -1
- package/dist/memory/vector/base.js +0 -83
- package/dist/memory/vector/base.js.map +0 -1
- package/dist/memory/vector/index.d.ts +0 -8
- package/dist/memory/vector/index.d.ts.map +0 -1
- package/dist/memory/vector/index.js +0 -7
- package/dist/memory/vector/index.js.map +0 -1
- package/dist/memory/vector/inmemory.d.ts +0 -47
- package/dist/memory/vector/inmemory.d.ts.map +0 -1
- package/dist/memory/vector/inmemory.js +0 -234
- package/dist/memory/vector/inmemory.js.map +0 -1
package/dist/agent/tools/edit.js
CHANGED
|
@@ -2,18 +2,24 @@ import { Type } from "@sinclair/typebox";
|
|
|
2
2
|
import { constants } from "fs";
|
|
3
3
|
import { access as fsAccess, readFile as fsReadFile, writeFile as fsWriteFile } from "fs/promises";
|
|
4
4
|
import { detectLineEnding, fuzzyFindText, generateDiffString, normalizeForFuzzyMatch, normalizeToLF, restoreLineEndings, stripBom, } from "./edit-diff.js";
|
|
5
|
+
import { resolveToCwd } from "./path-utils.js";
|
|
5
6
|
class ExactThenFuzzyStrategy {
|
|
6
7
|
find(content, oldText) {
|
|
7
8
|
return fuzzyFindText(content, oldText);
|
|
8
9
|
}
|
|
9
10
|
}
|
|
11
|
+
const matchingStrategyRegistry = {
|
|
12
|
+
default: () => new ExactThenFuzzyStrategy(),
|
|
13
|
+
};
|
|
10
14
|
class EditValidator {
|
|
11
15
|
validate(_path, oldText) {
|
|
12
16
|
if (!oldText || oldText.length === 0)
|
|
13
17
|
throw new Error("oldText cannot be empty");
|
|
14
18
|
}
|
|
15
19
|
}
|
|
16
|
-
|
|
20
|
+
function rejectWith(message) {
|
|
21
|
+
throw new Error(message);
|
|
22
|
+
}
|
|
17
23
|
const editSchema = Type.Object({
|
|
18
24
|
path: Type.String({ description: "Path to file to edit (relative or absolute)" }),
|
|
19
25
|
oldText: Type.String({ description: "Exact text to find and replace (must match exactly)" }),
|
|
@@ -24,134 +30,144 @@ const defaultEditOperations = {
|
|
|
24
30
|
writeFile: (path, content) => fsWriteFile(path, content, "utf-8"),
|
|
25
31
|
access: (path) => fsAccess(path, constants.R_OK | constants.W_OK),
|
|
26
32
|
};
|
|
33
|
+
function withAbort(signal, task) {
|
|
34
|
+
return new Promise((resolve, reject) => {
|
|
35
|
+
if (signal?.aborted) {
|
|
36
|
+
reject(new Error("Operation aborted"));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
let aborted = false;
|
|
40
|
+
const onAbort = () => {
|
|
41
|
+
aborted = true;
|
|
42
|
+
reject(new Error("Operation aborted"));
|
|
43
|
+
};
|
|
44
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
45
|
+
const throwIfAborted = () => {
|
|
46
|
+
if (aborted || signal?.aborted) {
|
|
47
|
+
rejectWith("Operation aborted");
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
(async () => {
|
|
51
|
+
try {
|
|
52
|
+
const result = await task({ throwIfAborted });
|
|
53
|
+
if (aborted) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
signal?.removeEventListener("abort", onAbort);
|
|
57
|
+
resolve(result);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
signal?.removeEventListener("abort", onAbort);
|
|
61
|
+
if (!aborted) {
|
|
62
|
+
reject(error);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
})();
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
class EditSession {
|
|
69
|
+
input;
|
|
70
|
+
absolutePath;
|
|
71
|
+
ops;
|
|
72
|
+
matchingStrategy;
|
|
73
|
+
constructor(input, absolutePath, ops, matchingStrategy) {
|
|
74
|
+
this.input = input;
|
|
75
|
+
this.absolutePath = absolutePath;
|
|
76
|
+
this.ops = ops;
|
|
77
|
+
this.matchingStrategy = matchingStrategy;
|
|
78
|
+
}
|
|
79
|
+
async run(throwIfAborted) {
|
|
80
|
+
throwIfAborted();
|
|
81
|
+
const { sourceText } = await this.loadSource();
|
|
82
|
+
throwIfAborted();
|
|
83
|
+
const normalized = this.normalizeInputs(sourceText);
|
|
84
|
+
const match = this.locateUniqueMatch(normalized);
|
|
85
|
+
const replacement = this.applyReplacement(normalized, match);
|
|
86
|
+
throwIfAborted();
|
|
87
|
+
await this.persist(replacement.finalContent);
|
|
88
|
+
throwIfAborted();
|
|
89
|
+
return this.buildResponse(replacement.editableBase, replacement.replacedContent);
|
|
90
|
+
}
|
|
91
|
+
async loadSource() {
|
|
92
|
+
try {
|
|
93
|
+
await this.ops.access(this.absolutePath);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
rejectWith(`File not found: ${this.input.path}`);
|
|
97
|
+
}
|
|
98
|
+
const buffer = await this.ops.readFile(this.absolutePath);
|
|
99
|
+
const sourceText = buffer.toString("utf-8");
|
|
100
|
+
return { sourceText };
|
|
101
|
+
}
|
|
102
|
+
normalizeInputs(sourceText) {
|
|
103
|
+
const { bom, text } = stripBom(sourceText);
|
|
104
|
+
const originalEnding = detectLineEnding(text);
|
|
105
|
+
const normalizedContent = normalizeToLF(text);
|
|
106
|
+
const normalizedOldText = normalizeToLF(this.input.oldText);
|
|
107
|
+
const normalizedNewText = normalizeToLF(this.input.newText);
|
|
108
|
+
return {
|
|
109
|
+
bom,
|
|
110
|
+
originalEnding,
|
|
111
|
+
normalizedContent,
|
|
112
|
+
normalizedOldText,
|
|
113
|
+
normalizedNewText,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
locateUniqueMatch(normalized) {
|
|
117
|
+
const matchResult = this.matchingStrategy.find(normalized.normalizedContent, normalized.normalizedOldText);
|
|
118
|
+
if (!matchResult.found) {
|
|
119
|
+
rejectWith(`Could not find the exact text in ${this.input.path}. The old text must match exactly including all whitespace and newlines.`);
|
|
120
|
+
}
|
|
121
|
+
const fuzzyContent = normalizeForFuzzyMatch(normalized.normalizedContent);
|
|
122
|
+
const fuzzyOldText = normalizeForFuzzyMatch(normalized.normalizedOldText);
|
|
123
|
+
const matchCount = fuzzyContent.split(fuzzyOldText).length - 1;
|
|
124
|
+
if (matchCount > 1) {
|
|
125
|
+
rejectWith(`Found ${matchCount} occurrences of the text in ${this.input.path}. The text must be unique. Please provide more context to make it unique.`);
|
|
126
|
+
}
|
|
127
|
+
return { matchResult, matchCount };
|
|
128
|
+
}
|
|
129
|
+
applyReplacement(normalized, match) {
|
|
130
|
+
const editableBase = match.matchResult.contentForReplacement;
|
|
131
|
+
const replacedContent = editableBase.substring(0, match.matchResult.index) +
|
|
132
|
+
normalized.normalizedNewText +
|
|
133
|
+
editableBase.substring(match.matchResult.index + match.matchResult.matchLength);
|
|
134
|
+
if (editableBase === replacedContent) {
|
|
135
|
+
rejectWith(`No changes made to ${this.input.path}. The replacement produced identical content. This might indicate an issue with special characters or the text not existing as expected.`);
|
|
136
|
+
}
|
|
137
|
+
const finalContent = normalized.bom + restoreLineEndings(replacedContent, normalized.originalEnding);
|
|
138
|
+
return { editableBase, replacedContent, finalContent };
|
|
139
|
+
}
|
|
140
|
+
async persist(finalContent) {
|
|
141
|
+
await this.ops.writeFile(this.absolutePath, finalContent);
|
|
142
|
+
}
|
|
143
|
+
buildResponse(editableBase, replacedContent) {
|
|
144
|
+
const diffResult = generateDiffString(editableBase, replacedContent);
|
|
145
|
+
return {
|
|
146
|
+
content: [{ type: "text", text: `Successfully replaced text in ${this.input.path}.` }],
|
|
147
|
+
details: { diff: diffResult.diff, firstChangedLine: diffResult.firstChangedLine },
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function resolveMatchingStrategy(options) {
|
|
152
|
+
if (options?.matchingStrategy) {
|
|
153
|
+
return options.matchingStrategy;
|
|
154
|
+
}
|
|
155
|
+
return matchingStrategyRegistry.default();
|
|
156
|
+
}
|
|
27
157
|
export function createEditTool(cwd, options) {
|
|
28
158
|
const ops = options?.operations ?? defaultEditOperations;
|
|
29
|
-
const matchingStrategy = options
|
|
159
|
+
const matchingStrategy = resolveMatchingStrategy(options);
|
|
30
160
|
const validator = new EditValidator();
|
|
31
161
|
return {
|
|
32
162
|
name: "edit",
|
|
33
163
|
label: "edit",
|
|
34
164
|
description: "Edit a file by replacing exact text. The oldText must match exactly (including whitespace). Use this for precise, surgical edits.",
|
|
35
165
|
parameters: editSchema,
|
|
36
|
-
execute: async (_toolCallId,
|
|
37
|
-
validator.validate(path, oldText);
|
|
38
|
-
const absolutePath = resolveToCwd(path, cwd);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (signal?.aborted) {
|
|
42
|
-
reject(new Error("Operation aborted"));
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
let aborted = false;
|
|
46
|
-
// Set up abort handler
|
|
47
|
-
const onAbort = () => {
|
|
48
|
-
aborted = true;
|
|
49
|
-
reject(new Error("Operation aborted"));
|
|
50
|
-
};
|
|
51
|
-
if (signal) {
|
|
52
|
-
signal.addEventListener("abort", onAbort, { once: true });
|
|
53
|
-
}
|
|
54
|
-
// Perform the edit operation
|
|
55
|
-
(async () => {
|
|
56
|
-
try {
|
|
57
|
-
// Check if file exists
|
|
58
|
-
try {
|
|
59
|
-
await ops.access(absolutePath);
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
if (signal) {
|
|
63
|
-
signal.removeEventListener("abort", onAbort);
|
|
64
|
-
}
|
|
65
|
-
reject(new Error(`File not found: ${path}`));
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
// Check if aborted before reading
|
|
69
|
-
if (aborted) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
// Read the file
|
|
73
|
-
const buffer = await ops.readFile(absolutePath);
|
|
74
|
-
const rawContent = buffer.toString("utf-8");
|
|
75
|
-
// Check if aborted after reading
|
|
76
|
-
if (aborted) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
// Strip BOM before matching (LLM won't include invisible BOM in oldText)
|
|
80
|
-
const { bom, text: content } = stripBom(rawContent);
|
|
81
|
-
const originalEnding = detectLineEnding(content);
|
|
82
|
-
const normalizedContent = normalizeToLF(content);
|
|
83
|
-
const normalizedOldText = normalizeToLF(oldText);
|
|
84
|
-
const normalizedNewText = normalizeToLF(newText);
|
|
85
|
-
// Find old text via configurable matching strategy
|
|
86
|
-
const matchResult = matchingStrategy.find(normalizedContent, normalizedOldText);
|
|
87
|
-
if (!matchResult.found) {
|
|
88
|
-
if (signal) {
|
|
89
|
-
signal.removeEventListener("abort", onAbort);
|
|
90
|
-
}
|
|
91
|
-
reject(new Error(`Could not find the exact text in ${path}. The old text must match exactly including all whitespace and newlines.`));
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
// Count occurrences using fuzzy-normalized content for consistency
|
|
95
|
-
const fuzzyContent = normalizeForFuzzyMatch(normalizedContent);
|
|
96
|
-
const fuzzyOldText = normalizeForFuzzyMatch(normalizedOldText);
|
|
97
|
-
const occurrences = fuzzyContent.split(fuzzyOldText).length - 1;
|
|
98
|
-
if (occurrences > 1) {
|
|
99
|
-
if (signal) {
|
|
100
|
-
signal.removeEventListener("abort", onAbort);
|
|
101
|
-
}
|
|
102
|
-
reject(new Error(`Found ${occurrences} occurrences of the text in ${path}. The text must be unique. Please provide more context to make it unique.`));
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
// Check if aborted before writing
|
|
106
|
-
if (aborted) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
// Perform replacement using the matched text position
|
|
110
|
-
// When fuzzy matching was used, contentForReplacement is the normalized version
|
|
111
|
-
const baseContent = matchResult.contentForReplacement;
|
|
112
|
-
const newContent = baseContent.substring(0, matchResult.index) +
|
|
113
|
-
normalizedNewText +
|
|
114
|
-
baseContent.substring(matchResult.index + matchResult.matchLength);
|
|
115
|
-
// Verify that replacement actually changed something
|
|
116
|
-
if (baseContent === newContent) {
|
|
117
|
-
if (signal) {
|
|
118
|
-
signal.removeEventListener("abort", onAbort);
|
|
119
|
-
}
|
|
120
|
-
reject(new Error(`No changes made to ${path}. The replacement produced identical content. This might indicate an issue with special characters or the text not existing as expected.`));
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
const finalContent = bom + restoreLineEndings(newContent, originalEnding);
|
|
124
|
-
await ops.writeFile(absolutePath, finalContent);
|
|
125
|
-
// Check if aborted after writing
|
|
126
|
-
if (aborted) {
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
// Clean up abort handler
|
|
130
|
-
if (signal) {
|
|
131
|
-
signal.removeEventListener("abort", onAbort);
|
|
132
|
-
}
|
|
133
|
-
const diffResult = generateDiffString(baseContent, newContent);
|
|
134
|
-
resolve({
|
|
135
|
-
content: [
|
|
136
|
-
{
|
|
137
|
-
type: "text",
|
|
138
|
-
text: `Successfully replaced text in ${path}.`,
|
|
139
|
-
},
|
|
140
|
-
],
|
|
141
|
-
details: { diff: diffResult.diff, firstChangedLine: diffResult.firstChangedLine },
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
catch (error) {
|
|
145
|
-
// Clean up abort handler
|
|
146
|
-
if (signal) {
|
|
147
|
-
signal.removeEventListener("abort", onAbort);
|
|
148
|
-
}
|
|
149
|
-
if (!aborted) {
|
|
150
|
-
reject(error);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
})();
|
|
154
|
-
});
|
|
166
|
+
execute: async (_toolCallId, input, signal) => {
|
|
167
|
+
validator.validate(input.path, input.oldText);
|
|
168
|
+
const absolutePath = resolveToCwd(input.path, cwd);
|
|
169
|
+
const session = new EditSession(input, absolutePath, ops, matchingStrategy);
|
|
170
|
+
return withAbort(signal, async ({ throwIfAborted }) => session.run(throwIfAborted));
|
|
155
171
|
},
|
|
156
172
|
};
|
|
157
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/agent/tools/edit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,QAAQ,IAAI,UAAU,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EACN,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,QAAQ,GACR,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/agent/tools/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,OAAO,EAAiC,KAAK,gBAAgB,EAAgB,MAAM,eAAe,CAAC;AAEnG,QAAA,MAAM,UAAU;;;;EAMd,CAAC;
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,OAAO,EAAiC,KAAK,gBAAgB,EAAgB,MAAM,eAAe,CAAC;AAEnG,QAAA,MAAM,UAAU;;;;EAMd,CAAC;AAMH,MAAM,WAAW,eAAe;IAC/B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B;AA0HD,MAAM,WAAW,eAAe;IAC/B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACtB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC,OAAO,UAAU,CAAC,CA2DnG;AAED,0EAA0E;AAC1E,eAAO,MAAM,QAAQ;;;;QAAgC,CAAC"}
|
package/dist/agent/tools/find.js
CHANGED
|
@@ -11,40 +11,64 @@ const findSchema = Type.Object({
|
|
|
11
11
|
limit: Type.Optional(Type.Number({ description: "Maximum number of results (default: 1000)" })),
|
|
12
12
|
});
|
|
13
13
|
const DEFAULT_LIMIT = 1000;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
.replace(/\*/g, ".*")
|
|
20
|
-
.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
const DEFAULT_EXCLUDES = ["node_modules", ".git"];
|
|
15
|
+
const MAX_DIRECTORY_DEPTH = 20;
|
|
16
|
+
class GlobMatcher {
|
|
17
|
+
regex;
|
|
18
|
+
constructor(pattern) {
|
|
19
|
+
const regexPattern = pattern.replace(/\*/g, ".*").replace(/\?/g, ".").replace(/\./g, "\\.");
|
|
20
|
+
this.regex = new RegExp(`^${regexPattern}$`);
|
|
21
|
+
}
|
|
22
|
+
matches(value) {
|
|
23
|
+
return this.regex.test(value);
|
|
24
|
+
}
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
class DirectoryWalkPolicy {
|
|
27
|
+
limit;
|
|
28
|
+
constructor(limit) {
|
|
29
|
+
this.limit = limit;
|
|
30
|
+
}
|
|
31
|
+
canContinue(resultCount, depth) {
|
|
32
|
+
return resultCount < this.limit && depth <= MAX_DIRECTORY_DEPTH;
|
|
33
|
+
}
|
|
34
|
+
shouldDescend(entry) {
|
|
35
|
+
return !entry.startsWith(".") && entry !== "node_modules" && entry !== ".git";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
class DirectoryFinder {
|
|
39
|
+
matcher;
|
|
40
|
+
walkPolicy;
|
|
41
|
+
limit;
|
|
42
|
+
fs = require("fs");
|
|
43
|
+
constructor(matcher, walkPolicy, limit) {
|
|
44
|
+
this.matcher = matcher;
|
|
45
|
+
this.walkPolicy = walkPolicy;
|
|
46
|
+
this.limit = limit;
|
|
47
|
+
}
|
|
48
|
+
async find(dir) {
|
|
49
|
+
const results = [];
|
|
50
|
+
await this.searchRecursive(dir, 0, results);
|
|
51
|
+
return results;
|
|
52
|
+
}
|
|
53
|
+
async searchRecursive(currentDir, depth, results) {
|
|
54
|
+
if (!this.walkPolicy.canContinue(results.length, depth)) {
|
|
33
55
|
return;
|
|
56
|
+
}
|
|
34
57
|
try {
|
|
35
|
-
const entries = fs.readdirSync(currentDir);
|
|
58
|
+
const entries = this.fs.readdirSync(currentDir);
|
|
36
59
|
for (const entry of entries) {
|
|
37
|
-
if (results.length >= limit)
|
|
60
|
+
if (results.length >= this.limit) {
|
|
38
61
|
break;
|
|
62
|
+
}
|
|
39
63
|
const fullPath = path.join(currentDir, entry);
|
|
40
|
-
const stat = fs.statSync(fullPath);
|
|
64
|
+
const stat = this.fs.statSync(fullPath);
|
|
41
65
|
if (stat.isDirectory()) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
await search(fullPath, depth + 1);
|
|
66
|
+
if (this.walkPolicy.shouldDescend(entry)) {
|
|
67
|
+
await this.searchRecursive(fullPath, depth + 1, results);
|
|
45
68
|
}
|
|
69
|
+
continue;
|
|
46
70
|
}
|
|
47
|
-
|
|
71
|
+
if (this.matcher.matches(entry)) {
|
|
48
72
|
results.push(fullPath);
|
|
49
73
|
}
|
|
50
74
|
}
|
|
@@ -53,8 +77,47 @@ async function findFiles(dir, pattern, limit) {
|
|
|
53
77
|
// Skip inaccessible directories
|
|
54
78
|
}
|
|
55
79
|
}
|
|
56
|
-
|
|
57
|
-
|
|
80
|
+
}
|
|
81
|
+
class FindResultFormatter {
|
|
82
|
+
searchPath;
|
|
83
|
+
effectiveLimit;
|
|
84
|
+
constructor(searchPath, effectiveLimit) {
|
|
85
|
+
this.searchPath = searchPath;
|
|
86
|
+
this.effectiveLimit = effectiveLimit;
|
|
87
|
+
}
|
|
88
|
+
format(results) {
|
|
89
|
+
if (results.length === 0) {
|
|
90
|
+
return { output: "No files found matching pattern" };
|
|
91
|
+
}
|
|
92
|
+
const relativized = results.map((entryPath) => this.relativize(entryPath));
|
|
93
|
+
const resultLimitReached = relativized.length >= this.effectiveLimit;
|
|
94
|
+
const rawOutput = relativized.join("\n");
|
|
95
|
+
const truncation = truncateHead(rawOutput, { maxLines: Number.MAX_SAFE_INTEGER });
|
|
96
|
+
let output = truncation.content;
|
|
97
|
+
const details = {};
|
|
98
|
+
const notices = [];
|
|
99
|
+
if (resultLimitReached) {
|
|
100
|
+
notices.push(`${this.effectiveLimit} results limit reached`);
|
|
101
|
+
details.resultLimitReached = this.effectiveLimit;
|
|
102
|
+
}
|
|
103
|
+
if (truncation.truncated) {
|
|
104
|
+
notices.push(`${formatSize(DEFAULT_MAX_BYTES)} limit reached`);
|
|
105
|
+
details.truncation = truncation;
|
|
106
|
+
}
|
|
107
|
+
if (notices.length > 0) {
|
|
108
|
+
output += `\n\n[${notices.join(". ")}]`;
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
output,
|
|
112
|
+
details: Object.keys(details).length > 0 ? details : undefined,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
relativize(entryPath) {
|
|
116
|
+
if (entryPath.startsWith(this.searchPath)) {
|
|
117
|
+
return entryPath.slice(this.searchPath.length + 1);
|
|
118
|
+
}
|
|
119
|
+
return path.relative(this.searchPath, entryPath);
|
|
120
|
+
}
|
|
58
121
|
}
|
|
59
122
|
export function createFindTool(cwd, options) {
|
|
60
123
|
return {
|
|
@@ -74,51 +137,23 @@ export function createFindTool(cwd, options) {
|
|
|
74
137
|
try {
|
|
75
138
|
const searchPath = resolveToCwd(searchDir || ".", cwd);
|
|
76
139
|
const effectiveLimit = limit ?? DEFAULT_LIMIT;
|
|
77
|
-
const excludes = new Set(options?.exclude ??
|
|
78
|
-
// Check if path exists
|
|
140
|
+
const excludes = new Set(options?.exclude ?? DEFAULT_EXCLUDES);
|
|
79
141
|
if (!existsSync(searchPath)) {
|
|
80
142
|
reject(new Error(`Path not found: ${searchPath}`));
|
|
81
143
|
return;
|
|
82
144
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
145
|
+
const matcher = new GlobMatcher(pattern);
|
|
146
|
+
const walkPolicy = new DirectoryWalkPolicy(effectiveLimit);
|
|
147
|
+
const finder = new DirectoryFinder(matcher, walkPolicy, effectiveLimit);
|
|
148
|
+
let results = await finder.find(searchPath);
|
|
149
|
+
results = results.filter((entryPath) => ![...excludes].some((excluded) => entryPath.includes(`/${excluded}/`) || entryPath.endsWith(`/${excluded}`)));
|
|
86
150
|
results.sort((a, b) => (options?.sort === "desc" ? b.localeCompare(a) : a.localeCompare(b)));
|
|
87
151
|
signal?.removeEventListener("abort", onAbort);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
content: [{ type: "text", text: "No files found matching pattern" }],
|
|
91
|
-
details: undefined,
|
|
92
|
-
});
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
// Relativize paths
|
|
96
|
-
const relativized = results.map((p) => {
|
|
97
|
-
if (p.startsWith(searchPath)) {
|
|
98
|
-
return p.slice(searchPath.length + 1);
|
|
99
|
-
}
|
|
100
|
-
return path.relative(searchPath, p);
|
|
101
|
-
});
|
|
102
|
-
const resultLimitReached = relativized.length >= effectiveLimit;
|
|
103
|
-
const rawOutput = relativized.join("\n");
|
|
104
|
-
const truncation = truncateHead(rawOutput, { maxLines: Number.MAX_SAFE_INTEGER });
|
|
105
|
-
let resultOutput = truncation.content;
|
|
106
|
-
const details = {};
|
|
107
|
-
const notices = [];
|
|
108
|
-
if (resultLimitReached) {
|
|
109
|
-
notices.push(`${effectiveLimit} results limit reached`);
|
|
110
|
-
details.resultLimitReached = effectiveLimit;
|
|
111
|
-
}
|
|
112
|
-
if (truncation.truncated) {
|
|
113
|
-
notices.push(`${formatSize(DEFAULT_MAX_BYTES)} limit reached`);
|
|
114
|
-
details.truncation = truncation;
|
|
115
|
-
}
|
|
116
|
-
if (notices.length > 0) {
|
|
117
|
-
resultOutput += `\n\n[${notices.join(". ")}]`;
|
|
118
|
-
}
|
|
152
|
+
const formatter = new FindResultFormatter(searchPath, effectiveLimit);
|
|
153
|
+
const formatted = formatter.format(results);
|
|
119
154
|
resolve({
|
|
120
|
-
content: [{ type: "text", text:
|
|
121
|
-
details:
|
|
155
|
+
content: [{ type: "text", text: formatted.output }],
|
|
156
|
+
details: formatted.details,
|
|
122
157
|
});
|
|
123
158
|
}
|
|
124
159
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/agent/tools/find.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAyB,YAAY,EAAE,MAAM,eAAe,CAAC;AAEnG,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,8EAA8E;KAC3F,CAAC;IACF,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,qDAAqD,EAAE,CAAC,CAAC;IACxG,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,2CAA2C,EAAE,CAAC,CAAC;CAC/F,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/agent/tools/find.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/grep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,OAAO,EAIN,KAAK,gBAAgB,EAGrB,MAAM,eAAe,CAAC;AAEvB,QAAA,MAAM,UAAU;;;;;;;EAWd,CAAC;
|
|
1
|
+
{"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/grep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,OAAO,EAIN,KAAK,gBAAgB,EAGrB,MAAM,eAAe,CAAC;AAEvB,QAAA,MAAM,UAAU;;;;;;;EAWd,CAAC;AAMH,MAAM,WAAW,eAAe;IAC/B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC9B,kEAAkE;IAClE,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAClE,2CAA2C;IAC3C,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC7D,gCAAgC;IAChC,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;CAChE;AAWD,MAAM,WAAW,eAAe;IAC/B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,cAAc,CAAC;CAC5B;AAsID,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC,OAAO,UAAU,CAAC,CAwGnG;AAED,0EAA0E;AAC1E,eAAO,MAAM,QAAQ;;;;;;;QAAgC,CAAC"}
|