tarsk 0.4.4 → 0.4.6
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/dist/index.js +447375 -37
- package/package.json +2 -2
- package/dist/agent/agent.error-utils.d.ts +0 -14
- package/dist/agent/agent.error-utils.js +0 -52
- package/dist/agent/agent.event-transformer.d.ts +0 -55
- package/dist/agent/agent.event-transformer.js +0 -175
- package/dist/agent/agent.executor.d.ts +0 -26
- package/dist/agent/agent.executor.js +0 -286
- package/dist/agent/agent.model-resolver.d.ts +0 -22
- package/dist/agent/agent.model-resolver.js +0 -67
- package/dist/agent/agent.process-manager.d.ts +0 -57
- package/dist/agent/agent.process-manager.js +0 -262
- package/dist/agent/agent.processing-state-manager.d.ts +0 -74
- package/dist/agent/agent.processing-state-manager.js +0 -87
- package/dist/agent/agent.prompt-loader.d.ts +0 -16
- package/dist/agent/agent.prompt-loader.js +0 -227
- package/dist/agent/agent.subagent-executor.d.ts +0 -35
- package/dist/agent/agent.subagent-executor.js +0 -135
- package/dist/bun/index.d.ts +0 -2
- package/dist/bun/index.js +0 -165
- package/dist/cli.d.ts +0 -3
- package/dist/cli.js +0 -22
- package/dist/core/crypto.d.ts +0 -29
- package/dist/core/crypto.js +0 -166
- package/dist/core/dev-server-cache.d.ts +0 -46
- package/dist/core/dev-server-cache.js +0 -59
- package/dist/core/env-manager.d.ts +0 -3
- package/dist/core/env-manager.js +0 -60
- package/dist/core/error-responses.d.ts +0 -61
- package/dist/core/error-responses.js +0 -64
- package/dist/core/logger.d.ts +0 -10
- package/dist/core/logger.js +0 -47
- package/dist/core/paths.d.ts +0 -22
- package/dist/core/paths.js +0 -26
- package/dist/core/random-words.d.ts +0 -18
- package/dist/core/random-words.js +0 -135
- package/dist/core/response-builder.d.ts +0 -50
- package/dist/core/response-builder.js +0 -56
- package/dist/core/route-helpers.d.ts +0 -47
- package/dist/core/route-helpers.js +0 -54
- package/dist/core/run-command-detector.d.ts +0 -26
- package/dist/core/run-command-detector.js +0 -98
- package/dist/core/stream-helper.d.ts +0 -44
- package/dist/core/stream-helper.js +0 -50
- package/dist/core/utils.d.ts +0 -43
- package/dist/core/utils.js +0 -113
- package/dist/core/validation.d.ts +0 -10
- package/dist/core/validation.js +0 -20
- package/dist/database/database.d.ts +0 -40
- package/dist/database/database.encryption.d.ts +0 -33
- package/dist/database/database.encryption.js +0 -62
- package/dist/database/database.js +0 -480
- package/dist/database/database.state.d.ts +0 -52
- package/dist/database/database.state.js +0 -119
- package/dist/database/database.test-utils.d.ts +0 -22
- package/dist/database/database.test-utils.js +0 -39
- package/dist/database/database.types.d.ts +0 -3
- package/dist/database/database.types.js +0 -2
- package/dist/features/agents/agents.manager.d.ts +0 -24
- package/dist/features/agents/agents.manager.js +0 -200
- package/dist/features/ask-user/ask-user.routes.d.ts +0 -9
- package/dist/features/ask-user/ask-user.routes.js +0 -35
- package/dist/features/chat/chat-delete.route.d.ts +0 -15
- package/dist/features/chat/chat-delete.route.js +0 -36
- package/dist/features/chat/chat-post.route.d.ts +0 -11
- package/dist/features/chat/chat-post.route.js +0 -270
- package/dist/features/chat/chat-stop.route.d.ts +0 -21
- package/dist/features/chat/chat-stop.route.js +0 -22
- package/dist/features/chat/chat-subscribe.route.d.ts +0 -9
- package/dist/features/chat/chat-subscribe.route.js +0 -71
- package/dist/features/chat/chat.routes.d.ts +0 -22
- package/dist/features/chat/chat.routes.js +0 -29
- package/dist/features/conversations/conversations-delete.route.d.ts +0 -16
- package/dist/features/conversations/conversations-delete.route.js +0 -34
- package/dist/features/conversations/conversations-get-all.route.d.ts +0 -16
- package/dist/features/conversations/conversations-get-all.route.js +0 -39
- package/dist/features/conversations/conversations-get-by-id.route.d.ts +0 -16
- package/dist/features/conversations/conversations-get-by-id.route.js +0 -38
- package/dist/features/conversations/conversations-get-deleted.route.d.ts +0 -15
- package/dist/features/conversations/conversations-get-deleted.route.js +0 -34
- package/dist/features/conversations/conversations-get-messages.route.d.ts +0 -16
- package/dist/features/conversations/conversations-get-messages.route.js +0 -49
- package/dist/features/conversations/conversations.content.d.ts +0 -28
- package/dist/features/conversations/conversations.content.js +0 -142
- package/dist/features/conversations/conversations.database.d.ts +0 -108
- package/dist/features/conversations/conversations.database.js +0 -373
- package/dist/features/conversations/conversations.manager.d.ts +0 -130
- package/dist/features/conversations/conversations.manager.js +0 -162
- package/dist/features/conversations/conversations.routes.d.ts +0 -21
- package/dist/features/conversations/conversations.routes.js +0 -38
- package/dist/features/conversations/token-usage.route.d.ts +0 -41
- package/dist/features/conversations/token-usage.route.js +0 -419
- package/dist/features/git/git-commit.route.d.ts +0 -12
- package/dist/features/git/git-commit.route.js +0 -39
- package/dist/features/git/git-create-branch.route.d.ts +0 -28
- package/dist/features/git/git-create-branch.route.js +0 -119
- package/dist/features/git/git-create-pr.route.d.ts +0 -13
- package/dist/features/git/git-create-pr.route.js +0 -50
- package/dist/features/git/git-create-repo.route.d.ts +0 -14
- package/dist/features/git/git-create-repo.route.js +0 -108
- package/dist/features/git/git-diff.route.d.ts +0 -30
- package/dist/features/git/git-diff.route.js +0 -189
- package/dist/features/git/git-fetch.route.d.ts +0 -12
- package/dist/features/git/git-fetch.route.js +0 -31
- package/dist/features/git/git-generate-commit-message.route.d.ts +0 -12
- package/dist/features/git/git-generate-commit-message.route.js +0 -76
- package/dist/features/git/git-generate-pr-info.route.d.ts +0 -13
- package/dist/features/git/git-generate-pr-info.route.js +0 -147
- package/dist/features/git/git-github-status.route.d.ts +0 -16
- package/dist/features/git/git-github-status.route.js +0 -68
- package/dist/features/git/git-log.route.d.ts +0 -17
- package/dist/features/git/git-log.route.js +0 -33
- package/dist/features/git/git-pr-status.route.d.ts +0 -15
- package/dist/features/git/git-pr-status.route.js +0 -33
- package/dist/features/git/git-pull.route.d.ts +0 -12
- package/dist/features/git/git-pull.route.js +0 -35
- package/dist/features/git/git-push.route.d.ts +0 -12
- package/dist/features/git/git-push.route.js +0 -46
- package/dist/features/git/git-status-cache.database.d.ts +0 -7
- package/dist/features/git/git-status-cache.database.js +0 -53
- package/dist/features/git/git-status.route.d.ts +0 -15
- package/dist/features/git/git-status.route.js +0 -62
- package/dist/features/git/git-sync-branch.route.d.ts +0 -4
- package/dist/features/git/git-sync-branch.route.js +0 -208
- package/dist/features/git/git-unified-status.route.d.ts +0 -30
- package/dist/features/git/git-unified-status.route.js +0 -165
- package/dist/features/git/git-username.route.d.ts +0 -3
- package/dist/features/git/git-username.route.js +0 -24
- package/dist/features/git/git.manager.d.ts +0 -139
- package/dist/features/git/git.manager.js +0 -352
- package/dist/features/git/git.routes.d.ts +0 -4
- package/dist/features/git/git.routes.js +0 -116
- package/dist/features/git/git.utils.d.ts +0 -82
- package/dist/features/git/git.utils.js +0 -1040
- package/dist/features/mcp/mcp.config.d.ts +0 -27
- package/dist/features/mcp/mcp.config.js +0 -148
- package/dist/features/mcp/mcp.manager.d.ts +0 -61
- package/dist/features/mcp/mcp.manager.js +0 -254
- package/dist/features/mcp/mcp.popular.json +0 -103
- package/dist/features/mcp/mcp.routes.d.ts +0 -13
- package/dist/features/mcp/mcp.routes.js +0 -159
- package/dist/features/mcp/mcp.types.d.ts +0 -80
- package/dist/features/mcp/mcp.types.js +0 -8
- package/dist/features/metadata/metadata.manager.d.ts +0 -126
- package/dist/features/metadata/metadata.manager.js +0 -423
- package/dist/features/models/model-info-aihubmix.d.ts +0 -25
- package/dist/features/models/model-info-aihubmix.js +0 -117
- package/dist/features/models/model-info-openrouter.d.ts +0 -25
- package/dist/features/models/model-info-openrouter.js +0 -104
- package/dist/features/models/model-info.d.ts +0 -37
- package/dist/features/models/model-info.js +0 -39
- package/dist/features/models/models-catalog.d.ts +0 -49
- package/dist/features/models/models-catalog.js +0 -80
- package/dist/features/models/models-catalog.route.d.ts +0 -43
- package/dist/features/models/models-catalog.route.js +0 -15
- package/dist/features/models/models-get-available.route.d.ts +0 -36
- package/dist/features/models/models-get-available.route.js +0 -66
- package/dist/features/models/models-get-enabled.route.d.ts +0 -33
- package/dist/features/models/models-get-enabled.route.js +0 -45
- package/dist/features/models/models-get-model-info.route.d.ts +0 -31
- package/dist/features/models/models-get-model-info.route.js +0 -84
- package/dist/features/models/models-model-disable.route.d.ts +0 -15
- package/dist/features/models/models-model-disable.route.js +0 -20
- package/dist/features/models/models-model-enable.route.d.ts +0 -13
- package/dist/features/models/models-model-enable.route.js +0 -20
- package/dist/features/models/models-provider-refresh.route.d.ts +0 -17
- package/dist/features/models/models-provider-refresh.route.js +0 -20
- package/dist/features/models/models.manager.d.ts +0 -58
- package/dist/features/models/models.manager.js +0 -138
- package/dist/features/models/models.routes.d.ts +0 -18
- package/dist/features/models/models.routes.js +0 -83
- package/dist/features/models/open-router-models.d.ts +0 -38
- package/dist/features/models/open-router-models.js +0 -73
- package/dist/features/models/openai-models.d.ts +0 -63
- package/dist/features/models/openai-models.js +0 -150
- package/dist/features/onboarding/onboarding-get-git-check.route.d.ts +0 -11
- package/dist/features/onboarding/onboarding-get-git-check.route.js +0 -28
- package/dist/features/onboarding/onboarding-get-status.route.d.ts +0 -12
- package/dist/features/onboarding/onboarding-get-status.route.js +0 -15
- package/dist/features/onboarding/onboarding-post-complete.route.d.ts +0 -12
- package/dist/features/onboarding/onboarding-post-complete.route.js +0 -15
- package/dist/features/onboarding/onboarding-post-reset.route.d.ts +0 -12
- package/dist/features/onboarding/onboarding-post-reset.route.js +0 -15
- package/dist/features/onboarding/onboarding.routes.d.ts +0 -18
- package/dist/features/onboarding/onboarding.routes.js +0 -28
- package/dist/features/project-todos/project-todos.database.d.ts +0 -38
- package/dist/features/project-todos/project-todos.database.js +0 -91
- package/dist/features/project-todos/project-todos.routes.d.ts +0 -4
- package/dist/features/project-todos/project-todos.routes.js +0 -94
- package/dist/features/projects/projects-ai-files.route.d.ts +0 -148
- package/dist/features/projects/projects-ai-files.route.js +0 -425
- package/dist/features/projects/projects-commands.route.d.ts +0 -27
- package/dist/features/projects/projects-commands.route.js +0 -39
- package/dist/features/projects/projects-create.route.d.ts +0 -19
- package/dist/features/projects/projects-create.route.js +0 -37
- package/dist/features/projects/projects-delete.route.d.ts +0 -24
- package/dist/features/projects/projects-delete.route.js +0 -34
- package/dist/features/projects/projects-get.route.d.ts +0 -47
- package/dist/features/projects/projects-get.route.js +0 -36
- package/dist/features/projects/projects-list.route.d.ts +0 -58
- package/dist/features/projects/projects-list.route.js +0 -59
- package/dist/features/projects/projects-open-folder.route.d.ts +0 -10
- package/dist/features/projects/projects-open-folder.route.js +0 -11
- package/dist/features/projects/projects-open.route.d.ts +0 -26
- package/dist/features/projects/projects-open.route.js +0 -49
- package/dist/features/projects/projects-package-scripts.route.d.ts +0 -15
- package/dist/features/projects/projects-package-scripts.route.js +0 -96
- package/dist/features/projects/projects-run-command.route.d.ts +0 -8
- package/dist/features/projects/projects-run-command.route.js +0 -21
- package/dist/features/projects/projects-run.route.d.ts +0 -51
- package/dist/features/projects/projects-run.route.js +0 -74
- package/dist/features/projects/projects-update.route.d.ts +0 -24
- package/dist/features/projects/projects-update.route.js +0 -81
- package/dist/features/projects/projects.creator.d.ts +0 -33
- package/dist/features/projects/projects.creator.js +0 -555
- package/dist/features/projects/projects.database.d.ts +0 -61
- package/dist/features/projects/projects.database.js +0 -212
- package/dist/features/projects/projects.manager.d.ts +0 -291
- package/dist/features/projects/projects.manager.js +0 -426
- package/dist/features/projects/projects.open-with.d.ts +0 -27
- package/dist/features/projects/projects.open-with.js +0 -156
- package/dist/features/projects/projects.routes.d.ts +0 -20
- package/dist/features/projects/projects.routes.js +0 -255
- package/dist/features/projects/terminal-session-manager.d.ts +0 -55
- package/dist/features/projects/terminal-session-manager.js +0 -90
- package/dist/features/providers/provider-resolver.d.ts +0 -13
- package/dist/features/providers/provider-resolver.js +0 -22
- package/dist/features/providers/providers-get-credits.route.d.ts +0 -15
- package/dist/features/providers/providers-get-credits.route.js +0 -51
- package/dist/features/providers/providers-get.route.d.ts +0 -16
- package/dist/features/providers/providers-get.route.js +0 -32
- package/dist/features/providers/providers-open-external.route.d.ts +0 -15
- package/dist/features/providers/providers-open-external.route.js +0 -49
- package/dist/features/providers/providers-post-bulk-keys.route.d.ts +0 -14
- package/dist/features/providers/providers-post-bulk-keys.route.js +0 -31
- package/dist/features/providers/providers-post-keys.route.d.ts +0 -14
- package/dist/features/providers/providers-post-keys.route.js +0 -25
- package/dist/features/providers/providers.routes.d.ts +0 -19
- package/dist/features/providers/providers.routes.js +0 -31
- package/dist/features/rules/rules-post.route.d.ts +0 -43
- package/dist/features/rules/rules-post.route.js +0 -89
- package/dist/features/rules/rules.manager.d.ts +0 -36
- package/dist/features/rules/rules.manager.js +0 -203
- package/dist/features/rules/rules.routes.d.ts +0 -12
- package/dist/features/rules/rules.routes.js +0 -13
- package/dist/features/run/run-get-running.route.d.ts +0 -15
- package/dist/features/run/run-get-running.route.js +0 -21
- package/dist/features/run/run-post-start.route.d.ts +0 -8
- package/dist/features/run/run-post-start.route.js +0 -21
- package/dist/features/run/run-post-stop.route.d.ts +0 -15
- package/dist/features/run/run-post-stop.route.js +0 -24
- package/dist/features/run/run-post-suggest.route.d.ts +0 -15
- package/dist/features/run/run-post-suggest.route.js +0 -21
- package/dist/features/run/run-put-command.route.d.ts +0 -15
- package/dist/features/run/run-put-command.route.js +0 -24
- package/dist/features/run/run.routes.d.ts +0 -19
- package/dist/features/run/run.routes.js +0 -31
- package/dist/features/scaffold/index.d.ts +0 -7
- package/dist/features/scaffold/index.js +0 -5
- package/dist/features/scaffold/scaffold-get-templates.route.d.ts +0 -27
- package/dist/features/scaffold/scaffold-get-templates.route.js +0 -17
- package/dist/features/scaffold/scaffold-post.route.d.ts +0 -8
- package/dist/features/scaffold/scaffold-post.route.js +0 -30
- package/dist/features/scaffold/scaffold.routes.d.ts +0 -10
- package/dist/features/scaffold/scaffold.routes.js +0 -16
- package/dist/features/scaffold/scaffold.runner.d.ts +0 -48
- package/dist/features/scaffold/scaffold.runner.js +0 -475
- package/dist/features/scaffold/scaffold.types.d.ts +0 -26
- package/dist/features/scaffold/scaffold.types.js +0 -5
- package/dist/features/skills/skills.activation.d.ts +0 -31
- package/dist/features/skills/skills.activation.js +0 -155
- package/dist/features/skills/skills.manager.d.ts +0 -35
- package/dist/features/skills/skills.manager.js +0 -251
- package/dist/features/slash-commands/slash-commands-delete.route.d.ts +0 -23
- package/dist/features/slash-commands/slash-commands-delete.route.js +0 -36
- package/dist/features/slash-commands/slash-commands-get.route.d.ts +0 -53
- package/dist/features/slash-commands/slash-commands-get.route.js +0 -54
- package/dist/features/slash-commands/slash-commands-post.route.d.ts +0 -39
- package/dist/features/slash-commands/slash-commands-post.route.js +0 -70
- package/dist/features/slash-commands/slash-commands-put.route.d.ts +0 -23
- package/dist/features/slash-commands/slash-commands-put.route.js +0 -36
- package/dist/features/slash-commands/slash-commands.manager.d.ts +0 -46
- package/dist/features/slash-commands/slash-commands.manager.js +0 -265
- package/dist/features/slash-commands/slash-commands.routes.d.ts +0 -13
- package/dist/features/slash-commands/slash-commands.routes.js +0 -20
- package/dist/features/threads/threads-ai-files.route.d.ts +0 -153
- package/dist/features/threads/threads-ai-files.route.js +0 -287
- package/dist/features/threads/threads-conversation-folder-path.route.d.ts +0 -14
- package/dist/features/threads/threads-conversation-folder-path.route.js +0 -23
- package/dist/features/threads/threads-create.route.d.ts +0 -22
- package/dist/features/threads/threads-create.route.js +0 -60
- package/dist/features/threads/threads-delete.route.d.ts +0 -25
- package/dist/features/threads/threads-delete.route.js +0 -35
- package/dist/features/threads/threads-files.route.d.ts +0 -15
- package/dist/features/threads/threads-files.route.js +0 -20
- package/dist/features/threads/threads-fix-comments.route.d.ts +0 -26
- package/dist/features/threads/threads-fix-comments.route.js +0 -45
- package/dist/features/threads/threads-get.route.d.ts +0 -30
- package/dist/features/threads/threads-get.route.js +0 -38
- package/dist/features/threads/threads-list.route.d.ts +0 -56
- package/dist/features/threads/threads-list.route.js +0 -58
- package/dist/features/threads/threads-messages.route.d.ts +0 -28
- package/dist/features/threads/threads-messages.route.js +0 -110
- package/dist/features/threads/threads-open.route.d.ts +0 -26
- package/dist/features/threads/threads-open.route.js +0 -62
- package/dist/features/threads/threads-select.route.d.ts +0 -25
- package/dist/features/threads/threads-select.route.js +0 -35
- package/dist/features/threads/threads-update.route.d.ts +0 -15
- package/dist/features/threads/threads-update.route.js +0 -30
- package/dist/features/threads/threads.database.d.ts +0 -68
- package/dist/features/threads/threads.database.js +0 -215
- package/dist/features/threads/threads.manager.d.ts +0 -204
- package/dist/features/threads/threads.manager.js +0 -505
- package/dist/features/threads/threads.routes.d.ts +0 -20
- package/dist/features/threads/threads.routes.js +0 -230
- package/dist/features/todos/todos.database.d.ts +0 -14
- package/dist/features/todos/todos.database.js +0 -31
- package/dist/features/updates/updates.routes.d.ts +0 -13
- package/dist/features/updates/updates.routes.js +0 -40
- package/dist/index.d.ts +0 -3
- package/dist/project-analyzer.d.ts +0 -26
- package/dist/project-analyzer.js +0 -307
- package/dist/server.d.ts +0 -12
- package/dist/server.js +0 -142
- package/dist/tools/agent-tool.d.ts +0 -49
- package/dist/tools/agent-tool.js +0 -131
- package/dist/tools/ask-user.d.ts +0 -25
- package/dist/tools/ask-user.js +0 -74
- package/dist/tools/ast-grep.d.ts +0 -28
- package/dist/tools/ast-grep.js +0 -273
- package/dist/tools/bash.d.ts +0 -33
- package/dist/tools/bash.js +0 -186
- package/dist/tools/edit-diff.d.ts +0 -24
- package/dist/tools/edit-diff.js +0 -136
- package/dist/tools/edit.d.ts +0 -28
- package/dist/tools/edit.js +0 -78
- package/dist/tools/find.d.ts +0 -31
- package/dist/tools/find.js +0 -117
- package/dist/tools/grep.d.ts +0 -37
- package/dist/tools/grep.js +0 -231
- package/dist/tools/index.d.ts +0 -93
- package/dist/tools/index.js +0 -110
- package/dist/tools/ls.d.ts +0 -31
- package/dist/tools/ls.js +0 -108
- package/dist/tools/mcp-tools.d.ts +0 -31
- package/dist/tools/mcp-tools.js +0 -59
- package/dist/tools/path-utils.d.ts +0 -14
- package/dist/tools/path-utils.js +0 -87
- package/dist/tools/read.d.ts +0 -27
- package/dist/tools/read.js +0 -86
- package/dist/tools/resolve-bin.d.ts +0 -5
- package/dist/tools/resolve-bin.js +0 -28
- package/dist/tools/shell.d.ts +0 -7
- package/dist/tools/shell.js +0 -143
- package/dist/tools/skill-reference-tool.d.ts +0 -30
- package/dist/tools/skill-reference-tool.js +0 -171
- package/dist/tools/skill-tool.d.ts +0 -33
- package/dist/tools/skill-tool.js +0 -213
- package/dist/tools/todo.d.ts +0 -20
- package/dist/tools/todo.js +0 -168
- package/dist/tools/tool-helpers.d.ts +0 -78
- package/dist/tools/tool-helpers.js +0 -109
- package/dist/tools/truncate.d.ts +0 -31
- package/dist/tools/truncate.js +0 -164
- package/dist/tools/write.d.ts +0 -21
- package/dist/tools/write.js +0 -65
package/dist/tools/shell.js
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { execSync } from "node:child_process";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
3
|
-
import { spawnProcess } from "../core/utils.js";
|
|
4
|
-
import { spawnSyncProcess } from "../core/utils.js";
|
|
5
|
-
let cachedShellConfig = null;
|
|
6
|
-
let cachedLoginShellEnv = null;
|
|
7
|
-
function findBashOnPath() {
|
|
8
|
-
if (process.platform === "win32") {
|
|
9
|
-
try {
|
|
10
|
-
const syncResult = spawnSyncProcess("where", ["bash.exe"], {
|
|
11
|
-
encoding: "utf-8",
|
|
12
|
-
timeout: 5000,
|
|
13
|
-
});
|
|
14
|
-
if (syncResult.status === 0 && typeof syncResult.stdout === "string") {
|
|
15
|
-
const firstMatch = syncResult.stdout.trim().split(/\r?\n/)[0];
|
|
16
|
-
if (firstMatch && existsSync(firstMatch)) {
|
|
17
|
-
return firstMatch;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
// ignore
|
|
23
|
-
}
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
try {
|
|
27
|
-
const syncResult = spawnSyncProcess("which", ["bash"], {
|
|
28
|
-
encoding: "utf-8",
|
|
29
|
-
timeout: 5000,
|
|
30
|
-
});
|
|
31
|
-
if (syncResult.status === 0 && typeof syncResult.stdout === "string") {
|
|
32
|
-
const firstMatch = syncResult.stdout.trim().split(/\r?\n/)[0];
|
|
33
|
-
if (firstMatch)
|
|
34
|
-
return firstMatch;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
// ignore
|
|
39
|
-
}
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
export function getShellConfig() {
|
|
43
|
-
if (cachedShellConfig) {
|
|
44
|
-
return cachedShellConfig;
|
|
45
|
-
}
|
|
46
|
-
if (process.platform === "win32") {
|
|
47
|
-
const paths = [];
|
|
48
|
-
if (process.env.ProgramFiles) {
|
|
49
|
-
paths.push(`${process.env.ProgramFiles}\\Git\\bin\\bash.exe`);
|
|
50
|
-
}
|
|
51
|
-
if (process.env["ProgramFiles(x86)"]) {
|
|
52
|
-
paths.push(`${process.env["ProgramFiles(x86)"]}\\Git\\bin\\bash.exe`);
|
|
53
|
-
}
|
|
54
|
-
for (const p of paths) {
|
|
55
|
-
if (existsSync(p)) {
|
|
56
|
-
cachedShellConfig = { shell: p, args: ["-c"] };
|
|
57
|
-
return cachedShellConfig;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
const bashOnPath = findBashOnPath();
|
|
61
|
-
if (bashOnPath) {
|
|
62
|
-
cachedShellConfig = { shell: bashOnPath, args: ["-c"] };
|
|
63
|
-
return cachedShellConfig;
|
|
64
|
-
}
|
|
65
|
-
throw new Error("No bash shell found. Install Git for Windows or add bash to PATH.");
|
|
66
|
-
}
|
|
67
|
-
if (existsSync("/bin/bash")) {
|
|
68
|
-
cachedShellConfig = { shell: "/bin/bash", args: ["-c"] };
|
|
69
|
-
return cachedShellConfig;
|
|
70
|
-
}
|
|
71
|
-
const bashOnPath = findBashOnPath();
|
|
72
|
-
if (bashOnPath) {
|
|
73
|
-
cachedShellConfig = { shell: bashOnPath, args: ["-c"] };
|
|
74
|
-
return cachedShellConfig;
|
|
75
|
-
}
|
|
76
|
-
cachedShellConfig = { shell: "sh", args: ["-c"] };
|
|
77
|
-
return cachedShellConfig;
|
|
78
|
-
}
|
|
79
|
-
function getLoginShellEnv() {
|
|
80
|
-
if (cachedLoginShellEnv) {
|
|
81
|
-
return cachedLoginShellEnv;
|
|
82
|
-
}
|
|
83
|
-
const shell = process.env.SHELL ?? (process.platform === "win32" ? undefined : "/bin/zsh");
|
|
84
|
-
if (!shell) {
|
|
85
|
-
cachedLoginShellEnv = { ...process.env };
|
|
86
|
-
return cachedLoginShellEnv;
|
|
87
|
-
}
|
|
88
|
-
try {
|
|
89
|
-
const quotedShell = shell.replace(/'/g, "'\\''");
|
|
90
|
-
const output = execSync(`'${quotedShell}' -ilc 'env'`, {
|
|
91
|
-
encoding: "utf-8",
|
|
92
|
-
timeout: 5000,
|
|
93
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
94
|
-
env: { ...process.env },
|
|
95
|
-
});
|
|
96
|
-
const loginEnv = { ...process.env };
|
|
97
|
-
for (const line of output.split(/\r?\n/)) {
|
|
98
|
-
const separatorIndex = line.indexOf("=");
|
|
99
|
-
if (separatorIndex <= 0) {
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
const key = line.slice(0, separatorIndex);
|
|
103
|
-
const value = line.slice(separatorIndex + 1);
|
|
104
|
-
loginEnv[key] = value;
|
|
105
|
-
}
|
|
106
|
-
cachedLoginShellEnv = loginEnv;
|
|
107
|
-
return cachedLoginShellEnv;
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
cachedLoginShellEnv = { ...process.env };
|
|
111
|
-
return cachedLoginShellEnv;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
export function getShellEnv() {
|
|
115
|
-
return { ...getLoginShellEnv() };
|
|
116
|
-
}
|
|
117
|
-
export function killProcessTree(pid) {
|
|
118
|
-
if (process.platform === "win32") {
|
|
119
|
-
try {
|
|
120
|
-
spawnProcess("taskkill", ["/F", "/T", "/PID", String(pid)], {
|
|
121
|
-
stdio: "ignore",
|
|
122
|
-
detached: true,
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
catch {
|
|
126
|
-
// ignore
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
try {
|
|
131
|
-
process.kill(-pid, "SIGKILL");
|
|
132
|
-
}
|
|
133
|
-
catch {
|
|
134
|
-
try {
|
|
135
|
-
process.kill(pid, "SIGKILL");
|
|
136
|
-
}
|
|
137
|
-
catch {
|
|
138
|
-
// already dead
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
//# sourceMappingURL=shell.js.map
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill Reference Tool
|
|
3
|
-
*
|
|
4
|
-
* Loads reference files from activated skills' references/ directories on-demand.
|
|
5
|
-
* This implements progressive disclosure - reference files are only loaded when needed.
|
|
6
|
-
*/
|
|
7
|
-
import type { AgentTool } from "@mariozechner/pi-agent-core";
|
|
8
|
-
import { type Static } from "@sinclair/typebox";
|
|
9
|
-
import type { Skill } from "@tarsk/shared";
|
|
10
|
-
/**
|
|
11
|
-
* Schema for skill reference tool input
|
|
12
|
-
*/
|
|
13
|
-
declare const skillReferenceSchema: import("@sinclair/typebox").TObject<{
|
|
14
|
-
skillName: import("@sinclair/typebox").TString;
|
|
15
|
-
referencePath: import("@sinclair/typebox").TString;
|
|
16
|
-
}>;
|
|
17
|
-
export type SkillReferenceToolInput = Static<typeof skillReferenceSchema>;
|
|
18
|
-
/**
|
|
19
|
-
* Create a skill reference reader tool
|
|
20
|
-
*/
|
|
21
|
-
export declare function createSkillReferenceTool(skills: Skill[]): AgentTool<typeof skillReferenceSchema>;
|
|
22
|
-
/**
|
|
23
|
-
* List all available skill references (utility function)
|
|
24
|
-
*/
|
|
25
|
-
export declare function listSkillReferences(skills: Skill[]): Promise<Array<{
|
|
26
|
-
skillName: string;
|
|
27
|
-
referencePath: string;
|
|
28
|
-
}>>;
|
|
29
|
-
export {};
|
|
30
|
-
//# sourceMappingURL=skill-reference-tool.d.ts.map
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill Reference Tool
|
|
3
|
-
*
|
|
4
|
-
* Loads reference files from activated skills' references/ directories on-demand.
|
|
5
|
-
* This implements progressive disclosure - reference files are only loaded when needed.
|
|
6
|
-
*/
|
|
7
|
-
import { readFile, readdir } from "fs/promises";
|
|
8
|
-
import { join, normalize, relative } from "path";
|
|
9
|
-
import { existsSync } from "fs";
|
|
10
|
-
import { Type } from "@sinclair/typebox";
|
|
11
|
-
/**
|
|
12
|
-
* Validate that a reference path is safe (no path traversal attacks)
|
|
13
|
-
*/
|
|
14
|
-
function isPathSafe(basePath, requestedPath) {
|
|
15
|
-
const normalized = normalize(requestedPath);
|
|
16
|
-
const fullPath = join(basePath, normalized);
|
|
17
|
-
const relativePath = relative(basePath, fullPath);
|
|
18
|
-
// Check if the relative path tries to escape the base directory
|
|
19
|
-
return !relativePath.startsWith("..") && !relativePath.startsWith("/");
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Schema for skill reference tool input
|
|
23
|
-
*/
|
|
24
|
-
const skillReferenceSchema = Type.Object({
|
|
25
|
-
skillName: Type.String({ description: "Name of the skill" }),
|
|
26
|
-
referencePath: Type.String({
|
|
27
|
-
description: 'Path to the reference file relative to the skill\'s references/ directory (e.g., "api-reference.md" or "guides/setup.md")',
|
|
28
|
-
}),
|
|
29
|
-
});
|
|
30
|
-
/**
|
|
31
|
-
* Create a skill reference reader tool
|
|
32
|
-
*/
|
|
33
|
-
export function createSkillReferenceTool(skills) {
|
|
34
|
-
return {
|
|
35
|
-
name: "read_skill_reference",
|
|
36
|
-
label: "read_skill_reference",
|
|
37
|
-
description: "Read a reference file from an activated skill. Skills provide additional documentation in their references/ directory.",
|
|
38
|
-
parameters: skillReferenceSchema,
|
|
39
|
-
execute: async (_toolCallId, { skillName, referencePath }) => {
|
|
40
|
-
// Find the skill
|
|
41
|
-
const skill = skills.find((s) => s.name === skillName);
|
|
42
|
-
if (!skill) {
|
|
43
|
-
return {
|
|
44
|
-
content: [
|
|
45
|
-
{
|
|
46
|
-
type: "text",
|
|
47
|
-
text: `Skill not found: ${skillName}. Available skills: ${skills.map((s) => s.name).join(", ")}`,
|
|
48
|
-
},
|
|
49
|
-
],
|
|
50
|
-
details: undefined,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
// Check if references directory exists
|
|
54
|
-
const referencesDir = join(skill.skillPath, "references");
|
|
55
|
-
if (!existsSync(referencesDir)) {
|
|
56
|
-
return {
|
|
57
|
-
content: [
|
|
58
|
-
{ type: "text", text: `Skill '${skillName}' has no references directory` },
|
|
59
|
-
],
|
|
60
|
-
details: undefined,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
// Validate path safety (prevent path traversal)
|
|
64
|
-
if (!isPathSafe(referencesDir, referencePath)) {
|
|
65
|
-
return {
|
|
66
|
-
content: [
|
|
67
|
-
{
|
|
68
|
-
type: "text",
|
|
69
|
-
text: `Invalid reference path: ${referencePath}. Path must be within the skill's references directory.`,
|
|
70
|
-
},
|
|
71
|
-
],
|
|
72
|
-
details: undefined,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
// Read the reference file
|
|
76
|
-
const fullPath = join(referencesDir, referencePath);
|
|
77
|
-
if (!existsSync(fullPath)) {
|
|
78
|
-
// List available references for better error message
|
|
79
|
-
try {
|
|
80
|
-
const availableRefs = await listReferencesRecursive(referencesDir);
|
|
81
|
-
return {
|
|
82
|
-
content: [
|
|
83
|
-
{
|
|
84
|
-
type: "text",
|
|
85
|
-
text: `Reference file '${referencePath}' not found in skill '${skillName}'. Available references:\n${availableRefs.join("\n")}`,
|
|
86
|
-
},
|
|
87
|
-
],
|
|
88
|
-
details: undefined,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
return {
|
|
93
|
-
content: [
|
|
94
|
-
{
|
|
95
|
-
type: "text",
|
|
96
|
-
text: `Reference file '${referencePath}' not found in skill '${skillName}'`,
|
|
97
|
-
},
|
|
98
|
-
],
|
|
99
|
-
details: undefined,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
try {
|
|
104
|
-
const content = await readFile(fullPath, "utf-8");
|
|
105
|
-
return {
|
|
106
|
-
content: [{ type: "text", text: content }],
|
|
107
|
-
details: undefined,
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
return {
|
|
112
|
-
content: [
|
|
113
|
-
{
|
|
114
|
-
type: "text",
|
|
115
|
-
text: `Failed to read reference file: ${error instanceof Error ? error.message : String(error)}`,
|
|
116
|
-
},
|
|
117
|
-
],
|
|
118
|
-
details: undefined,
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Recursively list all reference files in a directory
|
|
126
|
-
*/
|
|
127
|
-
async function listReferencesRecursive(dir, prefix = "") {
|
|
128
|
-
const files = [];
|
|
129
|
-
try {
|
|
130
|
-
const entries = await readdir(dir, { withFileTypes: true });
|
|
131
|
-
for (const entry of entries) {
|
|
132
|
-
const relativePath = prefix ? join(prefix, entry.name) : entry.name;
|
|
133
|
-
if (entry.isDirectory()) {
|
|
134
|
-
const subFiles = await listReferencesRecursive(join(dir, entry.name), relativePath);
|
|
135
|
-
files.push(...subFiles);
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
files.push(relativePath);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
catch (error) {
|
|
143
|
-
console.error(`Failed to list references in ${dir}:`, error);
|
|
144
|
-
}
|
|
145
|
-
return files;
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* List all available skill references (utility function)
|
|
149
|
-
*/
|
|
150
|
-
export async function listSkillReferences(skills) {
|
|
151
|
-
const references = [];
|
|
152
|
-
for (const skill of skills) {
|
|
153
|
-
const referencesDir = join(skill.skillPath, "references");
|
|
154
|
-
if (!existsSync(referencesDir))
|
|
155
|
-
continue;
|
|
156
|
-
try {
|
|
157
|
-
const files = await listReferencesRecursive(referencesDir);
|
|
158
|
-
for (const file of files) {
|
|
159
|
-
references.push({
|
|
160
|
-
skillName: skill.name,
|
|
161
|
-
referencePath: file,
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
catch (error) {
|
|
166
|
-
console.error(`Failed to list references for skill ${skill.name}:`, error);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
return references;
|
|
170
|
-
}
|
|
171
|
-
//# sourceMappingURL=skill-reference-tool.js.map
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill Script Tool
|
|
3
|
-
*
|
|
4
|
-
* Executes scripts from activated skills' scripts/ directories.
|
|
5
|
-
* Scripts can be written in any supported language (.sh, .py, .js, etc.)
|
|
6
|
-
*/
|
|
7
|
-
import type { AgentTool } from "@mariozechner/pi-agent-core";
|
|
8
|
-
import { type Static } from "@sinclair/typebox";
|
|
9
|
-
import type { Skill } from "@tarsk/shared";
|
|
10
|
-
/**
|
|
11
|
-
* Schema for skill script tool input
|
|
12
|
-
*/
|
|
13
|
-
declare const skillScriptSchema: import("@sinclair/typebox").TObject<{
|
|
14
|
-
skillName: import("@sinclair/typebox").TString;
|
|
15
|
-
scriptName: import("@sinclair/typebox").TString;
|
|
16
|
-
args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
17
|
-
timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
18
|
-
}>;
|
|
19
|
-
export type SkillScriptToolInput = Static<typeof skillScriptSchema>;
|
|
20
|
-
/**
|
|
21
|
-
* Create a skill script executor tool
|
|
22
|
-
*/
|
|
23
|
-
export declare function createSkillScriptTool(skills: Skill[], cwd: string): AgentTool<typeof skillScriptSchema>;
|
|
24
|
-
/**
|
|
25
|
-
* List all available skill scripts
|
|
26
|
-
*/
|
|
27
|
-
export declare function listSkillScripts(skills: Skill[]): Promise<Array<{
|
|
28
|
-
skillName: string;
|
|
29
|
-
scriptName: string;
|
|
30
|
-
path: string;
|
|
31
|
-
}>>;
|
|
32
|
-
export {};
|
|
33
|
-
//# sourceMappingURL=skill-tool.d.ts.map
|
package/dist/tools/skill-tool.js
DELETED
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill Script Tool
|
|
3
|
-
*
|
|
4
|
-
* Executes scripts from activated skills' scripts/ directories.
|
|
5
|
-
* Scripts can be written in any supported language (.sh, .py, .js, etc.)
|
|
6
|
-
*/
|
|
7
|
-
import { readdir } from "fs/promises";
|
|
8
|
-
import { join, extname } from "path";
|
|
9
|
-
import { existsSync, statSync } from "fs";
|
|
10
|
-
import { Type } from "@sinclair/typebox";
|
|
11
|
-
import { spawnProcess } from "../core/utils.js";
|
|
12
|
-
/**
|
|
13
|
-
* Get the interpreter for a script based on its extension
|
|
14
|
-
*/
|
|
15
|
-
function getInterpreter(scriptPath) {
|
|
16
|
-
const ext = extname(scriptPath);
|
|
17
|
-
switch (ext) {
|
|
18
|
-
case ".sh":
|
|
19
|
-
case ".bash":
|
|
20
|
-
return { command: "bash", args: [scriptPath] };
|
|
21
|
-
case ".py":
|
|
22
|
-
return { command: "python3", args: [scriptPath] };
|
|
23
|
-
case ".js":
|
|
24
|
-
return { command: "node", args: [scriptPath] };
|
|
25
|
-
case ".ts":
|
|
26
|
-
// Use bun to run TypeScript directly
|
|
27
|
-
return { command: "bun", args: ["run", scriptPath] };
|
|
28
|
-
default:
|
|
29
|
-
// Try to execute directly if it's executable
|
|
30
|
-
try {
|
|
31
|
-
const stats = statSync(scriptPath);
|
|
32
|
-
if (stats.mode & 0o111) {
|
|
33
|
-
// File is executable
|
|
34
|
-
return { command: scriptPath, args: [] };
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
// Ignore stat errors
|
|
39
|
-
}
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Execute a skill script
|
|
45
|
-
*/
|
|
46
|
-
async function executeScript(scriptPath, args, cwd, timeout = 30) {
|
|
47
|
-
const interpreter = getInterpreter(scriptPath);
|
|
48
|
-
if (!interpreter) {
|
|
49
|
-
throw new Error(`Unsupported script type: ${scriptPath}`);
|
|
50
|
-
}
|
|
51
|
-
return new Promise((resolve, reject) => {
|
|
52
|
-
const child = spawnProcess(interpreter.command, [...interpreter.args, ...args], {
|
|
53
|
-
cwd,
|
|
54
|
-
timeout: timeout * 1000,
|
|
55
|
-
});
|
|
56
|
-
let stdout = "";
|
|
57
|
-
let stderr = "";
|
|
58
|
-
let timedOut = false;
|
|
59
|
-
if (child.stdout) {
|
|
60
|
-
child.stdout.on("data", (data) => {
|
|
61
|
-
stdout += data.toString();
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
if (child.stderr) {
|
|
65
|
-
child.stderr.on("data", (data) => {
|
|
66
|
-
stderr += data.toString();
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
const timeoutHandle = setTimeout(() => {
|
|
70
|
-
timedOut = true;
|
|
71
|
-
child.kill("SIGTERM");
|
|
72
|
-
}, timeout * 1000);
|
|
73
|
-
child.on("error", (err) => {
|
|
74
|
-
clearTimeout(timeoutHandle);
|
|
75
|
-
reject(err);
|
|
76
|
-
});
|
|
77
|
-
child.on("close", (code) => {
|
|
78
|
-
clearTimeout(timeoutHandle);
|
|
79
|
-
if (timedOut) {
|
|
80
|
-
reject(new Error(`Script execution timed out after ${timeout}s`));
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
resolve({ stdout, stderr, exitCode: code });
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Schema for skill script tool input
|
|
89
|
-
*/
|
|
90
|
-
const skillScriptSchema = Type.Object({
|
|
91
|
-
skillName: Type.String({ description: "Name of the skill" }),
|
|
92
|
-
scriptName: Type.String({ description: "Name of the script to execute (without path)" }),
|
|
93
|
-
args: Type.Optional(Type.Array(Type.String(), { description: "Arguments to pass to the script" })),
|
|
94
|
-
timeout: Type.Optional(Type.Number({ description: "Timeout in seconds (default: 30)" })),
|
|
95
|
-
});
|
|
96
|
-
/**
|
|
97
|
-
* Create a skill script executor tool
|
|
98
|
-
*/
|
|
99
|
-
export function createSkillScriptTool(skills, cwd) {
|
|
100
|
-
return {
|
|
101
|
-
name: "execute_skill_script",
|
|
102
|
-
label: "execute_skill_script",
|
|
103
|
-
description: "Execute a script from an activated skill. Skills provide executable scripts in their scripts/ directory.",
|
|
104
|
-
parameters: skillScriptSchema,
|
|
105
|
-
execute: async (_toolCallId, { skillName, scriptName, args = [], timeout = 30 }) => {
|
|
106
|
-
// Find the skill
|
|
107
|
-
const skill = skills.find((s) => s.name === skillName);
|
|
108
|
-
if (!skill) {
|
|
109
|
-
return {
|
|
110
|
-
content: [
|
|
111
|
-
{
|
|
112
|
-
type: "text",
|
|
113
|
-
text: `Skill not found: ${skillName}. Available skills: ${skills.map((s) => s.name).join(", ")}`,
|
|
114
|
-
},
|
|
115
|
-
],
|
|
116
|
-
details: undefined,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
// Check if scripts directory exists
|
|
120
|
-
const scriptsDir = join(skill.skillPath, "scripts");
|
|
121
|
-
if (!existsSync(scriptsDir)) {
|
|
122
|
-
return {
|
|
123
|
-
content: [
|
|
124
|
-
{ type: "text", text: `Skill '${skillName}' has no scripts directory` },
|
|
125
|
-
],
|
|
126
|
-
details: undefined,
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
// Find the script
|
|
130
|
-
const scriptPath = join(scriptsDir, scriptName);
|
|
131
|
-
if (!existsSync(scriptPath)) {
|
|
132
|
-
// List available scripts for better error message
|
|
133
|
-
try {
|
|
134
|
-
const availableScripts = await readdir(scriptsDir);
|
|
135
|
-
return {
|
|
136
|
-
content: [
|
|
137
|
-
{
|
|
138
|
-
type: "text",
|
|
139
|
-
text: `Script '${scriptName}' not found in skill '${skillName}'. Available scripts: ${availableScripts.join(", ")}`,
|
|
140
|
-
},
|
|
141
|
-
],
|
|
142
|
-
details: undefined,
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
catch {
|
|
146
|
-
return {
|
|
147
|
-
content: [
|
|
148
|
-
{
|
|
149
|
-
type: "text",
|
|
150
|
-
text: `Script '${scriptName}' not found in skill '${skillName}'`,
|
|
151
|
-
},
|
|
152
|
-
],
|
|
153
|
-
details: undefined,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
try {
|
|
158
|
-
const result = await executeScript(scriptPath, args, cwd, timeout);
|
|
159
|
-
// Format output
|
|
160
|
-
let output = "";
|
|
161
|
-
if (result.stdout) {
|
|
162
|
-
output += `STDOUT:\n${result.stdout}\n`;
|
|
163
|
-
}
|
|
164
|
-
if (result.stderr) {
|
|
165
|
-
output += `STDERR:\n${result.stderr}\n`;
|
|
166
|
-
}
|
|
167
|
-
output += `Exit code: ${result.exitCode}\n`;
|
|
168
|
-
return {
|
|
169
|
-
content: [{ type: "text", text: output }],
|
|
170
|
-
details: undefined,
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
catch (error) {
|
|
174
|
-
return {
|
|
175
|
-
content: [
|
|
176
|
-
{
|
|
177
|
-
type: "text",
|
|
178
|
-
text: `Failed to execute script: ${error instanceof Error ? error.message : String(error)}`,
|
|
179
|
-
},
|
|
180
|
-
],
|
|
181
|
-
details: undefined,
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
},
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* List all available skill scripts
|
|
189
|
-
*/
|
|
190
|
-
export async function listSkillScripts(skills) {
|
|
191
|
-
const scripts = [];
|
|
192
|
-
for (const skill of skills) {
|
|
193
|
-
const scriptsDir = join(skill.skillPath, "scripts");
|
|
194
|
-
if (!existsSync(scriptsDir))
|
|
195
|
-
continue;
|
|
196
|
-
try {
|
|
197
|
-
const files = await readdir(scriptsDir);
|
|
198
|
-
for (const file of files) {
|
|
199
|
-
const fullPath = join(scriptsDir, file);
|
|
200
|
-
scripts.push({
|
|
201
|
-
skillName: skill.name,
|
|
202
|
-
scriptName: file,
|
|
203
|
-
path: fullPath,
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
catch (error) {
|
|
208
|
-
console.error(`Failed to list scripts for skill ${skill.name}:`, error);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
return scripts;
|
|
212
|
-
}
|
|
213
|
-
//# sourceMappingURL=skill-tool.js.map
|
package/dist/tools/todo.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { AgentTool } from "@mariozechner/pi-agent-core";
|
|
2
|
-
import { type Static } from "@sinclair/typebox";
|
|
3
|
-
declare const todoSchema: import("@sinclair/typebox").TObject<{
|
|
4
|
-
action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"add">, import("@sinclair/typebox").TLiteral<"update">, import("@sinclair/typebox").TLiteral<"list">, import("@sinclair/typebox").TLiteral<"delete">]>;
|
|
5
|
-
descriptions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
6
|
-
ids: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
7
|
-
status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"working">, import("@sinclair/typebox").TLiteral<"done">]>>;
|
|
8
|
-
assignedTo: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
9
|
-
}>;
|
|
10
|
-
export type TodoToolInput = Static<typeof todoSchema>;
|
|
11
|
-
export declare function createTodoTool(threadId: string): AgentTool<typeof todoSchema>;
|
|
12
|
-
export declare const todoTool: AgentTool<import("@sinclair/typebox").TObject<{
|
|
13
|
-
action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"add">, import("@sinclair/typebox").TLiteral<"update">, import("@sinclair/typebox").TLiteral<"list">, import("@sinclair/typebox").TLiteral<"delete">]>;
|
|
14
|
-
descriptions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
15
|
-
ids: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
16
|
-
status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"working">, import("@sinclair/typebox").TLiteral<"done">]>>;
|
|
17
|
-
assignedTo: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
18
|
-
}>, any>;
|
|
19
|
-
export {};
|
|
20
|
-
//# sourceMappingURL=todo.d.ts.map
|