@taico/taico 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-runs/agent-run.entity.d.ts +3 -0
- package/dist/agent-runs/agent-run.entity.js +14 -1
- package/dist/agent-runs/agent-run.entity.js.map +1 -1
- package/dist/agent-runs/agent-runs.controller.js +17 -2
- package/dist/agent-runs/agent-runs.controller.js.map +1 -1
- package/dist/agent-runs/agent-runs.service.js +14 -0
- package/dist/agent-runs/agent-runs.service.js.map +1 -1
- package/dist/agent-runs/dto/agent-run-response.dto.d.ts +1 -0
- package/dist/agent-runs/dto/agent-run-response.dto.js +12 -0
- package/dist/agent-runs/dto/agent-run-response.dto.js.map +1 -1
- package/dist/agent-runs/dto/create-agent-run.dto.d.ts +1 -0
- package/dist/agent-runs/dto/create-agent-run.dto.js +11 -0
- package/dist/agent-runs/dto/create-agent-run.dto.js.map +1 -1
- package/dist/agent-runs/dto/service/agent-runs.service.types.d.ts +3 -0
- package/dist/agent-runs/dto/update-agent-run.dto.d.ts +1 -0
- package/dist/agent-runs/dto/update-agent-run.dto.js +11 -0
- package/dist/agent-runs/dto/update-agent-run.dto.js.map +1 -1
- package/dist/agents/agent-execution-tokens.controller.d.ts +13 -0
- package/dist/agents/agent-execution-tokens.controller.js +87 -0
- package/dist/agents/agent-execution-tokens.controller.js.map +1 -0
- package/dist/agents/agents.module.js +6 -1
- package/dist/agents/agents.module.js.map +1 -1
- package/dist/agents/agents.scopes.d.ts +4 -0
- package/dist/agents/agents.scopes.js +4 -0
- package/dist/agents/agents.scopes.js.map +1 -1
- package/dist/agents/agents.service.d.ts +3 -0
- package/dist/agents/agents.service.js +15 -0
- package/dist/agents/agents.service.js.map +1 -1
- package/dist/agents/dto/agent-execution-token-response.dto.d.ts +7 -0
- package/dist/agents/dto/agent-execution-token-response.dto.js +58 -0
- package/dist/agents/dto/agent-execution-token-response.dto.js.map +1 -0
- package/dist/agents/dto/request-agent-execution-token.dto.d.ts +4 -0
- package/dist/agents/dto/request-agent-execution-token.dto.js +43 -0
- package/dist/agents/dto/request-agent-execution-token.dto.js.map +1 -0
- package/dist/app-init/agent/taico.agent.js +4 -1
- package/dist/app-init/agent/taico.agent.js.map +1 -1
- package/dist/app-init/app-init.module.js +2 -0
- package/dist/app-init/app-init.module.js.map +1 -1
- package/dist/app-init/app-init.runner.d.ts +5 -1
- package/dist/app-init/app-init.runner.js +50 -16
- package/dist/app-init/app-init.runner.js.map +1 -1
- package/dist/app-init/mcp/internal-worker-auth.mcp.d.ts +3 -0
- package/dist/app-init/mcp/internal-worker-auth.mcp.js +15 -0
- package/dist/app-init/mcp/internal-worker-auth.mcp.js.map +1 -0
- package/dist/app.module.js +24 -2
- package/dist/app.module.js.map +1 -1
- package/dist/auth/core/constants/internal-auth-target.constant.d.ts +1 -0
- package/dist/auth/core/constants/internal-auth-target.constant.js +10 -0
- package/dist/auth/core/constants/internal-auth-target.constant.js.map +1 -0
- package/dist/auth/core/scopes/all-api.scopes.js +4 -0
- package/dist/auth/core/scopes/all-api.scopes.js.map +1 -1
- package/dist/auth/guards/constants/headers.constants.d.ts +1 -0
- package/dist/auth/guards/constants/headers.constants.js +2 -1
- package/dist/auth/guards/constants/headers.constants.js.map +1 -1
- package/dist/auth/guards/decorators/current-execution-id.decorator.d.ts +1 -0
- package/dist/auth/guards/decorators/current-execution-id.decorator.js +11 -0
- package/dist/auth/guards/decorators/current-execution-id.decorator.js.map +1 -0
- package/dist/authorization-server/dto/register-client.dto.js +2 -2
- package/dist/authorization-server/dto/register-client.dto.js.map +1 -1
- package/dist/chat-providers/chat-provider.entity.d.ts +14 -0
- package/dist/chat-providers/chat-provider.entity.js +73 -0
- package/dist/chat-providers/chat-provider.entity.js.map +1 -0
- package/dist/chat-providers/chat-providers.controller.d.ts +19 -0
- package/dist/chat-providers/chat-providers.controller.js +179 -0
- package/dist/chat-providers/chat-providers.controller.js.map +1 -0
- package/dist/chat-providers/chat-providers.module.d.ts +2 -0
- package/dist/chat-providers/chat-providers.module.js +32 -0
- package/dist/chat-providers/chat-providers.module.js.map +1 -0
- package/dist/chat-providers/chat-providers.scopes.d.ts +20 -0
- package/dist/chat-providers/chat-providers.scopes.js +23 -0
- package/dist/chat-providers/chat-providers.scopes.js.map +1 -0
- package/dist/chat-providers/chat-providers.service.d.ts +20 -0
- package/dist/chat-providers/chat-providers.service.js +189 -0
- package/dist/chat-providers/chat-providers.service.js.map +1 -0
- package/dist/chat-providers/dto/http/chat-provider-params.dto.d.ts +3 -0
- package/dist/chat-providers/dto/http/chat-provider-params.dto.js +27 -0
- package/dist/chat-providers/dto/http/chat-provider-params.dto.js.map +1 -0
- package/dist/chat-providers/dto/http/chat-provider-response.dto.d.ts +12 -0
- package/dist/chat-providers/dto/http/chat-provider-response.dto.js +93 -0
- package/dist/chat-providers/dto/http/chat-provider-response.dto.js.map +1 -0
- package/dist/chat-providers/dto/http/create-chat-provider.dto.d.ts +6 -0
- package/dist/chat-providers/dto/http/create-chat-provider.dto.js +51 -0
- package/dist/chat-providers/dto/http/create-chat-provider.dto.js.map +1 -0
- package/dist/chat-providers/dto/http/set-active-chat-provider.dto.d.ts +3 -0
- package/dist/chat-providers/dto/http/set-active-chat-provider.dto.js +28 -0
- package/dist/chat-providers/dto/http/set-active-chat-provider.dto.js.map +1 -0
- package/dist/chat-providers/dto/http/update-chat-provider.dto.d.ts +5 -0
- package/dist/chat-providers/dto/http/update-chat-provider.dto.js +49 -0
- package/dist/chat-providers/dto/http/update-chat-provider.dto.js.map +1 -0
- package/dist/chat-providers/dto/service/chat-providers.service.types.d.ts +30 -0
- package/dist/chat-providers/dto/service/chat-providers.service.types.js +3 -0
- package/dist/chat-providers/dto/service/chat-providers.service.types.js.map +1 -0
- package/dist/chat-providers/enums/chat-provider-type.enum.d.ts +3 -0
- package/dist/chat-providers/enums/chat-provider-type.enum.js +8 -0
- package/dist/chat-providers/enums/chat-provider-type.enum.js.map +1 -0
- package/dist/chat-providers/enums/index.d.ts +1 -0
- package/dist/chat-providers/enums/index.js +18 -0
- package/dist/chat-providers/enums/index.js.map +1 -0
- package/dist/chat-providers/errors/chat-providers.errors.d.ts +25 -0
- package/dist/chat-providers/errors/chat-providers.errors.js +48 -0
- package/dist/chat-providers/errors/chat-providers.errors.js.map +1 -0
- package/dist/config/env.config.d.ts +4 -1
- package/dist/config/env.config.js +17 -13
- package/dist/config/env.config.js.map +1 -1
- package/dist/context/context.controller.d.ts +3 -0
- package/dist/context/context.controller.js +26 -0
- package/dist/context/context.controller.js.map +1 -1
- package/dist/context/context.service.d.ts +5 -2
- package/dist/context/context.service.js +37 -2
- package/dist/context/context.service.js.map +1 -1
- package/dist/context/dto/block-search-result.dto.d.ts +5 -0
- package/dist/context/dto/block-search-result.dto.js +43 -0
- package/dist/context/dto/block-search-result.dto.js.map +1 -0
- package/dist/context/dto/search-blocks-query.dto.d.ts +5 -0
- package/dist/context/dto/search-blocks-query.dto.js +60 -0
- package/dist/context/dto/search-blocks-query.dto.js.map +1 -0
- package/dist/context/dto/service/context.service.types.d.ts +10 -0
- package/dist/discovery/discovery.service.js +2 -0
- package/dist/discovery/discovery.service.js.map +1 -1
- package/dist/errors/http/error-catalog.js +54 -0
- package/dist/errors/http/error-catalog.js.map +1 -1
- package/dist/executions/dto/http/execution-list-response.dto.d.ts +8 -0
- package/dist/executions/dto/http/execution-list-response.dto.js +58 -0
- package/dist/executions/dto/http/execution-list-response.dto.js.map +1 -0
- package/dist/executions/dto/http/execution-response.dto.d.ts +24 -0
- package/dist/executions/dto/http/execution-response.dto.js +225 -0
- package/dist/executions/dto/http/execution-response.dto.js.map +1 -0
- package/dist/executions/dto/http/list-executions-query.dto.d.ts +8 -0
- package/dist/executions/dto/http/list-executions-query.dto.js +79 -0
- package/dist/executions/dto/http/list-executions-query.dto.js.map +1 -0
- package/dist/executions/dto/service/execution-claim.service.types.d.ts +27 -0
- package/dist/executions/dto/service/execution-claim.service.types.js +3 -0
- package/dist/executions/dto/service/execution-claim.service.types.js.map +1 -0
- package/dist/executions/dto/service/executions.service.types.d.ts +35 -0
- package/dist/executions/dto/service/executions.service.types.js +3 -0
- package/dist/executions/dto/service/executions.service.types.js.map +1 -0
- package/dist/executions/enums/index.d.ts +2 -0
- package/dist/executions/enums/index.js +8 -0
- package/dist/executions/enums/index.js.map +1 -0
- package/dist/executions/enums/task-execution-status.enum.d.ts +10 -0
- package/dist/executions/enums/task-execution-status.enum.js +15 -0
- package/dist/executions/enums/task-execution-status.enum.js.map +1 -0
- package/dist/executions/enums/worker-session-status.enum.d.ts +6 -0
- package/dist/executions/enums/worker-session-status.enum.js +11 -0
- package/dist/executions/enums/worker-session-status.enum.js.map +1 -0
- package/dist/executions/errors/executions.errors.d.ts +21 -0
- package/dist/executions/errors/executions.errors.js +41 -0
- package/dist/executions/errors/executions.errors.js.map +1 -0
- package/dist/executions/events/executions.events.d.ts +25 -0
- package/dist/executions/events/executions.events.js +39 -0
- package/dist/executions/events/executions.events.js.map +1 -0
- package/dist/executions/execution-claim.service.d.ts +17 -0
- package/dist/executions/execution-claim.service.js +368 -0
- package/dist/executions/execution-claim.service.js.map +1 -0
- package/dist/executions/execution-context-resolver.service.d.ts +21 -0
- package/dist/executions/execution-context-resolver.service.js +119 -0
- package/dist/executions/execution-context-resolver.service.js.map +1 -0
- package/dist/executions/execution-reconciler.service.d.ts +24 -0
- package/dist/executions/execution-reconciler.service.js +345 -0
- package/dist/executions/execution-reconciler.service.js.map +1 -0
- package/dist/executions/executions.controller.d.ts +8 -0
- package/dist/executions/executions.controller.js +70 -0
- package/dist/executions/executions.controller.js.map +1 -0
- package/dist/executions/executions.gateway.d.ts +21 -0
- package/dist/executions/executions.gateway.js +167 -0
- package/dist/executions/executions.gateway.js.map +1 -0
- package/dist/executions/executions.module.d.ts +2 -0
- package/dist/executions/executions.module.js +64 -0
- package/dist/executions/executions.module.js.map +1 -0
- package/dist/executions/executions.service.d.ts +15 -0
- package/dist/executions/executions.service.js +119 -0
- package/dist/executions/executions.service.js.map +1 -0
- package/dist/executions/task-execution.entity.d.ts +25 -0
- package/dist/executions/task-execution.entity.js +130 -0
- package/dist/executions/task-execution.entity.js.map +1 -0
- package/dist/executions/worker-session.entity.d.ts +19 -0
- package/dist/executions/worker-session.entity.js +103 -0
- package/dist/executions/worker-session.entity.js.map +1 -0
- package/dist/executions/worker-session.service.d.ts +24 -0
- package/dist/executions/worker-session.service.js +115 -0
- package/dist/executions/worker-session.service.js.map +1 -0
- package/dist/executions/workers.gateway.d.ts +25 -0
- package/dist/executions/workers.gateway.js +355 -0
- package/dist/executions/workers.gateway.js.map +1 -0
- package/dist/executions/workers.scopes.d.ts +8 -0
- package/dist/executions/workers.scopes.js +11 -0
- package/dist/executions/workers.scopes.js.map +1 -0
- package/dist/executions-v2/active/active-execution-context-resolver.service.d.ts +18 -0
- package/dist/executions-v2/active/active-execution-context-resolver.service.js +78 -0
- package/dist/executions-v2/active/active-execution-context-resolver.service.js.map +1 -0
- package/dist/executions-v2/active/active-task-execution.controller.d.ts +11 -0
- package/dist/executions-v2/active/active-task-execution.controller.js +93 -0
- package/dist/executions-v2/active/active-task-execution.controller.js.map +1 -0
- package/dist/executions-v2/active/active-task-execution.entity.d.ts +24 -0
- package/dist/executions-v2/active/active-task-execution.entity.js +108 -0
- package/dist/executions-v2/active/active-task-execution.entity.js.map +1 -0
- package/dist/executions-v2/active/active-task-execution.service.d.ts +24 -0
- package/dist/executions-v2/active/active-task-execution.service.js +127 -0
- package/dist/executions-v2/active/active-task-execution.service.js.map +1 -0
- package/dist/executions-v2/active/dto/http/active-task-execution-response.dto.d.ts +22 -0
- package/dist/executions-v2/active/dto/http/active-task-execution-response.dto.js +152 -0
- package/dist/executions-v2/active/dto/http/active-task-execution-response.dto.js.map +1 -0
- package/dist/executions-v2/active/dto/http/stop-active-task-execution.dto.d.ts +7 -0
- package/dist/executions-v2/active/dto/http/stop-active-task-execution.dto.js +58 -0
- package/dist/executions-v2/active/dto/http/stop-active-task-execution.dto.js.map +1 -0
- package/dist/executions-v2/errors/executions-v2.errors.d.ts +13 -0
- package/dist/executions-v2/errors/executions-v2.errors.js +31 -0
- package/dist/executions-v2/errors/executions-v2.errors.js.map +1 -0
- package/dist/executions-v2/events/execution-activity.events.d.ts +20 -0
- package/dist/executions-v2/events/execution-activity.events.js +15 -0
- package/dist/executions-v2/events/execution-activity.events.js.map +1 -0
- package/dist/executions-v2/execution-activity.service.d.ts +20 -0
- package/dist/executions-v2/execution-activity.service.js +68 -0
- package/dist/executions-v2/execution-activity.service.js.map +1 -0
- package/dist/executions-v2/executions-v2-worker.gateway.d.ts +29 -0
- package/dist/executions-v2/executions-v2-worker.gateway.js +149 -0
- package/dist/executions-v2/executions-v2-worker.gateway.js.map +1 -0
- package/dist/executions-v2/executions-v2.module.d.ts +2 -0
- package/dist/executions-v2/executions-v2.module.js +78 -0
- package/dist/executions-v2/executions-v2.module.js.map +1 -0
- package/dist/executions-v2/history/dto/http/task-execution-history-response.dto.d.ts +18 -0
- package/dist/executions-v2/history/dto/http/task-execution-history-response.dto.js +129 -0
- package/dist/executions-v2/history/dto/http/task-execution-history-response.dto.js.map +1 -0
- package/dist/executions-v2/history/task-execution-history-error-code.enum.d.ts +4 -0
- package/dist/executions-v2/history/task-execution-history-error-code.enum.js +9 -0
- package/dist/executions-v2/history/task-execution-history-error-code.enum.js.map +1 -0
- package/dist/executions-v2/history/task-execution-history-status.enum.d.ts +6 -0
- package/dist/executions-v2/history/task-execution-history-status.enum.js +11 -0
- package/dist/executions-v2/history/task-execution-history-status.enum.js.map +1 -0
- package/dist/executions-v2/history/task-execution-history.controller.d.ts +7 -0
- package/dist/executions-v2/history/task-execution-history.controller.js +51 -0
- package/dist/executions-v2/history/task-execution-history.controller.js.map +1 -0
- package/dist/executions-v2/history/task-execution-history.entity.d.ts +21 -0
- package/dist/executions-v2/history/task-execution-history.entity.js +113 -0
- package/dist/executions-v2/history/task-execution-history.entity.js.map +1 -0
- package/dist/executions-v2/history/task-execution-history.service.d.ts +7 -0
- package/dist/executions-v2/history/task-execution-history.service.js +38 -0
- package/dist/executions-v2/history/task-execution-history.service.js.map +1 -0
- package/dist/executions-v2/queue/dto/http/task-execution-queue-entry-response.dto.d.ts +8 -0
- package/dist/executions-v2/queue/dto/http/task-execution-queue-entry-response.dto.js +52 -0
- package/dist/executions-v2/queue/dto/http/task-execution-queue-entry-response.dto.js.map +1 -0
- package/dist/executions-v2/queue/task-execution-queue.controller.d.ts +12 -0
- package/dist/executions-v2/queue/task-execution-queue.controller.js +100 -0
- package/dist/executions-v2/queue/task-execution-queue.controller.js.map +1 -0
- package/dist/executions-v2/queue/task-execution-queue.entity.d.ts +9 -0
- package/dist/executions-v2/queue/task-execution-queue.entity.js +52 -0
- package/dist/executions-v2/queue/task-execution-queue.entity.js.map +1 -0
- package/dist/executions-v2/queue/task-execution-queue.service.d.ts +7 -0
- package/dist/executions-v2/queue/task-execution-queue.service.js +38 -0
- package/dist/executions-v2/queue/task-execution-queue.service.js.map +1 -0
- package/dist/executions-v2/readiness/readiness-candidate.repository.d.ts +11 -0
- package/dist/executions-v2/readiness/readiness-candidate.repository.js +65 -0
- package/dist/executions-v2/readiness/readiness-candidate.repository.js.map +1 -0
- package/dist/executions-v2/readiness/task-eligibility-event-source.service.d.ts +13 -0
- package/dist/executions-v2/readiness/task-eligibility-event-source.service.js +83 -0
- package/dist/executions-v2/readiness/task-eligibility-event-source.service.js.map +1 -0
- package/dist/executions-v2/readiness/task-eligibility-scheduler.service.d.ts +7 -0
- package/dist/executions-v2/readiness/task-eligibility-scheduler.service.js +41 -0
- package/dist/executions-v2/readiness/task-eligibility-scheduler.service.js.map +1 -0
- package/dist/executions-v2/readiness/task-execution-queue-populator.service.d.ts +19 -0
- package/dist/executions-v2/readiness/task-execution-queue-populator.service.js +138 -0
- package/dist/executions-v2/readiness/task-execution-queue-populator.service.js.map +1 -0
- package/dist/executions-v2/staleness/stale-active-task-execution-detector.service.d.ts +13 -0
- package/dist/executions-v2/staleness/stale-active-task-execution-detector.service.js +54 -0
- package/dist/executions-v2/staleness/stale-active-task-execution-detector.service.js.map +1 -0
- package/dist/executions-v2/staleness/stale-active-task-execution-pruner.service.d.ts +9 -0
- package/dist/executions-v2/staleness/stale-active-task-execution-pruner.service.js +116 -0
- package/dist/executions-v2/staleness/stale-active-task-execution-pruner.service.js.map +1 -0
- package/dist/executions-v2/staleness/stale-active-task-execution-scheduler.service.d.ts +9 -0
- package/dist/executions-v2/staleness/stale-active-task-execution-scheduler.service.js +62 -0
- package/dist/executions-v2/staleness/stale-active-task-execution-scheduler.service.js.map +1 -0
- package/dist/executions-v2/task-activity-projection.service.d.ts +7 -0
- package/dist/executions-v2/task-activity-projection.service.js +43 -0
- package/dist/executions-v2/task-activity-projection.service.js.map +1 -0
- package/dist/global-search/dto/global-search-query.dto.d.ts +5 -0
- package/dist/global-search/dto/global-search-query.dto.js +60 -0
- package/dist/global-search/dto/global-search-query.dto.js.map +1 -0
- package/dist/global-search/dto/global-search-result.dto.d.ts +15 -0
- package/dist/global-search/dto/global-search-result.dto.js +69 -0
- package/dist/global-search/dto/global-search-result.dto.js.map +1 -0
- package/dist/global-search/global-search.controller.d.ts +8 -0
- package/dist/global-search/global-search.controller.js +63 -0
- package/dist/global-search/global-search.controller.js.map +1 -0
- package/dist/global-search/global-search.module.d.ts +2 -0
- package/dist/global-search/global-search.module.js +37 -0
- package/dist/global-search/global-search.module.js.map +1 -0
- package/dist/global-search/global-search.service.d.ts +28 -0
- package/dist/global-search/global-search.service.js +137 -0
- package/dist/global-search/global-search.service.js.map +1 -0
- package/dist/llm/llm.module.js +2 -0
- package/dist/llm/llm.module.js.map +1 -1
- package/dist/llm/openai-responses.service.d.ts +3 -0
- package/dist/llm/openai-responses.service.js +20 -5
- package/dist/llm/openai-responses.service.js.map +1 -1
- package/dist/main.js +73 -30
- package/dist/main.js.map +1 -1
- package/dist/mcp-registry/dto/service/mcp-registry.service.types.d.ts +10 -0
- package/dist/mcp-registry/mcp-registry.module.js +2 -0
- package/dist/mcp-registry/mcp-registry.module.js.map +1 -1
- package/dist/mcp-registry/mcp-registry.service.d.ts +6 -2
- package/dist/mcp-registry/mcp-registry.service.js +54 -9
- package/dist/mcp-registry/mcp-registry.service.js.map +1 -1
- package/dist/migrations/1740100000000-AddChatProvidersTable.d.ts +5 -0
- package/dist/migrations/1740100000000-AddChatProvidersTable.js +32 -0
- package/dist/migrations/1740100000000-AddChatProvidersTable.js.map +1 -0
- package/dist/migrations/1741400000000-EnforceSingleThreadPerParentTask.d.ts +5 -0
- package/dist/migrations/1741400000000-EnforceSingleThreadPerParentTask.js +76 -0
- package/dist/migrations/1741400000000-EnforceSingleThreadPerParentTask.js.map +1 -0
- package/dist/migrations/1741500000000-AddExecutionPersistenceTables.d.ts +5 -0
- package/dist/migrations/1741500000000-AddExecutionPersistenceTables.js +84 -0
- package/dist/migrations/1741500000000-AddExecutionPersistenceTables.js.map +1 -0
- package/dist/migrations/1741600000000-AddTaskExecutionIdToAgentRuns.d.ts +5 -0
- package/dist/migrations/1741600000000-AddTaskExecutionIdToAgentRuns.js +66 -0
- package/dist/migrations/1741600000000-AddTaskExecutionIdToAgentRuns.js.map +1 -0
- package/dist/migrations/1741700000000-AddExecutionsV2Tables.d.ts +5 -0
- package/dist/migrations/1741700000000-AddExecutionsV2Tables.js +103 -0
- package/dist/migrations/1741700000000-AddExecutionsV2Tables.js.map +1 -0
- package/dist/migrations/1741800000000-AddLastHeartbeatAtToActiveExecutionsV2.d.ts +5 -0
- package/dist/migrations/1741800000000-AddLastHeartbeatAtToActiveExecutionsV2.js +19 -0
- package/dist/migrations/1741800000000-AddLastHeartbeatAtToActiveExecutionsV2.js.map +1 -0
- package/dist/migrations/1741900000000-AddErrorMessageToTaskExecutionHistoryV2.d.ts +6 -0
- package/dist/migrations/1741900000000-AddErrorMessageToTaskExecutionHistoryV2.js +20 -0
- package/dist/migrations/1741900000000-AddErrorMessageToTaskExecutionHistoryV2.js.map +1 -0
- package/dist/public/assets/index-BYBolBql.css +1 -0
- package/dist/public/assets/index-Cr1iblrK.js +73 -0
- package/dist/public/beta/assets/index-DCkmROA6.js +85 -0
- package/dist/public/beta/index.html +1 -1
- package/dist/public/index.html +2 -2
- package/dist/secrets/errors/secrets.errors.js +1 -1
- package/dist/secrets/errors/secrets.errors.js.map +1 -1
- package/dist/secrets/secrets-encryption.service.d.ts +1 -0
- package/dist/secrets/secrets-encryption.service.js +21 -6
- package/dist/secrets/secrets-encryption.service.js.map +1 -1
- package/dist/tasks/dto/service/tasks.service.types.d.ts +2 -1
- package/dist/tasks/dto/task-response.dto.js +1 -0
- package/dist/tasks/dto/task-response.dto.js.map +1 -1
- package/dist/tasks/events/tasks.events.d.ts +11 -0
- package/dist/tasks/events/tasks.events.js +8 -1
- package/dist/tasks/events/tasks.events.js.map +1 -1
- package/dist/tasks/tasks.controller.d.ts +2 -2
- package/dist/tasks/tasks.controller.js +14 -10
- package/dist/tasks/tasks.controller.js.map +1 -1
- package/dist/tasks/tasks.gateway.d.ts +4 -3
- package/dist/tasks/tasks.gateway.js +17 -0
- package/dist/tasks/tasks.gateway.js.map +1 -1
- package/dist/tasks/tasks.mcp.gateway.d.ts +1 -1
- package/dist/tasks/tasks.mcp.gateway.js +5 -4
- package/dist/tasks/tasks.mcp.gateway.js.map +1 -1
- package/dist/tasks/tasks.module.js +2 -0
- package/dist/tasks/tasks.module.js.map +1 -1
- package/dist/tasks/tasks.service.create-task-in-thread.spec.d.ts +1 -0
- package/dist/tasks/tasks.service.create-task-in-thread.spec.js +46 -0
- package/dist/tasks/tasks.service.create-task-in-thread.spec.js.map +1 -0
- package/dist/tasks/tasks.service.d.ts +3 -1
- package/dist/tasks/tasks.service.js +32 -20
- package/dist/tasks/tasks.service.js.map +1 -1
- package/dist/threads/chat.service.d.ts +17 -3
- package/dist/threads/chat.service.js +269 -11
- package/dist/threads/chat.service.js.map +1 -1
- package/dist/threads/dto/service/threads.service.types.d.ts +1 -0
- package/dist/threads/dto/thread-list-item-response.dto.d.ts +1 -0
- package/dist/threads/dto/thread-list-item-response.dto.js +8 -0
- package/dist/threads/dto/thread-list-item-response.dto.js.map +1 -1
- package/dist/threads/errors/threads.errors.d.ts +4 -1
- package/dist/threads/errors/threads.errors.js +8 -1
- package/dist/threads/errors/threads.errors.js.map +1 -1
- package/dist/threads/thread-state-reconciler.service.js +0 -1
- package/dist/threads/thread-state-reconciler.service.js.map +1 -1
- package/dist/threads/threads.controller.d.ts +1 -0
- package/dist/threads/threads.controller.js +16 -0
- package/dist/threads/threads.controller.js.map +1 -1
- package/dist/threads/threads.module.js +2 -0
- package/dist/threads/threads.module.js.map +1 -1
- package/dist/threads/threads.service.d.ts +3 -0
- package/dist/threads/threads.service.js +85 -14
- package/dist/threads/threads.service.js.map +1 -1
- package/dist/threads/threads.service.spec.js +41 -27
- package/dist/threads/threads.service.spec.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/worker/auth/callback-server.d.ts +6 -0
- package/dist/worker/auth/callback-server.js +50 -0
- package/dist/worker/auth/callback-server.js.map +1 -0
- package/dist/worker/auth/credentials-store.d.ts +4 -0
- package/dist/worker/auth/credentials-store.js +23 -0
- package/dist/worker/auth/credentials-store.js.map +1 -0
- package/dist/worker/auth/oauth-client.d.ts +4 -0
- package/dist/worker/auth/oauth-client.js +116 -0
- package/dist/worker/auth/oauth-client.js.map +1 -0
- package/dist/worker/auth/worker-auth-client.d.ts +9 -0
- package/dist/worker/auth/worker-auth-client.js +35 -0
- package/dist/worker/auth/worker-auth-client.js.map +1 -0
- package/dist/worker/auth/worker-auth.types.d.ts +30 -0
- package/dist/worker/auth/worker-auth.types.js +3 -0
- package/dist/worker/auth/worker-auth.types.js.map +1 -0
- package/dist/worker/execution-orchestrator.d.ts +25 -0
- package/dist/worker/execution-orchestrator.js +186 -0
- package/dist/worker/execution-orchestrator.js.map +1 -0
- package/dist/worker/formatters/claude-message-formatter.d.ts +13 -0
- package/dist/worker/formatters/claude-message-formatter.js +90 -0
- package/dist/worker/formatters/claude-message-formatter.js.map +1 -0
- package/dist/worker/formatters/opencode-message-formatter.d.ts +6 -0
- package/dist/worker/formatters/opencode-message-formatter.js +51 -0
- package/dist/worker/formatters/opencode-message-formatter.js.map +1 -0
- package/dist/worker/helpers/ensure-repo.d.ts +1 -0
- package/dist/worker/helpers/ensure-repo.js +37 -0
- package/dist/worker/helpers/ensure-repo.js.map +1 -0
- package/dist/worker/helpers/prepare-workspace.d.ts +1 -0
- package/dist/worker/helpers/prepare-workspace.js +24 -0
- package/dist/worker/helpers/prepare-workspace.js.map +1 -0
- package/dist/worker/helpers/session-store.d.ts +2 -0
- package/dist/worker/helpers/session-store.js +47 -0
- package/dist/worker/helpers/session-store.js.map +1 -0
- package/dist/worker/runners/agent-runner.types.d.ts +28 -0
- package/dist/worker/runners/agent-runner.types.js +3 -0
- package/dist/worker/runners/agent-runner.types.js.map +1 -0
- package/dist/worker/runners/base-agent-runner.d.ts +10 -0
- package/dist/worker/runners/base-agent-runner.js +41 -0
- package/dist/worker/runners/base-agent-runner.js.map +1 -0
- package/dist/worker/runners/claude-agent-runner.d.ts +9 -0
- package/dist/worker/runners/claude-agent-runner.js +79 -0
- package/dist/worker/runners/claude-agent-runner.js.map +1 -0
- package/dist/worker/runners/opencode-agent-runner.d.ts +18 -0
- package/dist/worker/runners/opencode-agent-runner.js +170 -0
- package/dist/worker/runners/opencode-agent-runner.js.map +1 -0
- package/dist/worker/worker-gateway-client.d.ts +45 -0
- package/dist/worker/worker-gateway-client.js +332 -0
- package/dist/worker/worker-gateway-client.js.map +1 -0
- package/dist/worker/worker-mode.d.ts +6 -0
- package/dist/worker/worker-mode.js +40 -0
- package/dist/worker/worker-mode.js.map +1 -0
- package/package.json +19 -12
- package/dist/public/assets/index-DlrnfsdV.js +0 -14
- package/dist/public/assets/index-KcLmbe3v.css +0 -1
- package/dist/public/beta/assets/index-BeS9PvAQ.js +0 -85
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createOAuthCallbackServer = createOAuthCallbackServer;
|
|
4
|
+
const http_1 = require("http");
|
|
5
|
+
async function createOAuthCallbackServer() {
|
|
6
|
+
const server = (0, http_1.createServer)();
|
|
7
|
+
let pendingResolve = null;
|
|
8
|
+
server.on('request', (req, res) => {
|
|
9
|
+
const url = new URL(req.url ?? '/', 'http://127.0.0.1');
|
|
10
|
+
const code = url.searchParams.get('code');
|
|
11
|
+
const state = url.searchParams.get('state');
|
|
12
|
+
if (!code || !state) {
|
|
13
|
+
res.statusCode = 400;
|
|
14
|
+
res.end('Missing code or state');
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
res.statusCode = 200;
|
|
18
|
+
res.end('Taico worker authorization completed. You can close this tab.');
|
|
19
|
+
if (pendingResolve) {
|
|
20
|
+
pendingResolve({ code, state });
|
|
21
|
+
pendingResolve = null;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
await new Promise((resolve, reject) => {
|
|
25
|
+
server.once('error', reject);
|
|
26
|
+
server.listen(0, '127.0.0.1', () => {
|
|
27
|
+
server.off('error', reject);
|
|
28
|
+
resolve();
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
const address = server.address();
|
|
32
|
+
if (!address || typeof address === 'string') {
|
|
33
|
+
throw new Error('Failed to bind local callback server');
|
|
34
|
+
}
|
|
35
|
+
const redirectUri = `http://127.0.0.1:${address.port}/callback`;
|
|
36
|
+
return {
|
|
37
|
+
redirectUri,
|
|
38
|
+
waitForCode: async (expectedState) => {
|
|
39
|
+
const result = await new Promise((resolve) => {
|
|
40
|
+
pendingResolve = resolve;
|
|
41
|
+
});
|
|
42
|
+
server.close();
|
|
43
|
+
if (result.state !== expectedState) {
|
|
44
|
+
throw new Error('OAuth callback state mismatch');
|
|
45
|
+
}
|
|
46
|
+
return { code: result.code };
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=callback-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callback-server.js","sourceRoot":"","sources":["../../../src/worker/auth/callback-server.ts"],"names":[],"mappings":";;AAEA,8DA2DC;AA7DD,+BAAoC;AAE7B,KAAK,UAAU,yBAAyB;IAI7C,MAAM,MAAM,GAAG,IAAA,mBAAY,GAAE,CAAC;IAC9B,IAAI,cAAc,GAEP,IAAI,CAAC;IAEhB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAChC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;QACrB,GAAG,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAEzE,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAChC,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,WAAW,GAAG,oBAAoB,OAAO,CAAC,IAAI,WAAW,CAAC;IAEhE,OAAO;QACL,WAAW;QACX,WAAW,EAAE,KAAK,EAAE,aAAqB,EAAE,EAAE;YAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAC9B,CAAC,OAAO,EAAE,EAAE;gBACV,cAAc,GAAG,OAAO,CAAC;YAC3B,CAAC,CACF,CAAC;YACF,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,MAAM,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WorkerCredentials } from './worker-auth.types';
|
|
2
|
+
export declare const DEFAULT_WORKER_CREDENTIALS_PATH: string;
|
|
3
|
+
export declare function readWorkerCredentials(credentialsPath: string): Promise<WorkerCredentials | null>;
|
|
4
|
+
export declare function writeWorkerCredentials(credentialsPath: string, credentials: WorkerCredentials): Promise<void>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_WORKER_CREDENTIALS_PATH = void 0;
|
|
4
|
+
exports.readWorkerCredentials = readWorkerCredentials;
|
|
5
|
+
exports.writeWorkerCredentials = writeWorkerCredentials;
|
|
6
|
+
const promises_1 = require("fs/promises");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const os_1 = require("os");
|
|
9
|
+
exports.DEFAULT_WORKER_CREDENTIALS_PATH = (0, path_1.join)((0, os_1.homedir)(), '.taico', 'worker-credentials.json');
|
|
10
|
+
async function readWorkerCredentials(credentialsPath) {
|
|
11
|
+
try {
|
|
12
|
+
const content = await (0, promises_1.readFile)(credentialsPath, 'utf8');
|
|
13
|
+
return JSON.parse(content);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async function writeWorkerCredentials(credentialsPath, credentials) {
|
|
20
|
+
await (0, promises_1.mkdir)((0, path_1.dirname)(credentialsPath), { recursive: true });
|
|
21
|
+
await (0, promises_1.writeFile)(credentialsPath, JSON.stringify(credentials, null, 2), 'utf8');
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=credentials-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials-store.js","sourceRoot":"","sources":["../../../src/worker/auth/credentials-store.ts"],"names":[],"mappings":";;;AAWA,sDASC;AAED,wDAMC;AA5BD,0CAAyD;AACzD,+BAAqC;AACrC,2BAA6B;AAGhB,QAAA,+BAA+B,GAAG,IAAA,WAAI,EACjD,IAAA,YAAO,GAAE,EACT,QAAQ,EACR,yBAAyB,CAC1B,CAAC;AAEK,KAAK,UAAU,qBAAqB,CACzC,eAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,eAAuB,EACvB,WAA8B;IAE9B,MAAM,IAAA,gBAAK,EAAC,IAAA,cAAO,EAAC,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,IAAA,oBAAS,EAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AuthorizationServerMetadata, WorkerCredentials } from './worker-auth.types';
|
|
2
|
+
export declare function discoverAuthorizationServer(serverUrl: string): Promise<AuthorizationServerMetadata>;
|
|
3
|
+
export declare function bootstrapWorkerAuthorization(serverUrl: string, metadata: AuthorizationServerMetadata): Promise<WorkerCredentials>;
|
|
4
|
+
export declare function refreshWorkerToken(credentials: WorkerCredentials): Promise<WorkerCredentials>;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.discoverAuthorizationServer = discoverAuthorizationServer;
|
|
4
|
+
exports.bootstrapWorkerAuthorization = bootstrapWorkerAuthorization;
|
|
5
|
+
exports.refreshWorkerToken = refreshWorkerToken;
|
|
6
|
+
const crypto_1 = require("crypto");
|
|
7
|
+
const internal_auth_target_constant_1 = require("../../auth/core/constants/internal-auth-target.constant");
|
|
8
|
+
const callback_server_1 = require("./callback-server");
|
|
9
|
+
const WORKER_AUTH_VERSION = '0.0.0';
|
|
10
|
+
const WORKER_SCOPE = internal_auth_target_constant_1.INTERNAL_WORKER_AUTH_SCOPES.map((scope) => scope.id).join(' ');
|
|
11
|
+
async function discoverAuthorizationServer(serverUrl) {
|
|
12
|
+
const discoveryUrl = `${serverUrl}/.well-known/oauth-authorization-server/mcp/${internal_auth_target_constant_1.INTERNAL_WORKER_AUTH_TARGET_ID}/${WORKER_AUTH_VERSION}`;
|
|
13
|
+
const response = await fetch(discoveryUrl);
|
|
14
|
+
if (!response.ok) {
|
|
15
|
+
throw new Error(`Failed to discover authorization server metadata: ${response.status} ${response.statusText}`);
|
|
16
|
+
}
|
|
17
|
+
return response.json();
|
|
18
|
+
}
|
|
19
|
+
async function bootstrapWorkerAuthorization(serverUrl, metadata) {
|
|
20
|
+
const callback = await (0, callback_server_1.createOAuthCallbackServer)();
|
|
21
|
+
const redirectUri = callback.redirectUri;
|
|
22
|
+
const codeVerifier = (0, crypto_1.randomBytes)(32).toString('base64url');
|
|
23
|
+
const codeChallenge = (0, crypto_1.createHash)('sha256')
|
|
24
|
+
.update(codeVerifier)
|
|
25
|
+
.digest('base64url');
|
|
26
|
+
const registrationResponse = await fetch(metadata.registration_endpoint, {
|
|
27
|
+
method: 'POST',
|
|
28
|
+
headers: { 'Content-Type': 'application/json' },
|
|
29
|
+
body: JSON.stringify({
|
|
30
|
+
client_name: `Taico Worker (${process.pid})`,
|
|
31
|
+
redirect_uris: [redirectUri],
|
|
32
|
+
grant_types: ['authorization_code', 'refresh_token'],
|
|
33
|
+
response_types: ['code'],
|
|
34
|
+
token_endpoint_auth_method: 'none',
|
|
35
|
+
scope: WORKER_SCOPE,
|
|
36
|
+
}),
|
|
37
|
+
});
|
|
38
|
+
if (!registrationResponse.ok) {
|
|
39
|
+
throw new Error(`Failed to register worker client: ${registrationResponse.status} ${registrationResponse.statusText}`);
|
|
40
|
+
}
|
|
41
|
+
const registration = (await registrationResponse.json());
|
|
42
|
+
const state = (0, crypto_1.randomBytes)(16).toString('base64url');
|
|
43
|
+
const authorizationUrl = new URL(metadata.authorization_endpoint);
|
|
44
|
+
authorizationUrl.searchParams.set('response_type', 'code');
|
|
45
|
+
authorizationUrl.searchParams.set('client_id', registration.client_id);
|
|
46
|
+
authorizationUrl.searchParams.set('redirect_uri', redirectUri);
|
|
47
|
+
authorizationUrl.searchParams.set('scope', WORKER_SCOPE);
|
|
48
|
+
authorizationUrl.searchParams.set('state', state);
|
|
49
|
+
authorizationUrl.searchParams.set('code_challenge', codeChallenge);
|
|
50
|
+
authorizationUrl.searchParams.set('code_challenge_method', 'S256');
|
|
51
|
+
authorizationUrl.searchParams.set('resource', `${serverUrl}/api/v1`);
|
|
52
|
+
console.log('[worker] Open this URL in your browser to authorize the worker:');
|
|
53
|
+
console.log(authorizationUrl.toString());
|
|
54
|
+
const callbackResult = await callback.waitForCode(state);
|
|
55
|
+
const tokenResponse = await exchangeAuthorizationCode(metadata.token_endpoint, {
|
|
56
|
+
clientId: registration.client_id,
|
|
57
|
+
code: callbackResult.code,
|
|
58
|
+
redirectUri,
|
|
59
|
+
codeVerifier,
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
serverUrl,
|
|
63
|
+
clientId: registration.client_id,
|
|
64
|
+
redirectUri,
|
|
65
|
+
scope: tokenResponse.scope ?? WORKER_SCOPE,
|
|
66
|
+
tokenEndpoint: metadata.token_endpoint,
|
|
67
|
+
authorizationEndpoint: metadata.authorization_endpoint,
|
|
68
|
+
registrationEndpoint: metadata.registration_endpoint,
|
|
69
|
+
accessToken: tokenResponse.access_token,
|
|
70
|
+
refreshToken: tokenResponse.refresh_token ?? '',
|
|
71
|
+
expiresAt: computeExpirationIso(tokenResponse.expires_in),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
async function refreshWorkerToken(credentials) {
|
|
75
|
+
const response = await fetch(credentials.tokenEndpoint, {
|
|
76
|
+
method: 'POST',
|
|
77
|
+
headers: { 'Content-Type': 'application/json' },
|
|
78
|
+
body: JSON.stringify({
|
|
79
|
+
grant_type: 'refresh_token',
|
|
80
|
+
client_id: credentials.clientId,
|
|
81
|
+
refresh_token: credentials.refreshToken,
|
|
82
|
+
}),
|
|
83
|
+
});
|
|
84
|
+
if (!response.ok) {
|
|
85
|
+
throw new Error(`Failed to refresh worker token: ${response.status} ${response.statusText}`);
|
|
86
|
+
}
|
|
87
|
+
const payload = (await response.json());
|
|
88
|
+
return {
|
|
89
|
+
...credentials,
|
|
90
|
+
accessToken: payload.access_token,
|
|
91
|
+
refreshToken: payload.refresh_token ?? credentials.refreshToken,
|
|
92
|
+
expiresAt: computeExpirationIso(payload.expires_in),
|
|
93
|
+
scope: payload.scope ?? credentials.scope,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
async function exchangeAuthorizationCode(tokenEndpoint, input) {
|
|
97
|
+
const response = await fetch(tokenEndpoint, {
|
|
98
|
+
method: 'POST',
|
|
99
|
+
headers: { 'Content-Type': 'application/json' },
|
|
100
|
+
body: JSON.stringify({
|
|
101
|
+
grant_type: 'authorization_code',
|
|
102
|
+
client_id: input.clientId,
|
|
103
|
+
code: input.code,
|
|
104
|
+
redirect_uri: input.redirectUri,
|
|
105
|
+
code_verifier: input.codeVerifier,
|
|
106
|
+
}),
|
|
107
|
+
});
|
|
108
|
+
if (!response.ok) {
|
|
109
|
+
throw new Error(`Failed to exchange authorization code: ${response.status} ${response.statusText}`);
|
|
110
|
+
}
|
|
111
|
+
return response.json();
|
|
112
|
+
}
|
|
113
|
+
function computeExpirationIso(expiresInSeconds) {
|
|
114
|
+
return new Date(Date.now() + expiresInSeconds * 1000).toISOString();
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=oauth-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-client.js","sourceRoot":"","sources":["../../../src/worker/auth/oauth-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { WorkerCredentials } from './worker-auth.types';
|
|
2
|
+
export declare function getAuthenticatedWorkerSession(input: {
|
|
3
|
+
serverUrl: string;
|
|
4
|
+
credentialsPath?: string;
|
|
5
|
+
}): Promise<{
|
|
6
|
+
credentials: WorkerCredentials;
|
|
7
|
+
credentialsPath: string;
|
|
8
|
+
didBootstrap: boolean;
|
|
9
|
+
}>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAuthenticatedWorkerSession = getAuthenticatedWorkerSession;
|
|
4
|
+
const credentials_store_1 = require("./credentials-store");
|
|
5
|
+
const internal_auth_target_constant_1 = require("../../auth/core/constants/internal-auth-target.constant");
|
|
6
|
+
const oauth_client_1 = require("./oauth-client");
|
|
7
|
+
async function getAuthenticatedWorkerSession(input) {
|
|
8
|
+
const credentialsPath = input.credentialsPath ?? credentials_store_1.DEFAULT_WORKER_CREDENTIALS_PATH;
|
|
9
|
+
const metadata = await (0, oauth_client_1.discoverAuthorizationServer)(input.serverUrl);
|
|
10
|
+
let credentials = await (0, credentials_store_1.readWorkerCredentials)(credentialsPath);
|
|
11
|
+
let didBootstrap = false;
|
|
12
|
+
const requiredScopes = new Set(internal_auth_target_constant_1.INTERNAL_WORKER_AUTH_SCOPES.map((scope) => scope.id));
|
|
13
|
+
if (!credentials ||
|
|
14
|
+
credentials.serverUrl !== input.serverUrl ||
|
|
15
|
+
!hasRequiredScopes(credentials, requiredScopes)) {
|
|
16
|
+
credentials = await (0, oauth_client_1.bootstrapWorkerAuthorization)(input.serverUrl, metadata);
|
|
17
|
+
await (0, credentials_store_1.writeWorkerCredentials)(credentialsPath, credentials);
|
|
18
|
+
didBootstrap = true;
|
|
19
|
+
}
|
|
20
|
+
credentials = await (0, oauth_client_1.refreshWorkerToken)(credentials);
|
|
21
|
+
await (0, credentials_store_1.writeWorkerCredentials)(credentialsPath, credentials);
|
|
22
|
+
return {
|
|
23
|
+
credentials,
|
|
24
|
+
credentialsPath,
|
|
25
|
+
didBootstrap,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function hasRequiredScopes(credentials, requiredScopes) {
|
|
29
|
+
const grantedScopes = new Set(credentials.scope
|
|
30
|
+
.split(/\s+/)
|
|
31
|
+
.map((scope) => scope.trim())
|
|
32
|
+
.filter(Boolean));
|
|
33
|
+
return Array.from(requiredScopes).every((scope) => grantedScopes.has(scope));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=worker-auth-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-auth-client.js","sourceRoot":"","sources":["../../../src/worker/auth/worker-auth-client.ts"],"names":[],"mappings":";;AAaA,sEAmCC;AAhDD,2DAI6B;AAC7B,2GAAsG;AACtG,iDAIwB;AAGjB,KAAK,UAAU,6BAA6B,CAAC,KAGnD;IAKC,MAAM,eAAe,GACnB,KAAK,CAAC,eAAe,IAAI,mDAA+B,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,IAAA,0CAA2B,EAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,WAAW,GAAG,MAAM,IAAA,yCAAqB,EAAC,eAAe,CAAC,CAAC;IAC/D,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,2DAA2B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CACrD,CAAC;IAEF,IACE,CAAC,WAAW;QACZ,WAAW,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;QACzC,CAAC,iBAAiB,CAAC,WAAW,EAAE,cAAc,CAAC,EAC/C,CAAC;QACD,WAAW,GAAG,MAAM,IAAA,2CAA4B,EAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC5E,MAAM,IAAA,0CAAsB,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAC3D,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,WAAW,GAAG,MAAM,IAAA,iCAAkB,EAAC,WAAW,CAAC,CAAC;IACpD,MAAM,IAAA,0CAAsB,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAE3D,OAAO;QACL,WAAW;QACX,eAAe;QACf,YAAY;KACb,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,WAA8B,EAC9B,cAA2B;IAE3B,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,WAAW,CAAC,KAAK;SACd,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC,CACnB,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type AuthorizationServerMetadata = {
|
|
2
|
+
issuer: string;
|
|
3
|
+
authorization_endpoint: string;
|
|
4
|
+
token_endpoint: string;
|
|
5
|
+
registration_endpoint: string;
|
|
6
|
+
scopes_supported: string[];
|
|
7
|
+
response_types_supported: string[];
|
|
8
|
+
grant_types_supported: string[];
|
|
9
|
+
token_endpoint_auth_methods_supported: string[];
|
|
10
|
+
code_challenge_methods_supported: string[];
|
|
11
|
+
};
|
|
12
|
+
export type WorkerCredentials = {
|
|
13
|
+
serverUrl: string;
|
|
14
|
+
clientId: string;
|
|
15
|
+
redirectUri: string;
|
|
16
|
+
scope: string;
|
|
17
|
+
tokenEndpoint: string;
|
|
18
|
+
authorizationEndpoint: string;
|
|
19
|
+
registrationEndpoint: string;
|
|
20
|
+
accessToken: string;
|
|
21
|
+
refreshToken: string;
|
|
22
|
+
expiresAt: string;
|
|
23
|
+
};
|
|
24
|
+
export type TokenResponse = {
|
|
25
|
+
access_token: string;
|
|
26
|
+
token_type: string;
|
|
27
|
+
expires_in: number;
|
|
28
|
+
refresh_token?: string;
|
|
29
|
+
scope?: string;
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-auth.types.js","sourceRoot":"","sources":["../../../src/worker/auth/worker-auth.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { WorkerGatewayClient } from './worker-gateway-client';
|
|
2
|
+
type ExecutionOrchestratorOptions = {
|
|
3
|
+
serverUrl: string;
|
|
4
|
+
workerAccessToken: string;
|
|
5
|
+
gatewayClient: WorkerGatewayClient;
|
|
6
|
+
};
|
|
7
|
+
export declare class ExecutionOrchestrator {
|
|
8
|
+
private readonly options;
|
|
9
|
+
private readonly activeExecutionIds;
|
|
10
|
+
constructor(options: ExecutionOrchestratorOptions);
|
|
11
|
+
bind(): void;
|
|
12
|
+
private handleRunAssigned;
|
|
13
|
+
private handleStopRequested;
|
|
14
|
+
private executeAssignedRun;
|
|
15
|
+
private createRunner;
|
|
16
|
+
private buildPrompt;
|
|
17
|
+
private fetchTask;
|
|
18
|
+
private fetchThreadByTaskId;
|
|
19
|
+
private fetchAgentByActorId;
|
|
20
|
+
private requestExecutionToken;
|
|
21
|
+
private resolveRepoUrl;
|
|
22
|
+
private fetchJson;
|
|
23
|
+
private errorToMessage;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExecutionOrchestrator = void 0;
|
|
4
|
+
const prepare_workspace_1 = require("./helpers/prepare-workspace");
|
|
5
|
+
const session_store_1 = require("./helpers/session-store");
|
|
6
|
+
const claude_agent_runner_1 = require("./runners/claude-agent-runner");
|
|
7
|
+
const opencode_agent_runner_1 = require("./runners/opencode-agent-runner");
|
|
8
|
+
class ExecutionOrchestrator {
|
|
9
|
+
options;
|
|
10
|
+
activeExecutionIds = new Set();
|
|
11
|
+
constructor(options) {
|
|
12
|
+
this.options = options;
|
|
13
|
+
}
|
|
14
|
+
bind() {
|
|
15
|
+
this.options.gatewayClient.onRunAssigned((event) => {
|
|
16
|
+
void this.handleRunAssigned(event);
|
|
17
|
+
});
|
|
18
|
+
this.options.gatewayClient.onStopRequested((event) => {
|
|
19
|
+
this.handleStopRequested(event);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
async handleRunAssigned(event) {
|
|
23
|
+
if (this.activeExecutionIds.has(event.executionId)) {
|
|
24
|
+
console.warn(`[worker] received duplicate run assignment for execution ${event.executionId}`);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
this.activeExecutionIds.add(event.executionId);
|
|
28
|
+
try {
|
|
29
|
+
await this.options.gatewayClient.reportRunStarted(event.executionId);
|
|
30
|
+
await this.executeAssignedRun(event);
|
|
31
|
+
await this.options.gatewayClient.reportRunCompleted(event.executionId);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
const reason = this.errorToMessage(error);
|
|
35
|
+
console.error(`[worker] execution ${event.executionId} failed: ${reason}`, error);
|
|
36
|
+
await this.options.gatewayClient.reportRunFailed(event.executionId, reason);
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
this.activeExecutionIds.delete(event.executionId);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
handleStopRequested(event) {
|
|
43
|
+
if (!this.activeExecutionIds.has(event.executionId)) {
|
|
44
|
+
console.log(`[worker] stop requested for non-running execution ${event.executionId}`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
console.log(`[worker] stop requested for execution ${event.executionId}; cancellation is not yet implemented`);
|
|
48
|
+
}
|
|
49
|
+
async executeAssignedRun(event) {
|
|
50
|
+
const task = await this.fetchTask(event.taskId);
|
|
51
|
+
const agent = await this.fetchAgentByActorId(event.agentActorId);
|
|
52
|
+
if (!agent.systemPrompt) {
|
|
53
|
+
throw new Error(`Agent @${agent.slug} has no system prompt configured`);
|
|
54
|
+
}
|
|
55
|
+
const executionToken = await this.requestExecutionToken(agent.slug);
|
|
56
|
+
const repoUrl = await this.resolveRepoUrl(task.tags ?? []);
|
|
57
|
+
const workspaceDir = await (0, prepare_workspace_1.prepareWorkspace)(task.id, agent.actorId, repoUrl);
|
|
58
|
+
const thread = await this.fetchThreadByTaskId(task.id);
|
|
59
|
+
const runner = this.createRunner(agent.type);
|
|
60
|
+
console.log(`[worker] executing ${event.executionId} for task ${task.id} with @${agent.slug} in ${workspaceDir}`);
|
|
61
|
+
await runner.run({
|
|
62
|
+
taskId: task.id,
|
|
63
|
+
prompt: this.buildPrompt(task, agent, thread),
|
|
64
|
+
cwd: workspaceDir,
|
|
65
|
+
executionId: event.executionId,
|
|
66
|
+
accessToken: executionToken,
|
|
67
|
+
baseUrl: this.options.serverUrl,
|
|
68
|
+
resume: (0, session_store_1.getSession)(agent.actorId, task.id) ?? undefined,
|
|
69
|
+
agentSlug: agent.slug,
|
|
70
|
+
options: {
|
|
71
|
+
model: agent.providerId && agent.modelId
|
|
72
|
+
? `${agent.providerId}/${agent.modelId}`
|
|
73
|
+
: undefined,
|
|
74
|
+
},
|
|
75
|
+
}, {
|
|
76
|
+
onEvent: async (message) => {
|
|
77
|
+
console.log(`[worker][${event.executionId}] ${message}`);
|
|
78
|
+
},
|
|
79
|
+
onSession: async (sessionId) => {
|
|
80
|
+
(0, session_store_1.setSession)(agent.actorId, task.id, sessionId);
|
|
81
|
+
},
|
|
82
|
+
onError: async (runnerError) => {
|
|
83
|
+
console.error(`[worker][${event.executionId}] runner error: ${runnerError.message}`, runnerError.rawMessage);
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
createRunner(agentType) {
|
|
88
|
+
if (agentType === 'claude') {
|
|
89
|
+
return new claude_agent_runner_1.ClaudeAgentRunner();
|
|
90
|
+
}
|
|
91
|
+
if (agentType === 'opencode') {
|
|
92
|
+
return new opencode_agent_runner_1.OpencodeAgentRunner();
|
|
93
|
+
}
|
|
94
|
+
throw new Error(`Agent type "${agentType}" is not yet supported by backend worker mode`);
|
|
95
|
+
}
|
|
96
|
+
buildPrompt(task, agent, thread) {
|
|
97
|
+
const lines = [
|
|
98
|
+
`You got triggered by new activity in task "${task.id}".`,
|
|
99
|
+
'Fetch the task and proceed according to the following instructions.',
|
|
100
|
+
];
|
|
101
|
+
if (thread) {
|
|
102
|
+
lines.push('', 'Thread context:', `- This task belongs to thread "${thread.id}" (${thread.title}).`, `- This task is ${thread.parentTaskId === task.id ? 'the parent task' : 'an attached task'} in that thread.`, `- Read shared thread memory at the start via mcp__context__get_thread_state_memory with threadId "${thread.id}".`, `- Check sibling task status via mcp__tasks__list_tasks_by_thread with threadId "${thread.id}".`, '- Keep decisions aligned with this shared memory and thread-level goal, not only this single task.');
|
|
103
|
+
}
|
|
104
|
+
lines.push('', agent.systemPrompt);
|
|
105
|
+
return lines.join('\n');
|
|
106
|
+
}
|
|
107
|
+
async fetchTask(taskId) {
|
|
108
|
+
return this.fetchJson(`/api/v1/tasks/tasks/${taskId}`);
|
|
109
|
+
}
|
|
110
|
+
async fetchThreadByTaskId(taskId) {
|
|
111
|
+
try {
|
|
112
|
+
return await this.fetchJson(`/api/v1/threads/by-task/${taskId}`);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
const message = this.errorToMessage(error);
|
|
116
|
+
if (message.includes('HTTP 404')) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
async fetchAgentByActorId(actorId) {
|
|
123
|
+
const response = await this.fetchJson('/api/v1/agents?limit=200');
|
|
124
|
+
const agent = response.items.find((item) => item.actorId === actorId);
|
|
125
|
+
if (!agent) {
|
|
126
|
+
throw new Error(`No agent found for actor ${actorId}`);
|
|
127
|
+
}
|
|
128
|
+
return agent;
|
|
129
|
+
}
|
|
130
|
+
async requestExecutionToken(agentSlug) {
|
|
131
|
+
const response = await this.fetchJson(`/api/v1/agents/${agentSlug}/execution-token`, {
|
|
132
|
+
method: 'POST',
|
|
133
|
+
body: JSON.stringify({
|
|
134
|
+
scopes: ['tasks:read', 'tasks:write', 'context:read', 'context:write'],
|
|
135
|
+
expirationSeconds: 3600,
|
|
136
|
+
}),
|
|
137
|
+
});
|
|
138
|
+
return response.token;
|
|
139
|
+
}
|
|
140
|
+
async resolveRepoUrl(tags) {
|
|
141
|
+
const projectTag = tags.find((tag) => tag.name.startsWith('project:'));
|
|
142
|
+
if (!projectTag) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
const slug = projectTag.name.slice('project:'.length);
|
|
146
|
+
if (!slug) {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
const project = await this.fetchJson(`/api/v1/meta/projects/by-slug/${slug}`);
|
|
151
|
+
return project.repoUrl ?? null;
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
const message = this.errorToMessage(error);
|
|
155
|
+
if (message.includes('HTTP 404')) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
throw error;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
async fetchJson(path, init) {
|
|
162
|
+
const response = await fetch(`${this.options.serverUrl}${path}`, {
|
|
163
|
+
...init,
|
|
164
|
+
headers: {
|
|
165
|
+
Authorization: `Bearer ${this.options.workerAccessToken}`,
|
|
166
|
+
'Content-Type': 'application/json',
|
|
167
|
+
...(init?.headers ?? {}),
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
if (!response.ok) {
|
|
171
|
+
throw new Error(`HTTP ${response.status} when requesting ${path}: ${response.statusText}`);
|
|
172
|
+
}
|
|
173
|
+
return (await response.json());
|
|
174
|
+
}
|
|
175
|
+
errorToMessage(error) {
|
|
176
|
+
if (error instanceof Error) {
|
|
177
|
+
return error.message;
|
|
178
|
+
}
|
|
179
|
+
if (typeof error === 'string') {
|
|
180
|
+
return error;
|
|
181
|
+
}
|
|
182
|
+
return String(error);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
exports.ExecutionOrchestrator = ExecutionOrchestrator;
|
|
186
|
+
//# sourceMappingURL=execution-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-orchestrator.js","sourceRoot":"","sources":["../../src/worker/execution-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SDKMessage } from '@anthropic-ai/claude-agent-sdk';
|
|
2
|
+
export declare class ClaudeMessageFormatter {
|
|
3
|
+
private readonly agentSlug?;
|
|
4
|
+
constructor(agentSlug?: string | undefined);
|
|
5
|
+
format(message: SDKMessage): string | null;
|
|
6
|
+
private formatAssistant;
|
|
7
|
+
private formatUser;
|
|
8
|
+
private formatResult;
|
|
9
|
+
private formatSystem;
|
|
10
|
+
private formatStreamEvent;
|
|
11
|
+
private formatToolProgress;
|
|
12
|
+
private formatAuthStatus;
|
|
13
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClaudeMessageFormatter = void 0;
|
|
4
|
+
class ClaudeMessageFormatter {
|
|
5
|
+
agentSlug;
|
|
6
|
+
constructor(agentSlug) {
|
|
7
|
+
this.agentSlug = agentSlug;
|
|
8
|
+
}
|
|
9
|
+
format(message) {
|
|
10
|
+
switch (message.type) {
|
|
11
|
+
case 'assistant':
|
|
12
|
+
return this.formatAssistant(message);
|
|
13
|
+
case 'user':
|
|
14
|
+
return this.formatUser(message);
|
|
15
|
+
case 'result':
|
|
16
|
+
return this.formatResult(message);
|
|
17
|
+
case 'system':
|
|
18
|
+
return this.formatSystem(message);
|
|
19
|
+
case 'stream_event':
|
|
20
|
+
return this.formatStreamEvent(message);
|
|
21
|
+
case 'tool_progress':
|
|
22
|
+
return this.formatToolProgress(message);
|
|
23
|
+
case 'auth_status':
|
|
24
|
+
return this.formatAuthStatus(message);
|
|
25
|
+
default:
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
formatAssistant(message) {
|
|
30
|
+
const parts = [];
|
|
31
|
+
const content = message.message?.content;
|
|
32
|
+
if (!Array.isArray(content)) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const agentLabel = this.agentSlug ? `@${this.agentSlug}` : 'Assistant';
|
|
36
|
+
for (const chunk of content) {
|
|
37
|
+
if (chunk.type === 'tool_use') {
|
|
38
|
+
parts.push(`🔧 ${agentLabel} Tool call: ${chunk.name}`);
|
|
39
|
+
}
|
|
40
|
+
else if (chunk.type === 'text') {
|
|
41
|
+
parts.push(`💬 ${agentLabel}: ${chunk.text}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return parts.length > 0 ? parts.join('\n') : null;
|
|
45
|
+
}
|
|
46
|
+
formatUser(message) {
|
|
47
|
+
const parts = [];
|
|
48
|
+
const content = message.message?.content;
|
|
49
|
+
if (!Array.isArray(content)) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
for (const chunk of content) {
|
|
53
|
+
if (chunk.type === 'text') {
|
|
54
|
+
parts.push(`👤 User: ${chunk.text}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return parts.length > 0 ? parts.join('\n') : null;
|
|
58
|
+
}
|
|
59
|
+
formatResult(message) {
|
|
60
|
+
const agentLabel = this.agentSlug ? `@${this.agentSlug}` : 'Assistant';
|
|
61
|
+
if (message.subtype === 'success' && typeof message.result === 'string') {
|
|
62
|
+
return [`--- ${agentLabel} turn complete ---`, message.result, '---------------------------'].join('\n');
|
|
63
|
+
}
|
|
64
|
+
return `✅ ${agentLabel} result received`;
|
|
65
|
+
}
|
|
66
|
+
formatSystem(message) {
|
|
67
|
+
const agentLabel = this.agentSlug ? `@${this.agentSlug}` : 'Assistant';
|
|
68
|
+
if (message.subtype === 'init') {
|
|
69
|
+
return [
|
|
70
|
+
`🧠 ${agentLabel} Claude initialized`,
|
|
71
|
+
`- Permissions: ${message.permissionMode}`,
|
|
72
|
+
`- Tools: ${message.tools.length}`,
|
|
73
|
+
`- MCP Servers: ${message.mcp_servers.length}`,
|
|
74
|
+
].join('\n');
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
formatStreamEvent(_) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
formatToolProgress(_) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
formatAuthStatus(_) {
|
|
85
|
+
const agentLabel = this.agentSlug ? `@${this.agentSlug}` : 'Assistant';
|
|
86
|
+
return `🔐 ${agentLabel} Auth status updated`;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.ClaudeMessageFormatter = ClaudeMessageFormatter;
|
|
90
|
+
//# sourceMappingURL=claude-message-formatter.js.map
|