From 59247581b3f8a9926e70aeb1403a0b7c36208bc5 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Mon, 21 Sep 2026 16:14:35 -0700 Subject: [PATCH 01/12] Move agent runtime to a packages/agent workspace --- .agents/skills/posthog-desktop/SKILL.md | 4 + .agents/skills/running-ci-preflight/SKILL.md | 2 +- .claude/rules/task-model-catalog.md | 4 +- .config/.markdownlint-cli2.jsonc | 2 +- .env.example | 4 +- .../desktop-build-agent-release/action.yml | 4 +- .../desktop/check-pr-backend-coupling.sh | 2 + .../desktop/check-pr-backend-coupling.test.sh | 6 + .github/scripts/trunk-impacted-targets.js | 6 + .../scripts/trunk-impacted-targets.test.js | 17 +- .github/workflows/ci-python.yml | 4 +- .../desktop-agent-release-verify.yml | 12 +- .github/workflows/desktop-agent-release.yml | 6 +- .github/workflows/desktop-agent-tag.yml | 11 +- .github/workflows/desktop-build-test.yml | 22 +- .github/workflows/desktop-build.yml | 6 +- .github/workflows/desktop-quality.yml | 10 +- .github/workflows/desktop-release.yml | 51 +- .github/workflows/desktop-sync-benjamin.yml | 16 +- .github/workflows/desktop-tag.yml | 4 +- .github/workflows/desktop-test.yml | 15 +- .github/workflows/desktop-typecheck.yml | 6 +- .github/workflows/desktop-update-e2e.yml | 7 +- .oxfmtrc.json | 14 + .oxlintrc.json | 1 + bin/start-desktop | 6 +- docs/internal/monorepo-layout.md | 6 +- docs/internal/sandboxes-setup-guide.md | 8 +- .../handbook/engineering/ai/writing-skills.md | 18 +- hogli.yaml | 12 +- package.json | 1 + packages/agent/.gitignore | 13 + packages/agent/.npmrc | 3 + packages/agent/biome.jsonc | 91 + packages/agent/package.json | 25 + .../packages/agent-contracts/package.json | 0 .../packages/agent-contracts/src/adapter.ts | 0 .../agent-contracts/src/agent-actions.test.ts | 0 .../agent-contracts/src/agent-actions.ts | 0 .../agent-contracts/src/agent-conversation.ts | 0 .../agent-contracts/src/agent-runtime.ts | 0 .../src/api-http-client.test.ts | 0 .../agent-contracts/src/api-http-client.ts | 0 .../agent-contracts/src/backoff.test.ts | 0 .../packages/agent-contracts/src/backoff.ts | 0 .../agent-contracts/src/bedrock-gateway.ts | 0 .../agent-contracts/src/binary.test.ts | 0 .../packages/agent-contracts/src/binary.ts | 0 .../src/call-tool-result.test.ts | 0 .../agent-contracts/src/call-tool-result.ts | 0 .../agent-contracts/src/cloud-prompt.test.ts | 0 .../agent-contracts/src/cloud-prompt.ts | 0 .../src/cloud-task-models.test.ts | 0 .../agent-contracts/src/cloud-task-models.ts | 0 .../agent-contracts/src/custom-cloud.test.ts | 0 .../agent-contracts/src/custom-cloud.ts | 0 .../src/dismissal-reasons.test.ts | 0 .../agent-contracts/src/dismissal-reasons.ts | 0 .../agent-contracts/src/domain-types.test.ts | 0 .../agent-contracts/src/domain-types.ts | 0 .../agent-contracts/src/enrichment.ts | 0 .../agent-contracts/src/errors.test.ts | 0 .../packages/agent-contracts/src/errors.ts | 0 .../agent-contracts/src/exec-types.ts | 0 .../src/execution-modes.test.ts | 0 .../agent-contracts/src/execution-modes.ts | 0 .../packages/agent-contracts/src/git-types.ts | 0 .../agent-contracts/src/image.test.ts | 0 .../packages/agent-contracts/src/image.ts | 0 .../agent-contracts/src/inbox-types.test.ts | 0 .../agent-contracts/src/inbox-types.ts | 0 .../packages/agent-contracts/src/index.ts | 0 .../agent-contracts/src/local-mcp-domain.ts | 0 .../src/mcp-tool-policy-domain.ts | 0 .../src/model-catalog.generated.ts | 0 .../agent-contracts/src/model-catalog.test.ts | 0 .../agent-contracts/src/model-catalog.ts | 0 .../agent-contracts/src/models.test.ts | 0 .../packages/agent-contracts/src/models.ts | 0 .../agent-contracts/src/oauth.test.ts | 0 .../packages/agent-contracts/src/oauth.ts | 0 .../src/objectTagKinds.generated.ts | 0 .../agent-contracts/src/orchestration.ts | 0 .../agent-contracts/src/pi-tool-call.test.ts | 0 .../agent-contracts/src/pi-tool-call.ts | 0 .../agent-contracts/src/posthog-products.ts | 0 .../src/posthog-property-headers.test.ts | 0 .../src/posthog-property-headers.ts | 0 .../agent-contracts/src/pr-urls.test.ts | 0 .../packages/agent-contracts/src/pr-urls.ts | 0 .../src/private-network.test.ts | 0 .../agent-contracts/src/private-network.ts | 0 .../src/product-engineer-prompt.test.ts | 0 .../src/product-engineer-prompt.ts | 0 .../src/reasoning-effort.test.ts | 0 .../agent-contracts/src/reasoning-effort.ts | 0 .../agent-contracts/src/regions.test.ts | 0 .../packages/agent-contracts/src/regions.ts | 0 .../src/rich-output-prompt.test.ts | 0 .../agent-contracts/src/rich-output-prompt.ts | 0 .../packages/agent-contracts/src/saga.ts | 0 .../agent-contracts/src/sandbox-env.ts | 0 .../packages/agent-contracts/src/schemas.ts | 0 .../agent-contracts/src/session-events.ts | 0 .../agent-contracts/src/signal-types.ts | 0 .../agent-contracts/src/skills.test.ts | 0 .../packages/agent-contracts/src/skills.ts | 0 .../src/slash-commands.test.ts | 0 .../agent-contracts/src/slash-commands.ts | 0 .../agent-contracts/src/task-context.ts | 0 .../packages/agent-contracts/src/task.test.ts | 0 .../packages/agent-contracts/src/task.ts | 0 .../agent-contracts/src/tool-meta.test.ts | 0 .../packages/agent-contracts/src/tool-meta.ts | 0 .../src/transcript-neutral-messages.ts | 0 .../packages/agent-contracts/src/urls.ts | 0 .../packages/agent-contracts/tsconfig.json | 0 .../packages/agent-contracts/tsup.config.ts | 0 .../packages/agent-contracts/vitest.config.ts | 0 .../agent}/packages/agent/.env.example | 0 .../agent}/packages/agent/README.md | 0 .../packages/agent/build/native-binary.mjs | 0 .../build/verify-local-tools-mcp-server.mjs | 0 .../agent}/packages/agent/e2e/README.md | 0 .../packages/agent/e2e/compaction.e2e.test.ts | 0 .../agent}/packages/agent/e2e/config.ts | 0 .../packages/agent/e2e/driver.e2e.test.ts | 0 .../agent}/packages/agent/e2e/driver.ts | 0 .../packages/agent/e2e/guard.e2e.test.ts | 0 .../agent}/packages/agent/e2e/run-e2e.sh | 2 +- .../agent/e2e/session-lifecycle.e2e.test.ts | 0 .../agent/e2e/session-startup.e2e.test.ts | 0 .../agent/e2e/structured-output.e2e.test.ts | 0 .../agent}/packages/agent/package.json | 2 +- .../packages/agent/src/acp-extensions.test.ts | 0 .../packages/agent/src/acp-extensions.ts | 0 .../agent/src/adapters/acp-connection.test.ts | 0 .../agent/src/adapters/acp-connection.ts | 0 .../agent/src/adapters/base-acp-agent.test.ts | 0 .../agent/src/adapters/base-acp-agent.ts | 0 .../agent/src/adapters/claude/SKILL.md | 0 .../agent/src/adapters/claude/UPSTREAM.md | 0 .../claude/claude-agent.clear.test.ts | 0 .../claude/claude-agent.finish.test.ts | 0 .../claude-agent.permission-mode.test.ts | 0 .../claude/claude-agent.refresh.test.ts | 0 .../claude/claude-agent.resume-model.test.ts | 0 .../claude/claude-agent.side-question.test.ts | 0 .../claude/claude-agent.slash-command.test.ts | 0 .../claude/claude-agent.streamed-text.test.ts | 0 .../claude-agent.task-notification.test.ts | 0 .../agent/src/adapters/claude/claude-agent.ts | 0 .../claude/claude-agent.turn-queue.test.ts | 0 .../adapters/claude/context-breakdown.test.ts | 0 .../src/adapters/claude/context-breakdown.ts | 0 .../claude/conversion/acp-to-sdk.test.ts | 0 .../adapters/claude/conversion/acp-to-sdk.ts | 0 .../claude/conversion/sdk-to-acp.test.ts | 0 .../adapters/claude/conversion/sdk-to-acp.ts | 0 .../claude/conversion/task-state.test.ts | 0 .../adapters/claude/conversion/task-state.ts | 0 .../claude/conversion/tool-use-to-acp.test.ts | 0 .../claude/conversion/tool-use-to-acp.ts | 0 .../agent/src/adapters/claude/hooks.test.ts | 0 .../agent/src/adapters/claude/hooks.ts | 0 .../src/adapters/claude/image-sanitization.ts | 0 .../agent/src/adapters/claude/machine-auth.ts | 0 .../adapters/claude/mcp/local-tools.test.ts | 0 .../src/adapters/claude/mcp/local-tools.ts | 0 .../adapters/claude/mcp/tool-metadata.test.ts | 0 .../src/adapters/claude/mcp/tool-metadata.ts | 0 .../permissions/permission-handlers.test.ts | 0 .../claude/permissions/permission-handlers.ts | 0 .../permissions/permission-options.test.ts | 0 .../claude/permissions/permission-options.ts | 0 .../src/adapters/claude/plan/utils.test.ts | 0 .../agent/src/adapters/claude/plan/utils.ts | 0 .../src/adapters/claude/questions/utils.ts | 0 .../claude/session/budget-guard.test.ts | 0 .../adapters/claude/session/budget-guard.ts | 0 .../adapters/claude/session/commands.test.ts | 0 .../src/adapters/claude/session/commands.ts | 0 .../claude/session/initialization.test.ts | 0 .../adapters/claude/session/initialization.ts | 0 .../claude/session/jsonl-hydration.bench.ts | 0 .../claude/session/jsonl-hydration.test.ts | 0 .../claude/session/jsonl-hydration.ts | 0 .../claude/session/mcp-config.test.ts | 0 .../src/adapters/claude/session/mcp-config.ts | 0 .../claude/session/model-config.test.ts | 0 .../adapters/claude/session/model-config.ts | 0 .../adapters/claude/session/models.test.ts | 0 .../src/adapters/claude/session/models.ts | 0 .../adapters/claude/session/options.test.ts | 0 .../src/adapters/claude/session/options.ts | 0 .../src/adapters/claude/session/repo-path.ts | 0 .../adapters/claude/session/rtk-hook.test.ts | 0 .../src/adapters/claude/session/rtk-hook.ts | 0 .../adapters/claude/session/settings.test.ts | 0 .../src/adapters/claude/session/settings.ts | 0 .../claude/session/traceparent-hook.test.ts | 0 .../claude/session/traceparent-hook.ts | 0 .../src/adapters/claude/side-question.test.ts | 0 .../src/adapters/claude/side-question.ts | 0 .../claude/subscription-login.test.ts | 0 .../src/adapters/claude/subscription-login.ts | 0 .../agent/src/adapters/claude/tools.test.ts | 0 .../agent/src/adapters/claude/tools.ts | 0 .../agent/src/adapters/claude/types.ts | 0 .../app-server-client.test.ts | 0 .../codex-app-server/app-server-client.ts | 0 .../codex-app-server/approvals.test.ts | 0 .../adapters/codex-app-server/approvals.ts | 0 .../codex-app-server/binary-path.test.ts | 0 .../adapters/codex-app-server/binary-path.ts | 0 .../codex-app-server-agent.test.ts | 0 .../codex-app-server-agent.ts | 0 .../ext-notifications.test.ts | 0 .../codex-app-server/ext-notifications.ts | 0 .../adapters/codex-app-server/input.test.ts | 0 .../src/adapters/codex-app-server/input.ts | 0 .../local-tools-mcp-server.ts | 0 .../codex-app-server/local-tools-mcp.test.ts | 0 .../codex-app-server/local-tools-mcp.ts | 0 .../adapters/codex-app-server/mapping.test.ts | 0 .../src/adapters/codex-app-server/mapping.ts | 0 .../codex-app-server/mcp-config.test.ts | 0 .../adapters/codex-app-server/mcp-config.ts | 0 .../codex-app-server/mcp-manager.test.ts | 0 .../adapters/codex-app-server/mcp-manager.ts | 0 .../adapters/codex-app-server/models.test.ts | 0 .../src/adapters/codex-app-server/models.ts | 0 .../src/adapters/codex-app-server/protocol.ts | 0 .../codex-app-server/session-config.test.ts | 0 .../codex-app-server/session-config.ts | 0 .../adapters/codex-app-server/spawn.test.ts | 0 .../src/adapters/codex-app-server/spawn.ts | 0 .../structured-output.test.ts | 0 .../codex-app-server/structured-output.ts | 0 .../subscription-login.test.ts | 0 .../codex-app-server/subscription-login.ts | 0 .../codex-app-server/thread-state.test.ts | 0 .../adapters/codex-app-server/thread-state.ts | 0 .../adapters/codex-app-server/token-usage.ts | 0 .../codex-app-server/turn-controller.test.ts | 0 .../codex-app-server/turn-controller.ts | 0 .../codex-app-server/usage-tracker.test.ts | 0 .../codex-app-server/usage-tracker.ts | 0 .../src/adapters/error-classification.test.ts | 0 .../src/adapters/error-classification.ts | 0 .../agent/src/adapters/local-skill.ts | 0 .../agent/src/adapters/prompt-blocks.ts | 0 .../src/adapters/reasoning-effort.test.ts | 0 .../agent/src/adapters/reasoning-effort.ts | 0 .../agent/src/adapters/session-meta.test.ts | 0 .../agent/src/adapters/session-meta.ts | 0 .../agent}/packages/agent/src/agent.test.ts | 0 .../agent}/packages/agent/src/agent.ts | 0 .../packages/agent/src/execution-mode.test.ts | 0 .../packages/agent/src/execution-mode.ts | 0 .../packages/agent/src/gateway-models.test.ts | 0 .../packages/agent/src/gateway-models.ts | 0 .../agent}/packages/agent/src/index.ts | 0 .../packages/agent/src/otel-attributes.ts | 0 .../packages/agent/src/otel-telemetry.test.ts | 0 .../packages/agent/src/otel-telemetry.ts | 0 .../packages/agent/src/otel-trace-builder.ts | 0 .../agent/src/persistent-agent-state.test.ts | 0 .../agent/src/persistent-agent-state.ts | 0 .../src/pi/conversation/toolTranslator.ts | 0 .../conversation/tools/bashTranslator.test.ts | 0 .../pi/conversation/tools/bashTranslator.ts | 0 .../conversation/tools/editTranslator.test.ts | 0 .../pi/conversation/tools/editTranslator.ts | 0 .../conversation/tools/findTranslator.test.ts | 0 .../pi/conversation/tools/findTranslator.ts | 0 .../conversation/tools/grepTranslator.test.ts | 0 .../pi/conversation/tools/grepTranslator.ts | 0 .../conversation/tools/lsTranslator.test.ts | 0 .../src/pi/conversation/tools/lsTranslator.ts | 0 .../conversation/tools/readTranslator.test.ts | 0 .../pi/conversation/tools/readTranslator.ts | 0 .../tools/writeTranslator.test.ts | 0 .../pi/conversation/tools/writeTranslator.ts | 0 .../translatePiConversation.test.ts | 0 .../conversation/translatePiConversation.ts | 0 .../conversation/translatePiMessage.test.ts | 0 .../src/pi/conversation/translatePiMessage.ts | 0 .../agent/src/pi/queue-persistence.test.ts | 0 .../agent/src/pi/queue-persistence.ts | 0 .../agent/src/pi/remote-rpc-client.ts | 0 .../src/pi/repository-tools-extension.test.ts | 0 .../src/pi/repository-tools-extension.ts | 0 .../packages/agent/src/pi/rpc-client.test.ts | 0 .../packages/agent/src/pi/rpc-client.ts | 0 .../packages/agent/src/pi/rpc-environment.ts | 0 .../agent}/packages/agent/src/pi/rpc-host.ts | 0 .../agent/src/pi/rpc-transport.test.ts | 0 .../packages/agent/src/pi/rpc-transport.ts | 0 .../packages/agent/src/pi/runtime.test.ts | 0 .../agent}/packages/agent/src/pi/runtime.ts | 0 .../agent}/packages/agent/src/pi/types.ts | 0 .../packages/agent/src/posthog-api.test.ts | 0 .../agent}/packages/agent/src/posthog-api.ts | 0 .../agent/src/pr-url-detector.test.ts | 0 .../packages/agent/src/pr-url-detector.ts | 0 .../agent}/packages/agent/src/resume.ts | 0 .../agent/src/sagas/resume-saga.test.ts | 0 .../packages/agent/src/sagas/resume-saga.ts | 0 .../packages/agent/src/sagas/test-fixtures.ts | 0 ...agent-server.configure-environment.test.ts | 0 .../agent/src/server/agent-server.test.ts | 0 .../packages/agent/src/server/agent-server.ts | 0 .../agent/src/server/agentsh-runtime.test.ts | 0 .../agent/src/server/agentsh-runtime.ts | 0 .../agent}/packages/agent/src/server/bin.ts | 0 .../agent/src/server/boot-phases.test.ts | 0 .../packages/agent/src/server/boot-phases.ts | 0 .../packages/agent/src/server/cloud-prompt.ts | 0 .../src/server/cloud-session-prompt.test.ts | 0 .../server/codex-subscription-token.test.ts | 0 .../src/server/codex-subscription-token.ts | 0 .../agent/src/server/credential-relay.test.ts | 0 .../agent/src/server/credential-relay.ts | 0 .../src/server/event-stream-sender.test.ts | 0 .../agent/src/server/event-stream-sender.ts | 0 .../packages/agent/src/server/gateway-env.ts | 0 .../agent}/packages/agent/src/server/jwt.ts | 0 .../agent/src/server/mcp-relay-server.test.ts | 0 .../agent/src/server/mcp-relay-server.ts | 0 .../agent/src/server/pi-agent-server.test.ts | 0 .../agent/src/server/pi-agent-server.ts | 0 .../agent/src/server/pr-checkout.test.ts | 0 .../packages/agent/src/server/pr-checkout.ts | 0 .../agent/src/server/question-relay.test.ts | 0 .../agent/src/server/rtk-savings.test.ts | 0 .../packages/agent/src/server/rtk-savings.ts | 0 .../agent/src/server/run-usage.test.ts | 0 .../packages/agent/src/server/run-usage.ts | 0 .../packages/agent/src/server/schemas.test.ts | 0 .../packages/agent/src/server/schemas.ts | 0 .../agent/src/server/streaming-upload.ts | 0 .../agent}/packages/agent/src/server/types.ts | 0 .../agent/src/server/utils/retry.test.ts | 0 .../packages/agent/src/server/utils/retry.ts | 0 .../agent/src/server/utils/sse-parser.test.ts | 0 .../agent/src/server/utils/sse-parser.ts | 0 .../agent/src/server/wait-for-file.test.ts | 0 .../agent/src/server/wait-for-file.ts | 0 .../agent/src/session-log-writer.test.ts | 0 .../packages/agent/src/session-log-writer.ts | 0 .../agent}/packages/agent/src/smoke/bin.ts | 0 .../packages/agent/src/smoke/classify.test.ts | 0 .../packages/agent/src/smoke/classify.ts | 0 .../packages/agent/src/smoke/run-turn.ts | 0 .../packages/agent/src/test/fixtures/api.ts | 0 .../agent/src/test/mocks/claude-sdk.ts | 0 .../agent/src/test/mocks/msw-handlers.ts | 0 .../agent/src/test/native-binary.test.ts | 0 .../agent}/packages/agent/src/types.ts | 0 .../packages/agent/src/utils/acp-content.ts | 0 .../agent/src/utils/async-mutex.test.ts | 0 .../packages/agent/src/utils/async-mutex.ts | 0 .../packages/agent/src/utils/common.test.ts | 0 .../agent}/packages/agent/src/utils/common.ts | 0 .../packages/agent/src/utils/event-id.ts | 0 .../src/utils/gateway-routing-cases.json | 2 +- .../packages/agent/src/utils/gateway.test.ts | 0 .../packages/agent/src/utils/gateway.ts | 0 .../packages/agent/src/utils/logger.test.ts | 0 .../agent}/packages/agent/src/utils/logger.ts | 0 .../agent/src/utils/partial-json.test.ts | 0 .../packages/agent/src/utils/partial-json.ts | 0 .../agent/src/utils/redact-secrets.test.ts | 0 .../agent/src/utils/redact-secrets.ts | 0 .../agent/src/utils/resolve-bundled-script.ts | 0 .../packages/agent/src/utils/secret-rules.ts | 0 .../packages/agent/src/utils/shell-quote.ts | 0 .../packages/agent/src/utils/streams.ts | 0 .../agent}/packages/agent/tsconfig.build.json | 0 .../agent}/packages/agent/tsconfig.json | 0 .../packages/agent/tsconfig.rollup.json | 0 .../agent}/packages/agent/tsup.config.ts | 7 +- .../agent}/packages/agent/vitest.config.ts | 0 .../packages/agent/vitest.e2e.config.ts | 2 +- .../agent}/packages/enricher/README.md | 0 .../enricher/grammars/tree-sitter-go.wasm | Bin .../grammars/tree-sitter-javascript.wasm | Bin .../enricher/grammars/tree-sitter-python.wasm | Bin .../enricher/grammars/tree-sitter-ruby.wasm | Bin .../enricher/grammars/tree-sitter-tsx.wasm | Bin .../grammars/tree-sitter-typescript.wasm | Bin .../enricher/grammars/tree-sitter.wasm | Bin .../agent}/packages/enricher/package.json | 0 .../enricher/scripts/fetch-grammars.cjs | 0 .../packages/enricher/src/alias-resolver.ts | 0 .../packages/enricher/src/ast-helpers.ts | 0 .../packages/enricher/src/call-detector.ts | 0 .../enricher/src/comment-formatter.test.ts | 0 .../enricher/src/comment-formatter.ts | 0 .../packages/enricher/src/detector.test.ts | 0 .../agent}/packages/enricher/src/detector.ts | 0 .../packages/enricher/src/enrich-source.ts | 0 .../packages/enricher/src/enriched-result.ts | 0 .../packages/enricher/src/enricher.test.ts | 0 .../agent}/packages/enricher/src/enricher.ts | 0 .../enricher/src/flag-classification.test.ts | 0 .../enricher/src/flag-classification.ts | 0 .../enricher/src/import-resolver.test.ts | 0 .../packages/enricher/src/import-resolver.ts | 0 .../agent}/packages/enricher/src/index.ts | 0 .../agent}/packages/enricher/src/languages.ts | 0 .../agent}/packages/enricher/src/log.ts | 0 .../packages/enricher/src/parse-result.ts | 0 .../packages/enricher/src/parser-manager.ts | 0 .../packages/enricher/src/posthog-api.ts | 0 .../packages/enricher/src/serialize.test.ts | 0 .../agent}/packages/enricher/src/serialize.ts | 0 .../packages/enricher/src/stale-flags.test.ts | 0 .../packages/enricher/src/stale-flags.ts | 0 .../agent}/packages/enricher/src/types.ts | 0 .../packages/enricher/src/variant-detector.ts | 0 .../enricher/src/wrapper-detector.test.ts | 0 .../packages/enricher/src/wrapper-detector.ts | 0 .../enricher/src/wrapper-integration.test.ts | 0 .../agent}/packages/enricher/tsconfig.json | 0 .../agent}/packages/enricher/tsup.config.ts | 0 .../agent}/packages/git/package.json | 0 .../agent}/packages/git/src/client.ts | 0 .../agent}/packages/git/src/concurrency.ts | 0 .../packages/git/src/exclude-patterns.test.ts | 0 .../packages/git/src/exclude-patterns.ts | 0 .../agent}/packages/git/src/gh.test.ts | 0 .../agent}/packages/git/src/gh.ts | 0 .../agent}/packages/git/src/git-exec.test.ts | 0 .../agent}/packages/git/src/git-exec.ts | 0 .../agent}/packages/git/src/git-saga.ts | 0 .../agent}/packages/git/src/lock-detector.ts | 0 .../packages/git/src/operation-manager.ts | 0 .../agent}/packages/git/src/queries.test.ts | 0 .../agent}/packages/git/src/queries.ts | 0 .../agent}/packages/git/src/rw-lock.ts | 0 .../agent}/packages/git/src/sagas/branch.ts | 0 .../packages/git/src/sagas/checkpoint.test.ts | 0 .../packages/git/src/sagas/checkpoint.ts | 0 .../agent}/packages/git/src/sagas/clean.ts | 0 .../agent}/packages/git/src/sagas/clone.ts | 0 .../agent}/packages/git/src/sagas/commit.ts | 0 .../agent}/packages/git/src/sagas/discard.ts | 0 .../agent}/packages/git/src/sagas/head.ts | 0 .../agent}/packages/git/src/sagas/init.ts | 0 .../agent}/packages/git/src/sagas/patch.ts | 0 .../agent}/packages/git/src/sagas/pull.ts | 0 .../agent}/packages/git/src/sagas/push.ts | 0 .../agent}/packages/git/src/sagas/stash.ts | 0 .../packages/git/src/signed-commit.test.ts | 0 .../agent}/packages/git/src/signed-commit.ts | 0 .../agent}/packages/git/src/stacks.test.ts | 0 .../agent}/packages/git/src/stacks.ts | 0 .../packages/git/src/status-stream.test.ts | 0 .../agent}/packages/git/src/status-stream.ts | 0 .../agent}/packages/git/src/trailers.ts | 0 .../agent}/packages/git/src/utils.test.ts | 0 .../agent}/packages/git/src/utils.ts | 0 .../packages/git/src/worktree-name.test.ts | 0 .../agent}/packages/git/src/worktree-name.ts | 0 .../agent}/packages/git/src/worktree.test.ts | 0 .../agent}/packages/git/src/worktree.ts | 0 .../agent}/packages/git/tsconfig.json | 0 .../agent}/packages/git/vitest.config.ts | 0 .../agent}/packages/harness/README.md | 0 .../agent}/packages/harness/package.json | 0 .../agent}/packages/harness/src/cli.ts | 0 .../packages/harness/src/extensions/README.md | 0 .../extensions/agent-instructions/index.ts | 0 .../agent-instructions/instructions.test.ts | 0 .../agent-instructions/instructions.ts | 0 .../extensions/auto-publish/extension.test.ts | 0 .../src/extensions/auto-publish/extension.ts | 0 .../src/extensions/auto-publish/index.ts | 0 .../background-jobs/extension.test.ts | 0 .../extensions/background-jobs/extension.ts | 0 .../src/extensions/background-jobs/index.ts | 0 .../extensions/background-jobs/jobs.test.ts | 0 .../src/extensions/background-jobs/jobs.ts | 0 .../src/extensions/background-jobs/render.ts | 0 .../extensions/benjamin/benjamin.lock.json | 0 .../src/extensions/benjamin/guidance.test.ts | 0 .../src/extensions/benjamin/guidance.ts | 0 .../harness/src/extensions/benjamin/index.ts | 0 .../src/extensions/benjamin/instruction.ts | 0 .../src/extensions/benjamin/license-guard.ts | 0 .../harness/src/extensions/benjamin/ste100.ts | 0 .../extensions/context-wiki/context-wiki.ts | 0 .../extensions/context-wiki/extension.test.ts | 0 .../src/extensions/context-wiki/extension.ts | 0 .../src/extensions/context-wiki/index.ts | 0 .../extensions/current-work/extension.test.ts | 0 .../src/extensions/current-work/extension.ts | 0 .../extensions/enrichment/extension.test.ts | 0 .../src/extensions/enrichment/extension.ts | 0 .../enrichment/file-enricher.test.ts | 0 .../extensions/enrichment/file-enricher.ts | 0 .../src/extensions/enrichment/index.ts | 0 .../harness/src/extensions/entrypoints.ts | 0 .../extensions/footer-focus-demo/README.md | 0 .../extensions/footer-focus-demo/editor.ts | 0 .../extensions/footer-focus-demo/extension.ts | 0 .../extensions/footer-focus-demo/footer.ts | 0 .../src/extensions/footer-focus-demo/inbox.ts | 0 .../src/extensions/footer-focus-demo/index.ts | 0 .../extensions/footer-focus-demo/overlay.ts | 0 .../src/extensions/hog-branding/brand-env.ts | 0 .../extensions/hog-branding/extension.test.ts | 0 .../src/extensions/hog-branding/extension.ts | 0 .../src/extensions/hog-branding/index.ts | 0 .../src/extensions/local-tools/cloud-run.ts | 0 .../local-tools/github-token.test.ts | 0 .../extensions/local-tools/github-token.ts | 0 .../src/extensions/local-tools/index.ts | 0 .../src/extensions/local-tools/local-tools.ts | 0 .../extensions/local-tools/registry.test.ts | 0 .../src/extensions/local-tools/registry.ts | 0 .../signed-commit-artefacts.test.ts | 0 .../local-tools/signed-commit-artefacts.ts | 0 .../local-tools/signed-commit-shared.ts | 0 .../local-tools/task-tools-client.test.ts | 0 .../local-tools/task-tools-client.ts | 0 .../local-tools/tools/artifact-upload.ts | 0 .../local-tools/tools/clone-repo.test.ts | 0 .../local-tools/tools/clone-repo.ts | 0 .../local-tools/tools/finish.test.ts | 0 .../extensions/local-tools/tools/finish.ts | 0 .../local-tools/tools/gh-stack.test.ts | 0 .../extensions/local-tools/tools/gh-stack.ts | 0 .../local-tools/tools/list-agents.test.ts | 0 .../local-tools/tools/list-agents.ts | 0 .../local-tools/tools/list-repos.ts | 0 .../local-tools/tools/report-activity.test.ts | 0 .../local-tools/tools/report-activity.ts | 0 .../tools/send-agent-message.test.ts | 0 .../local-tools/tools/send-agent-message.ts | 0 .../local-tools/tools/show-actions.test.ts | 0 .../local-tools/tools/show-actions.ts | 0 .../local-tools/tools/signed-commit.test.ts | 0 .../local-tools/tools/signed-commit.ts | 0 .../local-tools/tools/signed-git-tool.ts | 0 .../local-tools/tools/signed-merge.test.ts | 0 .../local-tools/tools/signed-merge.ts | 0 .../local-tools/tools/signed-rewrite.ts | 0 .../local-tools/tools/speak.test.ts | 0 .../src/extensions/local-tools/tools/speak.ts | 0 .../tools/task-summary-update.test.ts | 0 .../local-tools/tools/task-summary-update.ts | 0 .../local-tools/tools/upload-artifact.test.ts | 0 .../local-tools/tools/upload-artifact.ts | 0 .../harness/src/extensions/mcp/README.md | 0 .../src/extensions/mcp/auth-flow.test.ts | 0 .../harness/src/extensions/mcp/auth-flow.ts | 0 .../src/extensions/mcp/auth-storage.test.ts | 0 .../src/extensions/mcp/auth-storage.ts | 0 .../extensions/mcp/callback-server.test.ts | 0 .../src/extensions/mcp/callback-server.ts | 0 .../harness/src/extensions/mcp/config.test.ts | 0 .../harness/src/extensions/mcp/config.ts | 0 .../harness/src/extensions/mcp/errors.ts | 0 .../src/extensions/mcp/extension.test.ts | 0 .../harness/src/extensions/mcp/extension.ts | 0 .../harness/src/extensions/mcp/index.ts | 0 .../src/extensions/mcp/oauth-provider.test.ts | 0 .../src/extensions/mcp/oauth-provider.ts | 0 .../src/extensions/mcp/proxy-tool.test.ts | 0 .../harness/src/extensions/mcp/proxy-tool.ts | 0 .../harness/src/extensions/mcp/render.test.ts | 0 .../harness/src/extensions/mcp/render.ts | 0 .../harness/src/extensions/mcp/schema.test.ts | 0 .../harness/src/extensions/mcp/schema.ts | 0 .../src/extensions/mcp/server-manager.test.ts | 0 .../src/extensions/mcp/server-manager.ts | 0 .../mcp/skills/mcp-servers/SKILL.md | 0 .../src/extensions/mcp/test-support.ts | 0 .../src/extensions/mcp/tool-bridge.test.ts | 0 .../harness/src/extensions/mcp/tool-bridge.ts | 0 .../src/extensions/mcp/tool-cache.test.ts | 0 .../harness/src/extensions/mcp/tool-cache.ts | 0 .../extensions/orchestration/agents.test.ts | 0 .../src/extensions/orchestration/agents.ts | 0 .../src/extensions/orchestration/auth.test.ts | 0 .../src/extensions/orchestration/auth.ts | 0 .../orchestration/bundled-agents/Explore.md | 0 .../orchestration/bundled-agents/General.md | 0 .../orchestration/bundled-agents/Plan.md | 0 .../extensions/orchestration/context.test.ts | 0 .../src/extensions/orchestration/context.ts | 0 .../orchestration/discovery.test.ts | 0 .../src/extensions/orchestration/discovery.ts | 0 .../orchestration/extension.test.ts | 0 .../src/extensions/orchestration/extension.ts | 0 .../extensions/orchestration/format.test.ts | 0 .../src/extensions/orchestration/format.ts | 0 .../src/extensions/orchestration/index.ts | 0 .../orchestration/lifecycle.test.ts | 0 .../src/extensions/orchestration/lifecycle.ts | 0 .../extensions/orchestration/policy.test.ts | 0 .../src/extensions/orchestration/policy.ts | 0 .../src/extensions/orchestration/resources.ts | 0 .../orchestration/run-agent.test.ts | 0 .../src/extensions/orchestration/run-agent.ts | 0 .../extensions/orchestration/settings.test.ts | 0 .../src/extensions/orchestration/settings.ts | 0 .../skills/dynamic-workflows/SKILL.md | 0 .../skills/subagent-orchestration/SKILL.md | 0 .../orchestration/text-truncate.test.ts | 0 .../extensions/orchestration/text-truncate.ts | 0 .../orchestration/tools/subagent-tool.test.ts | 0 .../orchestration/tools/subagent-tool.ts | 0 .../tools/workflow-runtime.test.ts | 0 .../orchestration/tools/workflow-runtime.ts | 0 .../orchestration/tools/workflow-tool.test.ts | 0 .../orchestration/tools/workflow-tool.ts | 0 .../orchestration/ui/status-editor.ts | 0 .../orchestration/ui/status-footer.ts | 0 .../orchestration/ui/status-registry.test.ts | 0 .../orchestration/ui/status-registry.ts | 0 .../orchestration/ui/subagent-render.test.ts | 0 .../orchestration/ui/subagent-render.ts | 0 .../ui/subagent-status-overlay.ts | 0 .../orchestration/ui/workflow-render.test.ts | 0 .../orchestration/ui/workflow-render.ts | 0 .../ui/workflow-status-overlay.test.ts | 0 .../ui/workflow-status-overlay.ts | 0 .../exec-permission.test.ts | 0 .../posthog-mcp-policy/exec-permission.ts | 0 .../posthog-mcp-policy/extension.test.ts | 0 .../posthog-mcp-policy/extension.ts | 0 .../extensions/posthog-mcp-policy/index.ts | 0 .../posthog-mcp-policy/products.test.ts | 0 .../extensions/posthog-mcp-policy/products.ts | 0 .../posthog-provider/extension.test.ts | 0 .../extensions/posthog-provider/extension.ts | 0 .../posthog-provider/gateway-auth.test.ts | 0 .../posthog-provider/gateway-auth.ts | 0 .../posthog-provider/gateway.test.ts | 0 .../extensions/posthog-provider/gateway.ts | 0 .../src/extensions/posthog-provider/index.ts | 0 .../posthog-provider/model-catalog.test.ts | 0 .../posthog-provider/model-catalog.ts | 0 .../posthog-provider/models.test.ts | 0 .../src/extensions/posthog-provider/models.ts | 0 .../extensions/posthog-provider/oauth.test.ts | 0 .../src/extensions/posthog-provider/oauth.ts | 0 .../posthog-provider/provider.test.ts | 0 .../extensions/posthog-provider/provider.ts | 0 .../product-engineer/extension.test.ts | 0 .../extensions/product-engineer/extension.ts | 0 .../src/extensions/product-engineer/index.ts | 0 .../harness/src/extensions/registry.ts | 0 .../src/extensions/rtk/commands.test.ts | 0 .../harness/src/extensions/rtk/commands.ts | 0 .../src/extensions/rtk/extension.test.ts | 0 .../harness/src/extensions/rtk/extension.ts | 0 .../harness/src/extensions/rtk/git-command.ts | 0 .../src/extensions/rtk/guidance.test.ts | 0 .../harness/src/extensions/rtk/guidance.ts | 0 .../harness/src/extensions/rtk/index.ts | 0 .../src/extensions/skills-store/index.ts | 0 .../skills-store/store-skills.test.ts | 0 .../extensions/skills-store/store-skills.ts | 0 .../extensions/task-system-prompt/cloud.ts | 0 .../task-system-prompt/extension.test.ts | 0 .../task-system-prompt/extension.ts | 0 .../extensions/task-system-prompt/index.ts | 0 .../task-system-prompt/prompt.test.ts | 0 .../extensions/task-system-prompt/prompt.ts | 0 .../extensions/task-system-prompt/skills.ts | 0 .../task-system-prompt/task-summary.ts | 0 .../src/extensions/web-access/extension.ts | 0 .../src/extensions/web-access/index.ts | 0 .../src/extensions/web-access/render.test.ts | 0 .../src/extensions/web-access/render.ts | 0 .../extensions/web-access/web-fetch.test.ts | 0 .../src/extensions/web-access/web-fetch.ts | 0 .../extensions/web-access/web-search.test.ts | 0 .../src/extensions/web-access/web-search.ts | 0 .../agent}/packages/harness/src/index.ts | 0 .../harness/src/project-trust.test.ts | 0 .../packages/harness/src/project-trust.ts | 0 .../packages/harness/src/runtime.test.ts | 0 .../agent}/packages/harness/src/runtime.ts | 0 .../agent}/packages/harness/tsconfig.json | 0 .../agent}/packages/harness/tsup.config.ts | 0 .../agent/pnpm-lock.yaml | 3721 ++++++++++++----- packages/agent/pnpm-workspace.yaml | 144 + packages/agent/scripts/rimraf.mjs | 5 + .../agent}/scripts/sync-benjamin.mts | 0 packages/agent/turbo.json | 26 + packages/agent/vitest.config.base.ts | 19 + posthog/object_tags/kinds.py | 2 +- posthog/object_tags/projection.py | 2 +- products/desktop/.gitignore | 1 + products/desktop/.vscode/tasks.json | 2 +- products/desktop/AGENTS.md | 7 +- products/desktop/apps/code/.storybook/main.ts | 10 +- products/desktop/apps/code/package.json | 6 +- .../apps/code/scripts/build-linux-docker.sh | 14 +- .../desktop/apps/code/vite-main-plugins.mts | 18 +- .../desktop/apps/code/vite.main.config.mts | 13 +- products/desktop/apps/code/vite.shared.mts | 21 +- products/desktop/apps/mobile/metro.config.js | 13 +- products/desktop/apps/web/package.json | 4 +- products/desktop/apps/web/vite.aliases.ts | 14 +- products/desktop/biome.jsonc | 59 +- products/desktop/docs/CLOUD-MCP-IMPORT.md | 8 +- products/desktop/docs/CLOUD-MCP-RELAY.md | 8 +- products/desktop/docs/LOCAL-DEVELOPMENT.md | 6 +- products/desktop/docs/README.md | 4 +- products/desktop/knip.json | 27 - products/desktop/mprocs.yaml | 6 +- products/desktop/package.json | 16 +- products/desktop/packages/core/package.json | 2 +- .../desktop/packages/host-router/package.json | 2 +- products/desktop/packages/owners.yaml | 5 - products/desktop/packages/shared/package.json | 2 +- products/desktop/packages/ui/package.json | 4 +- .../packages/ui/src/features/inbox/AGENTS.md | 2 +- .../packages/workspace-server/package.json | 8 +- products/desktop/pnpm-lock.yaml | 280 +- .../desktop/scripts/build-agent-workspace.mjs | 38 + products/desktop/turbo.json | 1 + .../signals/backend/scout_harness/prompt.py | 2 +- products/skills/backend/marketplace/README.md | 2 +- .../logic/services/custom_prompt_internals.py | 2 +- .../backend/logic/services/docker_sandbox.py | 2 - .../logic/services/test_docker_sandbox.py | 2 - .../sandbox/images/Dockerfile.sandbox-local | 3 +- .../temporal/process_task/ai_gateway_token.py | 4 +- .../tests/test_ai_gateway_token.py | 4 +- .../tasks/scripts/model_catalog_projection.py | 4 +- .../hogli_commands/ci_preflight.py | 22 +- .../hogli_commands/projections.py | 4 +- .../hogli_commands/test_runner.py | 34 +- .../hogli_commands/tests/test_ci_preflight.py | 4 +- .../hogli_commands/tests/test_test_runner.py | 7 + 743 files changed, 3329 insertions(+), 1721 deletions(-) create mode 100644 packages/agent/.gitignore create mode 100644 packages/agent/.npmrc create mode 100644 packages/agent/biome.jsonc create mode 100644 packages/agent/package.json rename {products/desktop => packages/agent}/packages/agent-contracts/package.json (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/adapter.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/agent-actions.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/agent-actions.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/agent-conversation.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/agent-runtime.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/api-http-client.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/api-http-client.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/backoff.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/backoff.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/bedrock-gateway.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/binary.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/binary.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/call-tool-result.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/call-tool-result.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/cloud-prompt.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/cloud-prompt.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/cloud-task-models.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/cloud-task-models.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/custom-cloud.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/custom-cloud.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/dismissal-reasons.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/dismissal-reasons.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/domain-types.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/domain-types.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/enrichment.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/errors.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/errors.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/exec-types.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/execution-modes.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/execution-modes.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/git-types.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/image.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/image.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/inbox-types.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/inbox-types.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/index.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/local-mcp-domain.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/mcp-tool-policy-domain.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/model-catalog.generated.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/model-catalog.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/model-catalog.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/models.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/models.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/oauth.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/oauth.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/objectTagKinds.generated.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/orchestration.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/pi-tool-call.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/pi-tool-call.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/posthog-products.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/posthog-property-headers.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/posthog-property-headers.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/pr-urls.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/pr-urls.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/private-network.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/private-network.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/product-engineer-prompt.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/product-engineer-prompt.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/reasoning-effort.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/reasoning-effort.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/regions.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/regions.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/rich-output-prompt.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/rich-output-prompt.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/saga.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/sandbox-env.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/schemas.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/session-events.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/signal-types.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/skills.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/skills.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/slash-commands.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/slash-commands.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/task-context.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/task.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/task.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/tool-meta.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/tool-meta.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/transcript-neutral-messages.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/src/urls.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/tsconfig.json (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/tsup.config.ts (100%) rename {products/desktop => packages/agent}/packages/agent-contracts/vitest.config.ts (100%) rename {products/desktop => packages/agent}/packages/agent/.env.example (100%) rename {products/desktop => packages/agent}/packages/agent/README.md (100%) rename {products/desktop => packages/agent}/packages/agent/build/native-binary.mjs (100%) rename {products/desktop => packages/agent}/packages/agent/build/verify-local-tools-mcp-server.mjs (100%) rename {products/desktop => packages/agent}/packages/agent/e2e/README.md (100%) rename {products/desktop => packages/agent}/packages/agent/e2e/compaction.e2e.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/e2e/config.ts (100%) rename {products/desktop => packages/agent}/packages/agent/e2e/driver.e2e.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/e2e/driver.ts (100%) rename {products/desktop => packages/agent}/packages/agent/e2e/guard.e2e.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/e2e/run-e2e.sh (99%) rename {products/desktop => packages/agent}/packages/agent/e2e/session-lifecycle.e2e.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/e2e/session-startup.e2e.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/e2e/structured-output.e2e.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/package.json (99%) rename {products/desktop => packages/agent}/packages/agent/src/acp-extensions.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/acp-extensions.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/acp-connection.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/acp-connection.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/base-acp-agent.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/base-acp-agent.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/SKILL.md (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/UPSTREAM.md (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/claude-agent.clear.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/claude-agent.finish.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/claude-agent.permission-mode.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/claude-agent.refresh.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/claude-agent.resume-model.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/claude-agent.side-question.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/claude-agent.slash-command.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/claude-agent.streamed-text.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/claude-agent.task-notification.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/claude-agent.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/claude-agent.turn-queue.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/context-breakdown.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/context-breakdown.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/conversion/acp-to-sdk.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/conversion/acp-to-sdk.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/conversion/sdk-to-acp.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/conversion/sdk-to-acp.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/conversion/task-state.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/conversion/task-state.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/conversion/tool-use-to-acp.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/conversion/tool-use-to-acp.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/hooks.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/hooks.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/image-sanitization.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/machine-auth.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/mcp/local-tools.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/mcp/local-tools.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/mcp/tool-metadata.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/mcp/tool-metadata.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/permissions/permission-handlers.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/permissions/permission-handlers.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/permissions/permission-options.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/permissions/permission-options.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/plan/utils.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/plan/utils.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/questions/utils.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/budget-guard.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/budget-guard.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/commands.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/commands.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/initialization.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/initialization.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/jsonl-hydration.bench.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/jsonl-hydration.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/jsonl-hydration.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/mcp-config.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/mcp-config.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/model-config.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/model-config.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/models.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/models.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/options.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/options.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/repo-path.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/rtk-hook.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/rtk-hook.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/settings.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/settings.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/traceparent-hook.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/session/traceparent-hook.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/side-question.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/side-question.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/subscription-login.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/subscription-login.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/tools.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/tools.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/claude/types.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/app-server-client.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/app-server-client.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/approvals.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/approvals.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/binary-path.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/binary-path.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/codex-app-server-agent.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/codex-app-server-agent.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/ext-notifications.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/ext-notifications.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/input.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/input.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/local-tools-mcp-server.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/local-tools-mcp.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/local-tools-mcp.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/mapping.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/mapping.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/mcp-config.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/mcp-config.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/mcp-manager.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/mcp-manager.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/models.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/models.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/protocol.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/session-config.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/session-config.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/spawn.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/spawn.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/structured-output.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/structured-output.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/subscription-login.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/subscription-login.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/thread-state.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/thread-state.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/token-usage.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/turn-controller.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/turn-controller.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/usage-tracker.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/codex-app-server/usage-tracker.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/error-classification.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/error-classification.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/local-skill.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/prompt-blocks.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/reasoning-effort.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/reasoning-effort.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/session-meta.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/adapters/session-meta.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/agent.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/agent.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/execution-mode.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/execution-mode.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/gateway-models.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/gateway-models.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/index.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/otel-attributes.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/otel-telemetry.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/otel-telemetry.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/otel-trace-builder.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/persistent-agent-state.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/persistent-agent-state.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/toolTranslator.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/bashTranslator.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/bashTranslator.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/editTranslator.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/editTranslator.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/findTranslator.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/findTranslator.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/grepTranslator.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/grepTranslator.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/lsTranslator.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/lsTranslator.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/readTranslator.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/readTranslator.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/writeTranslator.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/tools/writeTranslator.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/translatePiConversation.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/translatePiConversation.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/translatePiMessage.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/conversation/translatePiMessage.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/queue-persistence.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/queue-persistence.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/remote-rpc-client.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/repository-tools-extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/repository-tools-extension.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/rpc-client.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/rpc-client.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/rpc-environment.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/rpc-host.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/rpc-transport.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/rpc-transport.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/runtime.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/runtime.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pi/types.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/posthog-api.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/posthog-api.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pr-url-detector.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/pr-url-detector.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/resume.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/sagas/resume-saga.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/sagas/resume-saga.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/sagas/test-fixtures.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/agent-server.configure-environment.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/agent-server.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/agent-server.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/agentsh-runtime.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/agentsh-runtime.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/bin.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/boot-phases.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/boot-phases.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/cloud-prompt.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/cloud-session-prompt.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/codex-subscription-token.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/codex-subscription-token.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/credential-relay.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/credential-relay.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/event-stream-sender.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/event-stream-sender.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/gateway-env.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/jwt.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/mcp-relay-server.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/mcp-relay-server.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/pi-agent-server.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/pi-agent-server.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/pr-checkout.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/pr-checkout.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/question-relay.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/rtk-savings.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/rtk-savings.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/run-usage.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/run-usage.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/schemas.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/schemas.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/streaming-upload.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/types.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/utils/retry.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/utils/retry.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/utils/sse-parser.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/utils/sse-parser.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/wait-for-file.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/server/wait-for-file.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/session-log-writer.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/session-log-writer.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/smoke/bin.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/smoke/classify.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/smoke/classify.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/smoke/run-turn.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/test/fixtures/api.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/test/mocks/claude-sdk.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/test/mocks/msw-handlers.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/test/native-binary.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/types.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/acp-content.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/async-mutex.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/async-mutex.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/common.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/common.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/event-id.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/gateway-routing-cases.json (94%) rename {products/desktop => packages/agent}/packages/agent/src/utils/gateway.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/gateway.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/logger.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/logger.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/partial-json.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/partial-json.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/redact-secrets.test.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/redact-secrets.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/resolve-bundled-script.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/secret-rules.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/shell-quote.ts (100%) rename {products/desktop => packages/agent}/packages/agent/src/utils/streams.ts (100%) rename {products/desktop => packages/agent}/packages/agent/tsconfig.build.json (100%) rename {products/desktop => packages/agent}/packages/agent/tsconfig.json (100%) rename {products/desktop => packages/agent}/packages/agent/tsconfig.rollup.json (100%) rename {products/desktop => packages/agent}/packages/agent/tsup.config.ts (97%) rename {products/desktop => packages/agent}/packages/agent/vitest.config.ts (100%) rename {products/desktop => packages/agent}/packages/agent/vitest.e2e.config.ts (88%) rename {products/desktop => packages/agent}/packages/enricher/README.md (100%) rename {products/desktop => packages/agent}/packages/enricher/grammars/tree-sitter-go.wasm (100%) rename {products/desktop => packages/agent}/packages/enricher/grammars/tree-sitter-javascript.wasm (100%) rename {products/desktop => packages/agent}/packages/enricher/grammars/tree-sitter-python.wasm (100%) rename {products/desktop => packages/agent}/packages/enricher/grammars/tree-sitter-ruby.wasm (100%) rename {products/desktop => packages/agent}/packages/enricher/grammars/tree-sitter-tsx.wasm (100%) rename {products/desktop => packages/agent}/packages/enricher/grammars/tree-sitter-typescript.wasm (100%) rename {products/desktop => packages/agent}/packages/enricher/grammars/tree-sitter.wasm (100%) rename {products/desktop => packages/agent}/packages/enricher/package.json (100%) rename {products/desktop => packages/agent}/packages/enricher/scripts/fetch-grammars.cjs (100%) rename {products/desktop => packages/agent}/packages/enricher/src/alias-resolver.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/ast-helpers.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/call-detector.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/comment-formatter.test.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/comment-formatter.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/detector.test.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/detector.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/enrich-source.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/enriched-result.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/enricher.test.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/enricher.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/flag-classification.test.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/flag-classification.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/import-resolver.test.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/import-resolver.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/index.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/languages.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/log.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/parse-result.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/parser-manager.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/posthog-api.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/serialize.test.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/serialize.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/stale-flags.test.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/stale-flags.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/types.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/variant-detector.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/wrapper-detector.test.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/wrapper-detector.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/src/wrapper-integration.test.ts (100%) rename {products/desktop => packages/agent}/packages/enricher/tsconfig.json (100%) rename {products/desktop => packages/agent}/packages/enricher/tsup.config.ts (100%) rename {products/desktop => packages/agent}/packages/git/package.json (100%) rename {products/desktop => packages/agent}/packages/git/src/client.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/concurrency.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/exclude-patterns.test.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/exclude-patterns.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/gh.test.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/gh.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/git-exec.test.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/git-exec.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/git-saga.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/lock-detector.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/operation-manager.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/queries.test.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/queries.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/rw-lock.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/sagas/branch.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/sagas/checkpoint.test.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/sagas/checkpoint.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/sagas/clean.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/sagas/clone.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/sagas/commit.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/sagas/discard.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/sagas/head.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/sagas/init.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/sagas/patch.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/sagas/pull.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/sagas/push.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/sagas/stash.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/signed-commit.test.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/signed-commit.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/stacks.test.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/stacks.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/status-stream.test.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/status-stream.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/trailers.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/utils.test.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/utils.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/worktree-name.test.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/worktree-name.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/worktree.test.ts (100%) rename {products/desktop => packages/agent}/packages/git/src/worktree.ts (100%) rename {products/desktop => packages/agent}/packages/git/tsconfig.json (100%) rename {products/desktop => packages/agent}/packages/git/vitest.config.ts (100%) rename {products/desktop => packages/agent}/packages/harness/README.md (100%) rename {products/desktop => packages/agent}/packages/harness/package.json (100%) rename {products/desktop => packages/agent}/packages/harness/src/cli.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/README.md (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/agent-instructions/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/agent-instructions/instructions.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/agent-instructions/instructions.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/auto-publish/extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/auto-publish/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/auto-publish/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/background-jobs/extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/background-jobs/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/background-jobs/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/background-jobs/jobs.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/background-jobs/jobs.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/background-jobs/render.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/benjamin/benjamin.lock.json (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/benjamin/guidance.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/benjamin/guidance.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/benjamin/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/benjamin/instruction.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/benjamin/license-guard.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/benjamin/ste100.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/context-wiki/context-wiki.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/context-wiki/extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/context-wiki/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/context-wiki/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/current-work/extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/current-work/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/enrichment/extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/enrichment/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/enrichment/file-enricher.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/enrichment/file-enricher.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/enrichment/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/entrypoints.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/footer-focus-demo/README.md (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/footer-focus-demo/editor.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/footer-focus-demo/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/footer-focus-demo/footer.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/footer-focus-demo/inbox.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/footer-focus-demo/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/footer-focus-demo/overlay.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/hog-branding/brand-env.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/hog-branding/extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/hog-branding/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/hog-branding/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/cloud-run.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/github-token.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/github-token.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/local-tools.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/registry.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/registry.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/signed-commit-artefacts.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/signed-commit-artefacts.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/signed-commit-shared.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/task-tools-client.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/task-tools-client.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/artifact-upload.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/clone-repo.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/clone-repo.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/finish.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/finish.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/gh-stack.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/gh-stack.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/list-agents.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/list-agents.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/list-repos.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/report-activity.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/report-activity.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/send-agent-message.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/send-agent-message.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/show-actions.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/show-actions.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/signed-commit.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/signed-commit.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/signed-git-tool.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/signed-merge.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/signed-merge.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/signed-rewrite.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/speak.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/speak.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/task-summary-update.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/task-summary-update.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/upload-artifact.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/local-tools/tools/upload-artifact.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/README.md (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/auth-flow.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/auth-flow.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/auth-storage.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/auth-storage.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/callback-server.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/callback-server.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/config.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/config.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/errors.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/oauth-provider.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/oauth-provider.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/proxy-tool.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/proxy-tool.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/render.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/render.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/schema.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/schema.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/server-manager.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/server-manager.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/skills/mcp-servers/SKILL.md (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/test-support.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/tool-bridge.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/tool-bridge.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/tool-cache.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/mcp/tool-cache.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/agents.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/agents.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/auth.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/auth.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/bundled-agents/Explore.md (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/bundled-agents/General.md (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/bundled-agents/Plan.md (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/context.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/context.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/discovery.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/discovery.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/format.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/format.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/lifecycle.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/lifecycle.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/policy.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/policy.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/resources.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/run-agent.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/run-agent.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/settings.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/settings.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/skills/dynamic-workflows/SKILL.md (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/skills/subagent-orchestration/SKILL.md (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/text-truncate.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/text-truncate.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/tools/subagent-tool.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/tools/subagent-tool.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/tools/workflow-runtime.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/tools/workflow-runtime.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/tools/workflow-tool.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/tools/workflow-tool.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/ui/status-editor.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/ui/status-footer.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/ui/status-registry.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/ui/status-registry.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/ui/subagent-render.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/ui/subagent-render.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/ui/subagent-status-overlay.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/ui/workflow-render.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/ui/workflow-render.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/ui/workflow-status-overlay.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/orchestration/ui/workflow-status-overlay.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-mcp-policy/exec-permission.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-mcp-policy/exec-permission.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-mcp-policy/extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-mcp-policy/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-mcp-policy/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-mcp-policy/products.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-mcp-policy/products.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/gateway-auth.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/gateway-auth.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/gateway.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/gateway.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/model-catalog.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/model-catalog.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/models.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/models.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/oauth.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/oauth.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/provider.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/posthog-provider/provider.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/product-engineer/extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/product-engineer/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/product-engineer/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/registry.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/rtk/commands.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/rtk/commands.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/rtk/extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/rtk/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/rtk/git-command.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/rtk/guidance.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/rtk/guidance.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/rtk/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/skills-store/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/skills-store/store-skills.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/skills-store/store-skills.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/task-system-prompt/cloud.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/task-system-prompt/extension.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/task-system-prompt/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/task-system-prompt/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/task-system-prompt/prompt.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/task-system-prompt/prompt.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/task-system-prompt/skills.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/task-system-prompt/task-summary.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/web-access/extension.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/web-access/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/web-access/render.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/web-access/render.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/web-access/web-fetch.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/web-access/web-fetch.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/web-access/web-search.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/extensions/web-access/web-search.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/index.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/project-trust.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/project-trust.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/runtime.test.ts (100%) rename {products/desktop => packages/agent}/packages/harness/src/runtime.ts (100%) rename {products/desktop => packages/agent}/packages/harness/tsconfig.json (100%) rename {products/desktop => packages/agent}/packages/harness/tsup.config.ts (100%) rename {products/desktop/packages => packages}/agent/pnpm-lock.yaml (50%) create mode 100644 packages/agent/pnpm-workspace.yaml create mode 100644 packages/agent/scripts/rimraf.mjs rename {products/desktop => packages/agent}/scripts/sync-benjamin.mts (100%) create mode 100644 packages/agent/turbo.json create mode 100644 packages/agent/vitest.config.base.ts delete mode 100644 products/desktop/packages/owners.yaml create mode 100644 products/desktop/scripts/build-agent-workspace.mjs diff --git a/.agents/skills/posthog-desktop/SKILL.md b/.agents/skills/posthog-desktop/SKILL.md index 80c450e2c50c..53976ec465c7 100644 --- a/.agents/skills/posthog-desktop/SKILL.md +++ b/.agents/skills/posthog-desktop/SKILL.md @@ -42,6 +42,10 @@ Step outside only when one of these is true: `.dockerignore`, `.oxlintrc.json`, `.oxfmtrc.json`, `.config/.markdownlint-cli2.jsonc`, `.github/workflows/ci-{frontend,storybook,backend}.yml` (+ `.depot/workflows/ci-backend.yml`). Touch these only to keep an exclusion correct; say so when you do. +4. **The agent runtime changes.** `@posthog/agent`, `agent-contracts`, `enricher`, `git` and + `harness` live in a sibling workspace at `packages/agent/` (same toolchain, own lockfile), + because cloud sandboxes boot the agent without the desktop app. Work there, then run + `pnpm build:agent` from `products/desktop/` so desktop's turbo cache sees the change. Anything else outside the tree: stop and ask. diff --git a/.agents/skills/running-ci-preflight/SKILL.md b/.agents/skills/running-ci-preflight/SKILL.md index 74dcdd635bfd..97787a9479a8 100644 --- a/.agents/skills/running-ci-preflight/SKILL.md +++ b/.agents/skills/running-ci-preflight/SKILL.md @@ -35,7 +35,7 @@ hogli ci:preflight --fix - **`type-check` is a nudge, not a run.** Only a repo-wide mypy run matches CI (mypy follows imports, so a changed-file subset misses reverse-dependency breakage), and that costs minutes cold — too much to tax every push with. So preflight names the command instead of running it: judge whether your change is type-risky and run it yourself. CI blocks on the same command, so a type error you skip here comes back as a full re-run. - **`complexity` warns only.** Cyclomatic complexity above 10 in a changed file shows as `⚠ warning` and never blocks; CI annotates the same warning and posts it to the CI report comment. Simplify the function when you next touch it rather than gaming the number. - **Staleness is risk-based.** It fires when merging master _now_ would actually break something — textual merge conflicts (computed via `git merge-tree`, working tree untouched), migrations added on both sides, generated-file inputs changed on both sides, or CI workflows changed on master — plus a behind/age backstop, aggressive by default (5 commits / 2 days; env-tunable via `HOGLI_PREFLIGHT_STALE_COMMITS`/`HOGLI_PREFLIGHT_STALE_DAYS`) so we over-warn to start and tune down from telemetry. Merge master in when it fires. Advisory only, never auto-merged. -- **`· skipped (needs …)`** is expected on a bare checkout or sandbox. `needs stack`/`needs clickhouse` want a running dev stack (`hogli start`), `needs node` wants `pnpm install`, `needs desktop-node` wants `pnpm --dir products/desktop install` (the nested desktop workspace is excluded from the root install and has its own lockfile), and `needs python-env` wants `uv sync`, so the synced project environment is the `python` on PATH. Satisfy what you can, or let CI cover the rest. No hooks in your environment (no `node_modules`)? Run the loop yourself before pushing. +- **`· skipped (needs …)`** is expected on a bare checkout or sandbox. `needs stack`/`needs clickhouse` want a running dev stack (`hogli start`), `needs node` wants `pnpm install`, `needs desktop-node` wants `pnpm --dir products/desktop install` and `needs agent-node` wants `pnpm --dir packages/agent install` (both nested workspaces are excluded from the root install and have their own lockfiles), and `needs python-env` wants `uv sync`, so the synced project environment is the `python` on PATH. Satisfy what you can, or let CI cover the rest. No hooks in your environment (no `node_modules`)? Run the loop yourself before pushing. - **Flags.** `--against ` diffs against an explicit base; `--json` emits a machine-readable summary. - **Kill switch.** `HOGLI_PREFLIGHT_DISABLED=1` makes the command (and the hook) a no-op with exit 0. It is a rollout/emergency lever — respect it; never unset it to force a run. diff --git a/.claude/rules/task-model-catalog.md b/.claude/rules/task-model-catalog.md index 61aa28951735..8c1ac04d92b5 100644 --- a/.claude/rules/task-model-catalog.md +++ b/.claude/rules/task-model-catalog.md @@ -3,7 +3,7 @@ paths: - 'products/tasks/backend/model_catalog.py' - 'products/tasks/scripts/model_catalog_projection.py' - 'products/tasks/frontend/modelCatalog.generated.ts' - - 'products/desktop/packages/agent-contracts/src/model-catalog.generated.ts' + - 'packages/agent/packages/agent-contracts/src/model-catalog.generated.ts' --- `products/tasks/backend/model_catalog.py` is the single definition of a task run's triple: runtime adapter, model, and reasoning effort. @@ -12,7 +12,7 @@ The web composer and the desktop app each read a checked-in TypeScript projectio After changing the catalog, run `hogli build:projections` and commit both regenerated files. The command needs no dev stack and takes well under a second, so run it rather than reasoning about whether the output moved. -Never hand-edit `products/tasks/frontend/modelCatalog.generated.ts` or `products/desktop/packages/agent-contracts/src/model-catalog.generated.ts`. +Never hand-edit `products/tasks/frontend/modelCatalog.generated.ts` or `packages/agent/packages/agent-contracts/src/model-catalog.generated.ts`. `hogli build:projections --check` re-renders both and compares them byte for byte in CI, so an edit that the renderer would not produce fails CI rather than shipping. Adding a model means one row in `MODELS`. Two things do not follow from that row and are worth checking: diff --git a/.config/.markdownlint-cli2.jsonc b/.config/.markdownlint-cli2.jsonc index 0a984a3e29ae..852563c781bd 100644 --- a/.config/.markdownlint-cli2.jsonc +++ b/.config/.markdownlint-cli2.jsonc @@ -14,5 +14,5 @@ "MD045": false, "MD029": false, }, - "ignores": ["products/desktop/**", "**/fixtures/**"], + "ignores": ["products/desktop/**", "packages/agent/**", "**/fixtures/**"], } diff --git a/.env.example b/.env.example index 7b159f06cb47..cf90bf3e63fe 100644 --- a/.env.example +++ b/.env.example @@ -8,8 +8,8 @@ OIDC_RSA_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFA # RS256 private key for sandbox JWT authentication (public key is derived from this) SANDBOX_JWT_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDMAaMESiOX8PDM\nozOHunt1s+zp78nmLnHs6IvOoKS4rQXFVV2/ouTivIfLRMRDe2TAybsYK0yfAJeK\nFxW7O+MD/vjCMS7kJtOjskQIl3wQTjz/T4fwHkFpiqVHLWczeO5LdvaJBZ4FUYdc\nLaV+9T+4wEavJa5G/Ggl+9eWee/TuThN21wMuAQb7WZhWKqDVm8WfmZpvOXJJ/U1\nkg+8GVg7eMTs6GV0MI7YYwzEHRn3PUQrQmc+q6gROwHU7pEv8DdOLjDH5iYZL/4k\ndnW1KGO/Hqf7vzKEMN23YjL6bC4FDRfM5z/4nQUEjvXihzZ1yK6yChwEd7Ma/PUG\nIh6Pm5azAgMBAAECggEAE/nlDeUkmcWMuWe8WAIOrMvdhbARQ7+F2v46Z7/wi+ow\nB86qy2UWpzfGzu9WOIq7UZVvWJfaJ4erTxOg8SCVbi1oC7vn14y7FJW+y7M/AWm9\nLKg2VhuK/twGAHOVs23tXOkH4wrwb5ziyvKSo109zB19I7wQ1f/z7XmSTA3Mn3Kf\n6GecR6di+LuDUNeEPwuP061EnUUsSYZY/QnhUNHfAyWaO4Ezc4bdl8w2q3O1ElBo\ndaYx9ht9aw8bTjIAS6QUdnh3OPXrQ/E7+2RaEh6NFFuXsh93aGSXKB6ZgURk0wIc\nBtNGA5Sxur8nwMfYT+6Z8fi7wMGuGtKISNK+DXCVwQKBgQD+nG92xjZebauJaYOn\nK7cDgWza9zwG6nDv13vRPS+D9wlJP3eUH1O+vZsar9UdTrXGh51oBskc4giOK9aL\nOvp9SjfrRx9KbkLLTzcS+r0XIYog0TO0onswaJ+ybwuvXU6zx+GjoKmPFDYrsjC5\n/3AkBPgEhorM4bZ1plfsFMzbaQKBgQDNHogqPPIXSco9ESTA6b3IeyzEGVcODDFq\nZgEIuFZJ70FCgg+TfxvZyQKfEGjxg6nLKQswaAQ7Pt3yMvYmEiVTrxaLBIjG9Lu8\nTWOMmJDiA7rgFVsU5ENI6UH8Nv8FkS5JSAPgC8hFnLKvs/9RjCTET3UCGoK5ymdM\nO1c/L0epuwKBgDYLUKGeizXaA5pEWlymq89Drq5/4i75noVacP7GBQr26fKxVRmM\n2MLZDk5I2mzBI1aDvMazAgdudzBuX7joCPmFQn9fdmXfJ7BuHRubO33ocaBrp5UF\nFC7/Vj6S0aEkpisFF4Ea/kLPoHv/89XXQZ9zqo2TXW0F0CwC5hDHjYBZAoGAG4IN\ntsRnnxHpSllDOY/fQMSsEzxmvV6LPf6iAt5dzBqHAPlaR2iTfpiDfnt/52vF2JYP\nhxVcA+oBb9q/wglK8jcX6drY0P2/M5iZUiCfxX/EjwquJVYbY+rMS5vAhambsH40\n7tYFrLhACmo0QmZuA9m4EmklwO7Q/ZszryiTDsMCgYBUUMWlQfuTN8m+D/Eo614J\neRYx8/YcaQpASOzy74woAZyHGLjuu5eW9wclkdhklHGh6KyQ5B6JUXlQsbZxLbBb\n9oW6Jg+UvL0KKLqHoNmNitiAUGONrVpxLjrKUUrUfDD+sWsxQpzcOgBqalTZ2g30\nN6ctjTLJp5PqIIE9tZB9PQ==\n-----END PRIVATE KEY-----" -# Cloud tasks use the published @posthog/agent package by default. Uncomment this only when testing local agent changes. The desktop source lives in this repo at products/desktop (the standalone PostHog/code repo is archived). -# LOCAL_POSTHOG_CODE_MONOREPO_ROOT=./products/desktop +# Cloud tasks use the published @posthog/agent package by default. Uncomment this only when testing local agent changes. The agent workspace lives in this repo at packages/agent (the standalone PostHog/code repo is archived). +# LOCAL_POSTHOG_CODE_MONOREPO_ROOT=./packages/agent # Sandbox provider (you can choose between "docker" or "modal") SANDBOX_PROVIDER=docker diff --git a/.github/actions/desktop-build-agent-release/action.yml b/.github/actions/desktop-build-agent-release/action.yml index 1d26e0d1342e..02a8856540d9 100644 --- a/.github/actions/desktop-build-agent-release/action.yml +++ b/.github/actions/desktop-build-agent-release/action.yml @@ -6,10 +6,10 @@ runs: steps: - name: Build agent and workspace dependencies shell: bash - working-directory: products/desktop + working-directory: packages/agent run: pnpm --filter @posthog/agent... run build - name: Run agent tests shell: bash - working-directory: products/desktop + working-directory: packages/agent run: pnpm --filter @posthog/agent run test diff --git a/.github/scripts/desktop/check-pr-backend-coupling.sh b/.github/scripts/desktop/check-pr-backend-coupling.sh index 74f511f11c10..73c75bd4d085 100755 --- a/.github/scripts/desktop/check-pr-backend-coupling.sh +++ b/.github/scripts/desktop/check-pr-backend-coupling.sh @@ -32,6 +32,8 @@ is_backend_path() { is_desktop_path() { case "$1" in products/desktop/*) return 0 ;; + # The desktop app bundles these packages, so they ship on its release schedule. + packages/agent/packages/*) return 0 ;; *) return 1 ;; esac } diff --git a/.github/scripts/desktop/check-pr-backend-coupling.test.sh b/.github/scripts/desktop/check-pr-backend-coupling.test.sh index 2daaf624cbf9..400c78467deb 100755 --- a/.github/scripts/desktop/check-pr-backend-coupling.test.sh +++ b/.github/scripts/desktop/check-pr-backend-coupling.test.sh @@ -73,6 +73,12 @@ assert_result "backend-only PR is out of scope" 2 0 "No products/desktop changes register_pr 3 "[]" products/desktop/apps/foo.ts posthog/models.py assert_result "coupled PR fails with split guidance" 3 1 "must be separated into different PRs" +register_pr 7 "[]" packages/agent/packages/agent/src/agent.ts posthog/models.py +assert_result "agent workspace package coupled with backend fails" 7 1 "must be separated into different PRs" + +register_pr 8 "[]" packages/agent/agent-shadow/main.go products/tasks/backend/sandbox/images/Dockerfile.sandbox-base +assert_result "agent-shadow ships with the sandbox image, so it is out of scope" 8 0 "No products/desktop changes" + register_pr 4 '[{"name": "desktop-skip-backend-check"}]' products/desktop/apps/foo.ts posthog/models.py assert_result "skip label suppresses the check" 4 0 "skipping the coupling check" diff --git a/.github/scripts/trunk-impacted-targets.js b/.github/scripts/trunk-impacted-targets.js index 2f42114eb202..2dd1c0a7af92 100644 --- a/.github/scripts/trunk-impacted-targets.js +++ b/.github/scripts/trunk-impacted-targets.js @@ -807,6 +807,7 @@ const COMMON_FULLSTACK = ['fixtures'] // The pr-approval-agent engine's home inside the stamphog product. const PR_APPROVAL_AGENT_DIR = 'products/stamphog/packages/pr-approval-agent' +const AGENT_WORKSPACE_DIR = 'packages/agent' // Tools that own their whole test story and that no suite imports, so they can // hold a lane of their own. Everything else under tools/ falls through to the @@ -1973,6 +1974,11 @@ function computeTargets(changedFiles, context) { allPyProducts() continue } + // The desktop app bundles the agent workspace and the desktop-* workflows test it, + // so it shares the desktop lanes. Without the product it takes the frontend lanes. + if (file.startsWith(`${AGENT_WORKSPACE_DIR}/`) && addDesktopLanes(targets, context)) { + continue + } if (top === 'frontend' || (top === 'ee' && segments[1] === 'frontend') || top === 'packages') { allFeProducts() continue diff --git a/.github/scripts/trunk-impacted-targets.test.js b/.github/scripts/trunk-impacted-targets.test.js index 45ed80213f1b..d73c93d5aa1c 100644 --- a/.github/scripts/trunk-impacted-targets.test.js +++ b/.github/scripts/trunk-impacted-targets.test.js @@ -517,7 +517,10 @@ test('the paths-filter action and its CI share the ci-tooling lane', () => { // and depot.json is billing and cache routing that fails its own PR's builds // alone. test('pnpm patches take the JS lanes and depot.json the repo-config lane', () => { - assert.deepEqual(computeTargets(['patches/dayjs@1.11.11.patch'], CONTEXT), computeTargets(['.oxlintrc.json'], CONTEXT)) + assert.deepEqual( + computeTargets(['patches/dayjs@1.11.11.patch'], CONTEXT), + computeTargets(['.oxlintrc.json'], CONTEXT) + ) assert.deepEqual(computeTargets(['depot.json'], CONTEXT), ['repo-config']) }) @@ -769,6 +772,13 @@ test('desktop workflows claim the desktop product lanes and widen without the pr assert.deepEqual(computeTargets(['.github/workflows/desktop-ci.yml'], CONTEXT), EVERYTHING) }) +test('the agent workspace shares the desktop lanes and takes the frontend lanes without the product', () => { + const withDesktop = { ...CONTEXT, products: [...CONTEXT.products, 'desktop'] } + const agentFile = 'packages/agent/packages/agent/src/index.ts' + assert.deepEqual(computeTargets([agentFile], withDesktop), ['fe:product:desktop', 'py:product:desktop']) + assert.deepEqual(computeTargets([agentFile], CONTEXT), computeTargets(['packages/quill/src/index.ts'], CONTEXT)) +}) + // The Proto CI workflow gates buf lint and the stub drift checks over every // tree, which is the same radius the root buf configuration gets. test('the proto workflow claims every proto tree rather than everything', () => { @@ -810,7 +820,10 @@ test('the agent-skills workflow claims both language families', () => { }) test('the ml-mirror sidecar image and its workflow stay on the node lane', () => { - for (const file of ['.github/workflows/ci-ml-mirror-image-scrub-container.yml', 'Dockerfile.ml-mirror-image-scrub']) { + for (const file of [ + '.github/workflows/ci-ml-mirror-image-scrub-container.yml', + 'Dockerfile.ml-mirror-image-scrub', + ]) { assert.deepEqual(computeTargets([file], CONTEXT), ['node:ingestion'], file) } }) diff --git a/.github/workflows/ci-python.yml b/.github/workflows/ci-python.yml index 0a1e180ffe5c..39e08f21f4bd 100644 --- a/.github/workflows/ci-python.yml +++ b/.github/workflows/ci-python.yml @@ -130,10 +130,10 @@ jobs: - 'frontend/src/taxonomy/core-filter-definitions-by-group.json' - 'services/mcp/src/lib/trace-property-allowlist.generated.ts' - 'products/desktop/packages/core/src/inbox/objectKinds.generated.ts' - - 'products/desktop/packages/agent-contracts/src/objectTagKinds.generated.ts' + - 'packages/agent/packages/agent-contracts/src/objectTagKinds.generated.ts' - 'frontend/src/lib/components/AgentObjectTags/objectKinds.generated.ts' - 'products/tasks/frontend/modelCatalog.generated.ts' - - 'products/desktop/packages/agent-contracts/src/model-catalog.generated.ts' + - 'packages/agent/packages/agent-contracts/src/model-catalog.generated.ts' - 'services/mcp/src/lib/oauth-scopes.generated.ts' # hogli CLI changes need validation - 'tools/hogli/**' diff --git a/.github/workflows/desktop-agent-release-verify.yml b/.github/workflows/desktop-agent-release-verify.yml index 1ae3fe91aa50..68105d2de3c0 100644 --- a/.github/workflows/desktop-agent-release-verify.yml +++ b/.github/workflows/desktop-agent-release-verify.yml @@ -8,16 +8,10 @@ on: branches: - master paths: - - 'products/desktop/packages/agent/**' - - 'products/desktop/packages/enricher/**' - - 'products/desktop/packages/git/**' - - 'products/desktop/packages/harness/**' - - 'products/desktop/packages/agent-contracts/**' + - 'packages/agent/**' - '.github/actions/desktop-build-agent-release/**' - '.github/workflows/desktop-agent-release.yml' - '.github/workflows/desktop-agent-release-verify.yml' - - 'products/desktop/pnpm-lock.yaml' - - 'products/desktop/pnpm-workspace.yaml' env: # npm's audit blocks the pnpm bootstrap. See .github/actions/pnpm-install for why. @@ -34,7 +28,7 @@ jobs: if: ${{ !startsWith(github.head_ref, 'trunk-merge/') }} defaults: run: - working-directory: products/desktop + working-directory: packages/agent steps: - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -44,7 +38,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 with: - package_json_file: products/desktop/package.json + package_json_file: packages/agent/package.json - name: Set up Node 24 uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 diff --git a/.github/workflows/desktop-agent-release.yml b/.github/workflows/desktop-agent-release.yml index 5f41e681921c..803e94e3f70f 100644 --- a/.github/workflows/desktop-agent-release.yml +++ b/.github/workflows/desktop-agent-release.yml @@ -30,7 +30,7 @@ jobs: tarball_sha256: ${{ steps.pack.outputs.tarball_sha256 }} defaults: run: - working-directory: products/desktop + working-directory: packages/agent steps: - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -40,7 +40,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 with: - package_json_file: products/desktop/package.json + package_json_file: packages/agent/package.json - name: Set up Node 24 uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 @@ -88,7 +88,7 @@ jobs: retention-days: 1 - name: Publish the package to npm registry - working-directory: products/desktop/packages/agent + working-directory: packages/agent/packages/agent run: pnpm publish --access public --no-git-checks env: NPM_CONFIG_PROVENANCE: true diff --git a/.github/workflows/desktop-agent-tag.yml b/.github/workflows/desktop-agent-tag.yml index 281c03c16d01..f8fde4b6f6c1 100644 --- a/.github/workflows/desktop-agent-tag.yml +++ b/.github/workflows/desktop-agent-tag.yml @@ -5,8 +5,8 @@ on: branches: - master paths: - - 'products/desktop/packages/agent/**' - - 'products/desktop/packages/harness/**' + - 'packages/agent/packages/agent/**' + - 'packages/agent/packages/harness/**' - '.github/workflows/desktop-agent-tag.yml' - '.github/workflows/desktop-agent-release.yml' workflow_dispatch: @@ -87,10 +87,13 @@ jobs: # Count commits touching the agent or harness package since the base tag. In the # monorepo an unscoped count would include every PostHog commit and - # inflate patch numbers meaninglessly. + # inflate patch numbers meaninglessly. The old paths stay in the pathspec so + # the count does not restart below versions that are already published. PATCH=$(git rev-list "$LATEST_TAG".."$TARGET" --count -- \ products/desktop/packages/agent \ - products/desktop/packages/harness) + products/desktop/packages/harness \ + packages/agent/packages/agent \ + packages/agent/packages/harness) if [ "$PATCH" -eq 0 ]; then echo "No agent or harness commits since $LATEST_TAG. Nothing to release." diff --git a/.github/workflows/desktop-build-test.yml b/.github/workflows/desktop-build-test.yml index 58d617e8a510..b6a0ed21ad8a 100644 --- a/.github/workflows/desktop-build-test.yml +++ b/.github/workflows/desktop-build-test.yml @@ -18,6 +18,7 @@ on: types: [opened, synchronize, reopened, labeled] paths: - 'products/desktop/**' + - 'packages/agent/**' - '.github/workflows/desktop-build-test.yml' concurrency: @@ -133,13 +134,10 @@ jobs: - name: Build workspace packages run: | + node scripts/build-agent-workspace.mjs pnpm --filter @posthog/electron-trpc run build pnpm --filter @posthog/platform run build - pnpm --filter @posthog/shared... run build - pnpm --filter @posthog/git run build - pnpm --filter @posthog/enricher run build - pnpm --filter @posthog/harness run build - pnpm --filter @posthog/agent run build + pnpm --filter @posthog/shared run build # build/Assets.car is gitignored, so compile it here. actool only handles the .icon # bundle with Xcode 26, which this job gets from its macOS 26 runner's default @@ -361,13 +359,10 @@ jobs: # command's exit code, silently swallowing earlier failures. shell: bash run: | + node scripts/build-agent-workspace.mjs pnpm --filter @posthog/electron-trpc run build pnpm --filter @posthog/platform run build - pnpm --filter @posthog/shared... run build - pnpm --filter @posthog/git run build - pnpm --filter @posthog/enricher run build - pnpm --filter @posthog/harness run build - pnpm --filter @posthog/agent run build + pnpm --filter @posthog/shared run build # Two separate steps: in a multi-line pwsh script only the last # command's exit code fails the step, so a broken electron-vite @@ -487,13 +482,10 @@ jobs: - name: Build workspace packages run: | + node scripts/build-agent-workspace.mjs pnpm --filter @posthog/electron-trpc run build pnpm --filter @posthog/platform run build - pnpm --filter @posthog/shared... run build - pnpm --filter @posthog/git run build - pnpm --filter @posthog/enricher run build - pnpm --filter @posthog/harness run build - pnpm --filter @posthog/agent run build + pnpm --filter @posthog/shared run build - name: Build app env: diff --git a/.github/workflows/desktop-build.yml b/.github/workflows/desktop-build.yml index 06b395f94dea..7bfc61a7d997 100644 --- a/.github/workflows/desktop-build.yml +++ b/.github/workflows/desktop-build.yml @@ -11,6 +11,7 @@ on: branches: [master] paths: - 'products/desktop/**' + - 'packages/agent/**' - '.github/workflows/desktop-build.yml' concurrency: @@ -31,7 +32,8 @@ jobs: pull-requests: read outputs: # On master pushes the filter step is skipped and everything runs. - code: ${{ steps.filter.outputs.code || 'true' }} + # The desktop app bundles the agent workspace, so a change there counts as desktop code. + code: ${{ steps.filter.outputs.agent == 'true' && 'true' || steps.filter.outputs.code || 'true' }} workflow: ${{ steps.filter.outputs.workflow || 'true' }} steps: # Own rate-limit bucket; the shared GITHUB_TOKEN goes hot at merge peaks. @@ -67,6 +69,8 @@ jobs: - "!products/desktop/LICENSE" - "!products/desktop/.gitignore" - "!products/desktop/.env.example" + agent: + - "packages/agent/**" workflow: - ".github/workflows/desktop-build.yml" diff --git a/.github/workflows/desktop-quality.yml b/.github/workflows/desktop-quality.yml index 19044b4ce7ca..23d9c8627aab 100644 --- a/.github/workflows/desktop-quality.yml +++ b/.github/workflows/desktop-quality.yml @@ -11,6 +11,7 @@ on: branches: [master] paths: - 'products/desktop/**' + - 'packages/agent/**' - '.github/workflows/desktop-quality.yml' concurrency: @@ -26,7 +27,8 @@ jobs: pull-requests: read outputs: # On master pushes the filter step is skipped and everything runs. - code: ${{ steps.filter.outputs.code || 'true' }} + # The desktop app bundles the agent workspace, so a change there counts as desktop code. + code: ${{ steps.filter.outputs.agent == 'true' && 'true' || steps.filter.outputs.code || 'true' }} workflow: ${{ steps.filter.outputs.workflow || 'true' }} steps: # Own rate-limit bucket; the shared GITHUB_TOKEN goes hot at merge peaks. @@ -59,6 +61,8 @@ jobs: - "!products/desktop/LICENSE" - "!products/desktop/.gitignore" - "!products/desktop/.env.example" + agent: + - "packages/agent/**" workflow: - ".github/workflows/desktop-quality.yml" @@ -90,6 +94,10 @@ jobs: - name: Run Biome run: biome ci . + - name: Run Biome on the agent workspace + working-directory: packages/agent + run: biome ci . + - name: Setup Node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: diff --git a/.github/workflows/desktop-release.yml b/.github/workflows/desktop-release.yml index cd7b49c03042..17417a3766ab 100644 --- a/.github/workflows/desktop-release.yml +++ b/.github/workflows/desktop-release.yml @@ -162,20 +162,11 @@ jobs: - name: Build platform package run: pnpm --filter @posthog/platform run build - - name: Build shared package - run: pnpm --filter @posthog/shared... run build - - - name: Build git package - run: pnpm --filter @posthog/git run build - - - name: Build enricher package - run: pnpm --filter @posthog/enricher run build + - name: Build agent workspace + run: node scripts/build-agent-workspace.mjs - - name: Build harness package - run: pnpm --filter @posthog/harness run build - - - name: Build agent package - run: pnpm --filter @posthog/agent run build + - name: Build shared package + run: pnpm --filter @posthog/shared run build # build/Assets.car is gitignored, so compile it here. actool only handles the .icon # bundle with Xcode 26, which this job gets from its macOS 26 runner's default @@ -467,20 +458,11 @@ jobs: - name: Build platform package run: pnpm --filter @posthog/platform run build - - name: Build shared package - run: pnpm --filter @posthog/shared... run build - - - name: Build git package - run: pnpm --filter @posthog/git run build - - - name: Build enricher package - run: pnpm --filter @posthog/enricher run build + - name: Build agent workspace + run: node scripts/build-agent-workspace.mjs - - name: Build harness package - run: pnpm --filter @posthog/harness run build - - - name: Build agent package - run: pnpm --filter @posthog/agent run build + - name: Build shared package + run: pnpm --filter @posthog/shared run build # Two separate steps: in a multi-line pwsh script only the last # command's exit code fails the step, so a broken electron-vite @@ -661,20 +643,11 @@ jobs: - name: Build platform package run: pnpm --filter @posthog/platform run build - - name: Build shared package - run: pnpm --filter @posthog/shared... run build - - - name: Build git package - run: pnpm --filter @posthog/git run build + - name: Build agent workspace + run: node scripts/build-agent-workspace.mjs - - name: Build enricher package - run: pnpm --filter @posthog/enricher run build - - - name: Build harness package - run: pnpm --filter @posthog/harness run build - - - name: Build agent package - run: pnpm --filter @posthog/agent run build + - name: Build shared package + run: pnpm --filter @posthog/shared run build - name: Build release artifacts env: diff --git a/.github/workflows/desktop-sync-benjamin.yml b/.github/workflows/desktop-sync-benjamin.yml index e55a4df4067d..a6e8bb0b603a 100644 --- a/.github/workflows/desktop-sync-benjamin.yml +++ b/.github/workflows/desktop-sync-benjamin.yml @@ -42,8 +42,8 @@ jobs: token: ${{ steps.app-token.outputs.token }} sparse-checkout: | .nvmrc - products/desktop/scripts/sync-benjamin.mts - products/desktop/packages/agent/src/adapters/benjamin + packages/agent/scripts/sync-benjamin.mts + packages/agent/packages/harness/src/extensions/benjamin sparse-checkout-cone-mode: false - name: Set up Node @@ -54,17 +54,17 @@ jobs: - name: Sync the vendored instruction env: GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} - run: node products/desktop/scripts/sync-benjamin.mts + run: node packages/agent/scripts/sync-benjamin.mts - name: Check for changes id: check-changes run: | - if git diff --quiet products/desktop/packages/agent/src/adapters/benjamin; then + if git diff --quiet packages/agent/packages/harness/src/extensions/benjamin; then echo "changes=false" >> $GITHUB_OUTPUT echo "Vendored instruction is already at the upstream tip" else echo "changes=true" >> $GITHUB_OUTPUT - git diff --stat products/desktop/packages/agent/src/adapters/benjamin + git diff --stat packages/agent/packages/harness/src/extensions/benjamin fi - name: Find the open sync PR @@ -88,7 +88,7 @@ jobs: id: lock if: steps.check-changes.outputs.changes == 'true' run: | - commit=$(jq -r .commit products/desktop/packages/agent/src/adapters/benjamin/benjamin.lock.json) + commit=$(jq -r .commit packages/agent/packages/harness/src/extensions/benjamin/benjamin.lock.json) echo "commit=$commit" >> $GITHUB_OUTPUT - name: Build PR body @@ -100,7 +100,7 @@ jobs: echo "Upstream bump of the vendored Benjamin-Plus instruction." echo echo "- Source: [JetBrains/benjamin-plus-skill@\`$COMMIT\`](https://github.com/JetBrains/benjamin-plus-skill/commit/$COMMIT)" - echo "- Regenerated by \`products/desktop/scripts/sync-benjamin.mts\`, which verifies the file against upstream \`SHA256SUMS.txt\` before writing." + echo "- Regenerated by \`packages/agent/scripts/sync-benjamin.mts\`, which verifies the file against upstream \`SHA256SUMS.txt\` before writing." echo echo "**Do not merge unattended.** The instruction ships into every cloud agent session that runs with \`POSTHOG_BENJAMIN=1\`, so a human has to:" echo @@ -128,7 +128,7 @@ jobs: commit_message: 'chore(tasks): bump vendored benjamin-plus instruction' repo: ${{ github.repository }} branch: ${{ env.SYNC_BRANCH }} - file_pattern: 'products/desktop/packages/agent/src/adapters/benjamin' + file_pattern: 'packages/agent/packages/harness/src/extensions/benjamin' env: GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} diff --git a/.github/workflows/desktop-tag.yml b/.github/workflows/desktop-tag.yml index fe18e37971c0..9afbbf8b1e39 100644 --- a/.github/workflows/desktop-tag.yml +++ b/.github/workflows/desktop-tag.yml @@ -94,7 +94,7 @@ jobs: esac # Scoped to products/desktop/: monorepo master always has commits landing, so an # unscoped check would never see a quiet period. - LAST_COMMIT_EPOCH=$(git log -1 --format=%ct HEAD -- products/desktop/) + LAST_COMMIT_EPOCH=$(git log -1 --format=%ct HEAD -- products/desktop/ packages/agent/) NOW_EPOCH=$(date +%s) AGE_MINUTES=$(( (NOW_EPOCH - LAST_COMMIT_EPOCH) / 60 )) @@ -207,7 +207,7 @@ jobs: # Scoped to products/desktop/: an unscoped count would include every PostHog # commit and inflate patch numbers meaninglessly. - PATCH=$(git rev-list "$LATEST_TAG".."$TARGET" --count -- products/desktop/) + PATCH=$(git rev-list "$LATEST_TAG".."$TARGET" --count -- products/desktop/ packages/agent/) if [ "$PATCH" -eq 0 ]; then echo "No desktop commits since $LATEST_TAG. Nothing to release." diff --git a/.github/workflows/desktop-test.yml b/.github/workflows/desktop-test.yml index d93f0e509707..1874d1dd8960 100644 --- a/.github/workflows/desktop-test.yml +++ b/.github/workflows/desktop-test.yml @@ -37,9 +37,10 @@ jobs: pull-requests: read outputs: # On master pushes the filter step is skipped and everything runs. - code: ${{ steps.filter.outputs.code || 'true' }} + # The desktop app bundles the agent workspace, so a change there counts as desktop code. + code: ${{ steps.filter.outputs.agent == 'true' && 'true' || steps.filter.outputs.code || 'true' }} workflow: ${{ steps.filter.outputs.workflow || 'true' }} - packages: ${{ steps.filter.outputs.packages }} + packages: ${{ steps.filter.outputs.agent == 'true' && 'true' || steps.filter.outputs.packages }} steps: # Own rate-limit bucket; the shared GITHUB_TOKEN goes hot at merge peaks. - uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1 @@ -74,6 +75,8 @@ jobs: - "!products/desktop/LICENSE" - "!products/desktop/.gitignore" - "!products/desktop/.env.example" + agent: + - "packages/agent/**" workflow: - ".github/workflows/desktop-test.yml" packages: @@ -274,7 +277,7 @@ jobs: # once unit-test + electron-test have passed. There is intentionally NO # gate on the gateway config being present: if the POSTHOG_CODE_E2E_* # secret/vars are missing, the fail-loud guard - # (products/desktop/packages/agent/e2e/guard.e2e.test.ts) REDS the run rather than + # (packages/agent/packages/agent/e2e/guard.e2e.test.ts) REDS the run rather than # skipping to green. Fork PRs are skipped, since they never receive the # gateway secret and would red spuriously. # @@ -334,7 +337,8 @@ jobs: key: desktop-pnpm-${{ runner.os }}-${{ hashFiles('products/desktop/pnpm-lock.yaml') }} - name: Build agent dependencies - run: pnpm exec turbo build --filter=@posthog/agent^... + working-directory: packages/agent + run: pnpm install --frozen-lockfile && pnpm exec turbo build --filter=@posthog/agent^... - name: Download native codex binary # Non-fatal at the STEP so a failure surfaces as the fail-loud binary guard @@ -344,9 +348,10 @@ jobs: run: node apps/code/scripts/download-binaries.mjs || echo "codex binary download failed; the binary guard test will red the run" - name: Run live e2e (both adapters) + working-directory: packages/agent run: pnpm --filter agent run test:e2e # The suite reads these POSTHOG_CODE_E2E_* names directly - # (products/desktop/packages/agent/e2e/config.ts). The personal API key is an org + # (packages/agent/packages/agent/e2e/config.ts). The personal API key is an org # secret; the URL and model/environment overrides are org vars. env: POSTHOG_CODE_E2E_GATEWAY_PERSONAL_API_KEY: ${{ secrets.POSTHOG_CODE_E2E_GATEWAY_PERSONAL_API_KEY }} diff --git a/.github/workflows/desktop-typecheck.yml b/.github/workflows/desktop-typecheck.yml index c63716958dbd..4fa3b8cd5a5b 100644 --- a/.github/workflows/desktop-typecheck.yml +++ b/.github/workflows/desktop-typecheck.yml @@ -11,6 +11,7 @@ on: branches: [master] paths: - 'products/desktop/**' + - 'packages/agent/**' - '.github/workflows/desktop-typecheck.yml' concurrency: @@ -31,7 +32,8 @@ jobs: pull-requests: read outputs: # On master pushes the filter step is skipped and everything runs. - code: ${{ steps.filter.outputs.code || 'true' }} + # The desktop app bundles the agent workspace, so a change there counts as desktop code. + code: ${{ steps.filter.outputs.agent == 'true' && 'true' || steps.filter.outputs.code || 'true' }} workflow: ${{ steps.filter.outputs.workflow || 'true' }} steps: # Own rate-limit bucket; the shared GITHUB_TOKEN goes hot at merge peaks. @@ -67,6 +69,8 @@ jobs: - "!products/desktop/LICENSE" - "!products/desktop/.gitignore" - "!products/desktop/.env.example" + agent: + - "packages/agent/**" workflow: - ".github/workflows/desktop-typecheck.yml" diff --git a/.github/workflows/desktop-update-e2e.yml b/.github/workflows/desktop-update-e2e.yml index baed8e61ef30..00a69c89c4f2 100644 --- a/.github/workflows/desktop-update-e2e.yml +++ b/.github/workflows/desktop-update-e2e.yml @@ -108,13 +108,10 @@ jobs: - name: Build workspace packages run: | + node scripts/build-agent-workspace.mjs pnpm --filter @posthog/electron-trpc run build pnpm --filter @posthog/platform run build - pnpm --filter @posthog/shared... run build - pnpm --filter @posthog/git run build - pnpm --filter @posthog/enricher run build - pnpm --filter @posthog/harness run build - pnpm --filter @posthog/agent run build + pnpm --filter @posthog/shared run build - name: Build old + new update pair (and 3.0.0 chain feed) working-directory: products/desktop/apps/code diff --git a/.oxfmtrc.json b/.oxfmtrc.json index 02fb15a0a36d..eb6e122ee016 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -94,6 +94,20 @@ "products/desktop/**/*.md", "products/desktop/**/*.mdx", "products/desktop/pnpm-lock.yaml", + "packages/agent/**/*.ts", + "packages/agent/**/*.tsx", + "packages/agent/**/*.js", + "packages/agent/**/*.jsx", + "packages/agent/**/*.mjs", + "packages/agent/**/*.cjs", + "packages/agent/**/*.mts", + "packages/agent/**/*.json", + "packages/agent/**/*.jsonc", + "packages/agent/**/*.css", + "packages/agent/**/*.scss", + "packages/agent/**/*.md", + "packages/agent/**/*.mdx", + "packages/agent/pnpm-lock.yaml", "products/desktop/apps/code/snapshots.yml", "frontend/snapshots.yml", "venv", diff --git a/.oxlintrc.json b/.oxlintrc.json index 4896a2994db0..5c68a3045c61 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -6,6 +6,7 @@ }, "ignorePatterns": [ "products/desktop", + "packages/agent", "node_modules", "dist", "build", diff --git a/bin/start-desktop b/bin/start-desktop index d682a3ca29bc..0a74204a1387 100755 --- a/bin/start-desktop +++ b/bin/start-desktop @@ -11,5 +11,9 @@ fi cd products/desktop pnpm install --frozen-lockfile +node scripts/build-agent-workspace.mjs -exec node scripts/dev-with-skills.mjs pnpm exec turbo dev --filter=@posthog/code --filter=@posthog/agent --filter=@posthog/git --filter=@posthog/platform --filter=@posthog/enricher +pnpm --dir ../../packages/agent exec turbo dev --filter=@posthog/agent --filter=@posthog/git --filter=@posthog/enricher & +trap 'kill %1 2>/dev/null || true' EXIT + +node scripts/dev-with-skills.mjs pnpm exec turbo dev --filter=@posthog/code --filter=@posthog/platform diff --git a/docs/internal/monorepo-layout.md b/docs/internal/monorepo-layout.md index 3870ee60db2e..e147cd90a174 100644 --- a/docs/internal/monorepo-layout.md +++ b/docs/internal/monorepo-layout.md @@ -30,7 +30,7 @@ services/ # Independent services NOT owned by any one product packages/ # Libraries shared across more than one product/service (e.g. quill) owners/ # owners.yaml resolver (owners_yaml) — Python uv workspace member, RUNTIME dependency - agent/ # Sandbox agent runtime; agent-shadow/ is the Go observer the sandbox base image builds + agent/ # Agent runtime: a standalone pnpm workspace (@posthog/agent and the packages it bundles) plus agent-shadow/, the Go observer the sandbox base image builds common/ # Shared code — holding pen, NOT a destination (goal: shrink it) hogql_parser/ # HogQL parser @@ -69,6 +69,10 @@ See [products/README.md](/products/README.md) for how to create products. For ne One exception to the Django-plus-React shape: `products/desktop/` is the PostHog desktop app (Electron, plus mobile and web hosts), imported from the PostHog/code repo. It is a nested standalone pnpm workspace with its own lockfile, Node version and Biome toolchain, deliberately excluded from the root pnpm workspace, with its own `desktop-*` CI. Its `AGENTS.md` covers the architecture. Day to day, drive it through `hogli desktop:*` commands, or `cd products/desktop` and use pnpm directly. +The agent runtime the desktop app bundles is a second nested workspace at `packages/agent/` (`@posthog/agent` plus `agent-contracts`, `enricher`, `git` and `harness`), because cloud task sandboxes boot the published agent without the desktop app. +Desktop depends on it through `link:` paths, since turbo rejects a workspace member outside its root. +Turbo cannot hash files behind a path link, so `products/desktop/scripts/build-agent-workspace.mjs` builds that workspace and writes a stamp that desktop's `turbo.json` lists as a global dependency. + #### What a product can own Most products are a Django app plus React scenes — and most already carry more: an `mcp/` directory of MCP tool definitions, often a `skills/` directory of agent skills. A product can own anything attributable to it, runtime and tooling alike. Nest it under the product instead of scattering it across top-level dirs: diff --git a/docs/internal/sandboxes-setup-guide.md b/docs/internal/sandboxes-setup-guide.md index c8f71118be32..2e94f9a880bd 100644 --- a/docs/internal/sandboxes-setup-guide.md +++ b/docs/internal/sandboxes-setup-guide.md @@ -298,8 +298,8 @@ For local Docker, the worker builds the packages inside the sandbox image. The f ```bash # In your .env: SANDBOX_PROVIDER=docker -# The desktop source lives in this repo at products/desktop -LOCAL_POSTHOG_CODE_MONOREPO_ROOT=./products/desktop +# The agent workspace lives in this repo at packages/agent +LOCAL_POSTHOG_CODE_MONOREPO_ROOT=./packages/agent ``` Restart the temporal worker after changing `.env`. @@ -307,7 +307,7 @@ Restart the temporal worker after changing `.env`. For local Modal, set `SANDBOX_PROVIDER=MODAL_DOCKER`, build the packages, and restart the temporal worker: ```bash -pnpm --dir products/desktop --filter @posthog/agent... build +pnpm --dir packages/agent build ``` ### Sandbox providers @@ -413,7 +413,7 @@ When both `SANDBOX_PROVIDER=MODAL_DOCKER` and `LOCAL_POSTHOG_CODE_MONOREPO_ROOT` After changing agent-server code, rebuild and restart the worker: ```bash -cd products/desktop/packages/agent && pnpm build +cd packages/agent/packages/agent && pnpm build ``` > **Note:** The build context is cached for the lifetime of the worker process (`lru_cache`). diff --git a/docs/published/handbook/engineering/ai/writing-skills.md b/docs/published/handbook/engineering/ai/writing-skills.md index 37f29b65c7cf..6812b27ce6e0 100644 --- a/docs/published/handbook/engineering/ai/writing-skills.md +++ b/docs/published/handbook/engineering/ai/writing-skills.md @@ -434,15 +434,15 @@ while its extra reference files survived as orphans in the other source's direct The Desktop harness bundle is the exception: it packages context-mill alone, so a skill from this repo is absent there rather than overwritten. -| Consumer | Merge site | -| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| PostHog Desktop build | `products/desktop/apps/code/vite-main-plugins.mts` (`copyPosthogPlugin`) | -| PostHog Desktop runtime, every 30 min | `products/desktop/packages/workspace-server/src/services/posthog-plugin/update-skills-saga.ts` | -| Desktop harness bundle | `products/desktop/packages/harness/tsup.config.ts` – context-mill only, this repo's skills are absent rather than overwritten | -| Tasks sandbox base image | `.github/workflows/cd-sandbox-base-image.yml` | -| Tasks golden snapshot | `.github/workflows/cd-tasks-golden-snapshot.yml` | -| `PostHog/skills` mirror | that repo's `.github/workflows/sync-omnibus.yml` | -| `PostHog/ai-plugin` plugin | that repo's `.github/workflows/sync-skills.yml` | +| Consumer | Merge site | +| ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| PostHog Desktop build | `products/desktop/apps/code/vite-main-plugins.mts` (`copyPosthogPlugin`) | +| PostHog Desktop runtime, every 30 min | `products/desktop/packages/workspace-server/src/services/posthog-plugin/update-skills-saga.ts` | +| Desktop harness bundle | `packages/agent/packages/harness/tsup.config.ts` – context-mill only, this repo's skills are absent rather than overwritten | +| Tasks sandbox base image | `.github/workflows/cd-sandbox-base-image.yml` | +| Tasks golden snapshot | `.github/workflows/cd-tasks-golden-snapshot.yml` | +| `PostHog/skills` mirror | that repo's `.github/workflows/sync-omnibus.yml` | +| `PostHog/ai-plugin` plugin | that repo's `.github/workflows/sync-skills.yml` | Note what is missing from that list: local builds. `LocalSkillsCache.ensure_built()` renders only `products/*/skills/` and wipes the dist dir first, diff --git a/hogli.yaml b/hogli.yaml index 48ac2ed79ada..8d0d5916e656 100644 --- a/hogli.yaml +++ b/hogli.yaml @@ -1093,16 +1093,16 @@ desktop: description: Run the desktop app dev stack (build deps, then phrocs with Electron) desktop:test: cmd: pnpm --dir products/desktop test - description: Run desktop unit tests (Vitest via turbo, nested workspace) + description: Run desktop and agent workspace unit tests (Vitest via turbo, nested workspaces) desktop:typecheck: cmd: pnpm --dir products/desktop typecheck - description: Typecheck all desktop packages (turbo) + description: Typecheck all desktop and agent workspace packages (turbo) desktop:lint: - cmd: pnpm --dir products/desktop exec biome ci . && node products/desktop/scripts/check-host-boundaries.mjs - description: Check desktop code quality without writing (Biome + host boundaries, mirrors desktop-quality CI) + cmd: pnpm --dir products/desktop exec biome ci . && pnpm --dir packages/agent exec biome ci . && node products/desktop/scripts/check-host-boundaries.mjs + description: Check desktop and agent workspace code quality without writing (Biome + host boundaries, mirrors desktop-quality CI) desktop:lint:fix: - cmd: pnpm --dir products/desktop run lint - description: Autofix desktop lint issues (biome check --write --unsafe) + cmd: pnpm --dir products/desktop run lint && pnpm --dir packages/agent run lint + description: Autofix desktop and agent workspace lint issues (biome check --write --unsafe) owners: owners:resolve: diff --git a/package.json b/package.json index 6c3a72791b6f..84bafe613796 100644 --- a/package.json +++ b/package.json @@ -97,6 +97,7 @@ ], "{playwright,frontend,products,common,ee,services,docs}/**/*.{js,jsx,mjs,mts,ts,tsx}": "bin/hogli format:js", "products/desktop/**/*.{js,mjs,ts,tsx,json,jsonc,css}": "pnpm --dir products/desktop exec biome check --write --no-errors-on-unmatched --files-ignore-unknown=true", + "packages/agent/**/*.{js,mjs,mts,ts,tsx,json,jsonc}": "pnpm --dir packages/agent exec biome check --write --no-errors-on-unmatched --files-ignore-unknown=true", "nodejs/**/*.{js,jsx,mjs,mts,ts,tsx}": "bin/hogli format:nodejs", "funnel-udf/**/*.rs": "bin/hogli format:rust", "!(posthog/hogql/grammar/*|products/*/skills/*/scripts/*|products/stamphog/packages/*/*)*.{py,pyi}": [ diff --git a/packages/agent/.gitignore b/packages/agent/.gitignore new file mode 100644 index 000000000000..db66596ccaf3 --- /dev/null +++ b/packages/agent/.gitignore @@ -0,0 +1,13 @@ +node_modules/ +.pnpm-store/ +dist/ +.turbo/ +junit.xml + +# tsup bundled config artifacts (temporary files left behind when bundling TS configs) +*.config.bundled_*.mjs +# vite bundled config artifacts (left behind when a vitest run is interrupted) +*.config.ts.timestamp-*.mjs + +.env +.env.local diff --git a/packages/agent/.npmrc b/packages/agent/.npmrc new file mode 100644 index 000000000000..81bbe90c961f --- /dev/null +++ b/packages/agent/.npmrc @@ -0,0 +1,3 @@ +node-linker=hoisted +shamefully-hoist=true +min-release-age=7 diff --git a/packages/agent/biome.jsonc b/packages/agent/biome.jsonc new file mode 100644 index 000000000000..f4416bafc391 --- /dev/null +++ b/packages/agent/biome.jsonc @@ -0,0 +1,91 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.2.4/schema.json", + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true + }, + "files": { + "ignoreUnknown": false + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 2 + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "suspicious": { + "noExplicitAny": "warn" + } + } + }, + "javascript": { + "formatter": { + "quoteStyle": "double" + } + }, + "assist": { + "enabled": true, + "actions": { + "source": { + "organizeImports": "on" + } + } + }, + "overrides": [ + { + // Object-tag kind registry generated from posthog/object_tags/kinds.py; the + // generator's byte-stable output is what `hogli build:object-tags --check` + // compares against, so no formatter may touch it. + "includes": ["packages/agent-contracts/src/objectTagKinds.generated.ts"], + "formatter": { + "enabled": false + } + }, + { + // Disallow console.* in agent source code - use logger instead + "includes": ["packages/agent/src/**/*.ts"], + "linter": { + "rules": { + "suspicious": { + "noConsole": "error" + } + } + } + }, + { + // Logger implementations intentionally wrap console + "includes": ["packages/agent/src/utils/logger.ts"], + "linter": { + "rules": { + "suspicious": { + "noConsole": "off" + } + } + } + }, + { + "includes": ["packages/**/*.ts"], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "patterns": [ + { + "group": ["@posthog/shared", "@posthog/shared/*"], + "message": "The agent runtime must not depend on desktop code. Import from @posthog/agent-contracts." + } + ] + } + } + } + } + } + } + ] +} diff --git a/packages/agent/package.json b/packages/agent/package.json new file mode 100644 index 000000000000..4799c67f026b --- /dev/null +++ b/packages/agent/package.json @@ -0,0 +1,25 @@ +{ + "name": "posthog-agent-workspace", + "version": "0.0.0", + "description": "The PostHog agent runtime and the packages it bundles", + "private": true, + "engines": { + "node": ">=22.19.0" + }, + "packageManager": "pnpm@10.23.0+sha512.21c4e5698002ade97e4efe8b8b4a89a8de3c85a37919f957e7a0f30f38fbc5bbdd05980ffe29179b2fb6e6e691242e098d945d1601772cad0fef5fb6411e2a4b", + "scripts": { + "build": "turbo build", + "dev": "turbo dev", + "typecheck": "turbo typecheck", + "test": "turbo test --concurrency=2", + "lint": "biome check --write --unsafe", + "format": "biome format --write", + "clean": "pnpm -r clean", + "benjamin:sync": "node scripts/sync-benjamin.mts" + }, + "license": "MIT", + "devDependencies": { + "@biomejs/biome": "2.2.4", + "turbo": "^2.9.16" + } +} diff --git a/products/desktop/packages/agent-contracts/package.json b/packages/agent/packages/agent-contracts/package.json similarity index 100% rename from products/desktop/packages/agent-contracts/package.json rename to packages/agent/packages/agent-contracts/package.json diff --git a/products/desktop/packages/agent-contracts/src/adapter.ts b/packages/agent/packages/agent-contracts/src/adapter.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/adapter.ts rename to packages/agent/packages/agent-contracts/src/adapter.ts diff --git a/products/desktop/packages/agent-contracts/src/agent-actions.test.ts b/packages/agent/packages/agent-contracts/src/agent-actions.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/agent-actions.test.ts rename to packages/agent/packages/agent-contracts/src/agent-actions.test.ts diff --git a/products/desktop/packages/agent-contracts/src/agent-actions.ts b/packages/agent/packages/agent-contracts/src/agent-actions.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/agent-actions.ts rename to packages/agent/packages/agent-contracts/src/agent-actions.ts diff --git a/products/desktop/packages/agent-contracts/src/agent-conversation.ts b/packages/agent/packages/agent-contracts/src/agent-conversation.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/agent-conversation.ts rename to packages/agent/packages/agent-contracts/src/agent-conversation.ts diff --git a/products/desktop/packages/agent-contracts/src/agent-runtime.ts b/packages/agent/packages/agent-contracts/src/agent-runtime.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/agent-runtime.ts rename to packages/agent/packages/agent-contracts/src/agent-runtime.ts diff --git a/products/desktop/packages/agent-contracts/src/api-http-client.test.ts b/packages/agent/packages/agent-contracts/src/api-http-client.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/api-http-client.test.ts rename to packages/agent/packages/agent-contracts/src/api-http-client.test.ts diff --git a/products/desktop/packages/agent-contracts/src/api-http-client.ts b/packages/agent/packages/agent-contracts/src/api-http-client.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/api-http-client.ts rename to packages/agent/packages/agent-contracts/src/api-http-client.ts diff --git a/products/desktop/packages/agent-contracts/src/backoff.test.ts b/packages/agent/packages/agent-contracts/src/backoff.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/backoff.test.ts rename to packages/agent/packages/agent-contracts/src/backoff.test.ts diff --git a/products/desktop/packages/agent-contracts/src/backoff.ts b/packages/agent/packages/agent-contracts/src/backoff.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/backoff.ts rename to packages/agent/packages/agent-contracts/src/backoff.ts diff --git a/products/desktop/packages/agent-contracts/src/bedrock-gateway.ts b/packages/agent/packages/agent-contracts/src/bedrock-gateway.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/bedrock-gateway.ts rename to packages/agent/packages/agent-contracts/src/bedrock-gateway.ts diff --git a/products/desktop/packages/agent-contracts/src/binary.test.ts b/packages/agent/packages/agent-contracts/src/binary.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/binary.test.ts rename to packages/agent/packages/agent-contracts/src/binary.test.ts diff --git a/products/desktop/packages/agent-contracts/src/binary.ts b/packages/agent/packages/agent-contracts/src/binary.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/binary.ts rename to packages/agent/packages/agent-contracts/src/binary.ts diff --git a/products/desktop/packages/agent-contracts/src/call-tool-result.test.ts b/packages/agent/packages/agent-contracts/src/call-tool-result.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/call-tool-result.test.ts rename to packages/agent/packages/agent-contracts/src/call-tool-result.test.ts diff --git a/products/desktop/packages/agent-contracts/src/call-tool-result.ts b/packages/agent/packages/agent-contracts/src/call-tool-result.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/call-tool-result.ts rename to packages/agent/packages/agent-contracts/src/call-tool-result.ts diff --git a/products/desktop/packages/agent-contracts/src/cloud-prompt.test.ts b/packages/agent/packages/agent-contracts/src/cloud-prompt.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/cloud-prompt.test.ts rename to packages/agent/packages/agent-contracts/src/cloud-prompt.test.ts diff --git a/products/desktop/packages/agent-contracts/src/cloud-prompt.ts b/packages/agent/packages/agent-contracts/src/cloud-prompt.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/cloud-prompt.ts rename to packages/agent/packages/agent-contracts/src/cloud-prompt.ts diff --git a/products/desktop/packages/agent-contracts/src/cloud-task-models.test.ts b/packages/agent/packages/agent-contracts/src/cloud-task-models.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/cloud-task-models.test.ts rename to packages/agent/packages/agent-contracts/src/cloud-task-models.test.ts diff --git a/products/desktop/packages/agent-contracts/src/cloud-task-models.ts b/packages/agent/packages/agent-contracts/src/cloud-task-models.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/cloud-task-models.ts rename to packages/agent/packages/agent-contracts/src/cloud-task-models.ts diff --git a/products/desktop/packages/agent-contracts/src/custom-cloud.test.ts b/packages/agent/packages/agent-contracts/src/custom-cloud.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/custom-cloud.test.ts rename to packages/agent/packages/agent-contracts/src/custom-cloud.test.ts diff --git a/products/desktop/packages/agent-contracts/src/custom-cloud.ts b/packages/agent/packages/agent-contracts/src/custom-cloud.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/custom-cloud.ts rename to packages/agent/packages/agent-contracts/src/custom-cloud.ts diff --git a/products/desktop/packages/agent-contracts/src/dismissal-reasons.test.ts b/packages/agent/packages/agent-contracts/src/dismissal-reasons.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/dismissal-reasons.test.ts rename to packages/agent/packages/agent-contracts/src/dismissal-reasons.test.ts diff --git a/products/desktop/packages/agent-contracts/src/dismissal-reasons.ts b/packages/agent/packages/agent-contracts/src/dismissal-reasons.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/dismissal-reasons.ts rename to packages/agent/packages/agent-contracts/src/dismissal-reasons.ts diff --git a/products/desktop/packages/agent-contracts/src/domain-types.test.ts b/packages/agent/packages/agent-contracts/src/domain-types.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/domain-types.test.ts rename to packages/agent/packages/agent-contracts/src/domain-types.test.ts diff --git a/products/desktop/packages/agent-contracts/src/domain-types.ts b/packages/agent/packages/agent-contracts/src/domain-types.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/domain-types.ts rename to packages/agent/packages/agent-contracts/src/domain-types.ts diff --git a/products/desktop/packages/agent-contracts/src/enrichment.ts b/packages/agent/packages/agent-contracts/src/enrichment.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/enrichment.ts rename to packages/agent/packages/agent-contracts/src/enrichment.ts diff --git a/products/desktop/packages/agent-contracts/src/errors.test.ts b/packages/agent/packages/agent-contracts/src/errors.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/errors.test.ts rename to packages/agent/packages/agent-contracts/src/errors.test.ts diff --git a/products/desktop/packages/agent-contracts/src/errors.ts b/packages/agent/packages/agent-contracts/src/errors.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/errors.ts rename to packages/agent/packages/agent-contracts/src/errors.ts diff --git a/products/desktop/packages/agent-contracts/src/exec-types.ts b/packages/agent/packages/agent-contracts/src/exec-types.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/exec-types.ts rename to packages/agent/packages/agent-contracts/src/exec-types.ts diff --git a/products/desktop/packages/agent-contracts/src/execution-modes.test.ts b/packages/agent/packages/agent-contracts/src/execution-modes.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/execution-modes.test.ts rename to packages/agent/packages/agent-contracts/src/execution-modes.test.ts diff --git a/products/desktop/packages/agent-contracts/src/execution-modes.ts b/packages/agent/packages/agent-contracts/src/execution-modes.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/execution-modes.ts rename to packages/agent/packages/agent-contracts/src/execution-modes.ts diff --git a/products/desktop/packages/agent-contracts/src/git-types.ts b/packages/agent/packages/agent-contracts/src/git-types.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/git-types.ts rename to packages/agent/packages/agent-contracts/src/git-types.ts diff --git a/products/desktop/packages/agent-contracts/src/image.test.ts b/packages/agent/packages/agent-contracts/src/image.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/image.test.ts rename to packages/agent/packages/agent-contracts/src/image.test.ts diff --git a/products/desktop/packages/agent-contracts/src/image.ts b/packages/agent/packages/agent-contracts/src/image.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/image.ts rename to packages/agent/packages/agent-contracts/src/image.ts diff --git a/products/desktop/packages/agent-contracts/src/inbox-types.test.ts b/packages/agent/packages/agent-contracts/src/inbox-types.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/inbox-types.test.ts rename to packages/agent/packages/agent-contracts/src/inbox-types.test.ts diff --git a/products/desktop/packages/agent-contracts/src/inbox-types.ts b/packages/agent/packages/agent-contracts/src/inbox-types.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/inbox-types.ts rename to packages/agent/packages/agent-contracts/src/inbox-types.ts diff --git a/products/desktop/packages/agent-contracts/src/index.ts b/packages/agent/packages/agent-contracts/src/index.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/index.ts rename to packages/agent/packages/agent-contracts/src/index.ts diff --git a/products/desktop/packages/agent-contracts/src/local-mcp-domain.ts b/packages/agent/packages/agent-contracts/src/local-mcp-domain.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/local-mcp-domain.ts rename to packages/agent/packages/agent-contracts/src/local-mcp-domain.ts diff --git a/products/desktop/packages/agent-contracts/src/mcp-tool-policy-domain.ts b/packages/agent/packages/agent-contracts/src/mcp-tool-policy-domain.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/mcp-tool-policy-domain.ts rename to packages/agent/packages/agent-contracts/src/mcp-tool-policy-domain.ts diff --git a/products/desktop/packages/agent-contracts/src/model-catalog.generated.ts b/packages/agent/packages/agent-contracts/src/model-catalog.generated.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/model-catalog.generated.ts rename to packages/agent/packages/agent-contracts/src/model-catalog.generated.ts diff --git a/products/desktop/packages/agent-contracts/src/model-catalog.test.ts b/packages/agent/packages/agent-contracts/src/model-catalog.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/model-catalog.test.ts rename to packages/agent/packages/agent-contracts/src/model-catalog.test.ts diff --git a/products/desktop/packages/agent-contracts/src/model-catalog.ts b/packages/agent/packages/agent-contracts/src/model-catalog.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/model-catalog.ts rename to packages/agent/packages/agent-contracts/src/model-catalog.ts diff --git a/products/desktop/packages/agent-contracts/src/models.test.ts b/packages/agent/packages/agent-contracts/src/models.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/models.test.ts rename to packages/agent/packages/agent-contracts/src/models.test.ts diff --git a/products/desktop/packages/agent-contracts/src/models.ts b/packages/agent/packages/agent-contracts/src/models.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/models.ts rename to packages/agent/packages/agent-contracts/src/models.ts diff --git a/products/desktop/packages/agent-contracts/src/oauth.test.ts b/packages/agent/packages/agent-contracts/src/oauth.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/oauth.test.ts rename to packages/agent/packages/agent-contracts/src/oauth.test.ts diff --git a/products/desktop/packages/agent-contracts/src/oauth.ts b/packages/agent/packages/agent-contracts/src/oauth.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/oauth.ts rename to packages/agent/packages/agent-contracts/src/oauth.ts diff --git a/products/desktop/packages/agent-contracts/src/objectTagKinds.generated.ts b/packages/agent/packages/agent-contracts/src/objectTagKinds.generated.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/objectTagKinds.generated.ts rename to packages/agent/packages/agent-contracts/src/objectTagKinds.generated.ts diff --git a/products/desktop/packages/agent-contracts/src/orchestration.ts b/packages/agent/packages/agent-contracts/src/orchestration.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/orchestration.ts rename to packages/agent/packages/agent-contracts/src/orchestration.ts diff --git a/products/desktop/packages/agent-contracts/src/pi-tool-call.test.ts b/packages/agent/packages/agent-contracts/src/pi-tool-call.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/pi-tool-call.test.ts rename to packages/agent/packages/agent-contracts/src/pi-tool-call.test.ts diff --git a/products/desktop/packages/agent-contracts/src/pi-tool-call.ts b/packages/agent/packages/agent-contracts/src/pi-tool-call.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/pi-tool-call.ts rename to packages/agent/packages/agent-contracts/src/pi-tool-call.ts diff --git a/products/desktop/packages/agent-contracts/src/posthog-products.ts b/packages/agent/packages/agent-contracts/src/posthog-products.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/posthog-products.ts rename to packages/agent/packages/agent-contracts/src/posthog-products.ts diff --git a/products/desktop/packages/agent-contracts/src/posthog-property-headers.test.ts b/packages/agent/packages/agent-contracts/src/posthog-property-headers.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/posthog-property-headers.test.ts rename to packages/agent/packages/agent-contracts/src/posthog-property-headers.test.ts diff --git a/products/desktop/packages/agent-contracts/src/posthog-property-headers.ts b/packages/agent/packages/agent-contracts/src/posthog-property-headers.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/posthog-property-headers.ts rename to packages/agent/packages/agent-contracts/src/posthog-property-headers.ts diff --git a/products/desktop/packages/agent-contracts/src/pr-urls.test.ts b/packages/agent/packages/agent-contracts/src/pr-urls.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/pr-urls.test.ts rename to packages/agent/packages/agent-contracts/src/pr-urls.test.ts diff --git a/products/desktop/packages/agent-contracts/src/pr-urls.ts b/packages/agent/packages/agent-contracts/src/pr-urls.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/pr-urls.ts rename to packages/agent/packages/agent-contracts/src/pr-urls.ts diff --git a/products/desktop/packages/agent-contracts/src/private-network.test.ts b/packages/agent/packages/agent-contracts/src/private-network.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/private-network.test.ts rename to packages/agent/packages/agent-contracts/src/private-network.test.ts diff --git a/products/desktop/packages/agent-contracts/src/private-network.ts b/packages/agent/packages/agent-contracts/src/private-network.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/private-network.ts rename to packages/agent/packages/agent-contracts/src/private-network.ts diff --git a/products/desktop/packages/agent-contracts/src/product-engineer-prompt.test.ts b/packages/agent/packages/agent-contracts/src/product-engineer-prompt.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/product-engineer-prompt.test.ts rename to packages/agent/packages/agent-contracts/src/product-engineer-prompt.test.ts diff --git a/products/desktop/packages/agent-contracts/src/product-engineer-prompt.ts b/packages/agent/packages/agent-contracts/src/product-engineer-prompt.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/product-engineer-prompt.ts rename to packages/agent/packages/agent-contracts/src/product-engineer-prompt.ts diff --git a/products/desktop/packages/agent-contracts/src/reasoning-effort.test.ts b/packages/agent/packages/agent-contracts/src/reasoning-effort.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/reasoning-effort.test.ts rename to packages/agent/packages/agent-contracts/src/reasoning-effort.test.ts diff --git a/products/desktop/packages/agent-contracts/src/reasoning-effort.ts b/packages/agent/packages/agent-contracts/src/reasoning-effort.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/reasoning-effort.ts rename to packages/agent/packages/agent-contracts/src/reasoning-effort.ts diff --git a/products/desktop/packages/agent-contracts/src/regions.test.ts b/packages/agent/packages/agent-contracts/src/regions.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/regions.test.ts rename to packages/agent/packages/agent-contracts/src/regions.test.ts diff --git a/products/desktop/packages/agent-contracts/src/regions.ts b/packages/agent/packages/agent-contracts/src/regions.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/regions.ts rename to packages/agent/packages/agent-contracts/src/regions.ts diff --git a/products/desktop/packages/agent-contracts/src/rich-output-prompt.test.ts b/packages/agent/packages/agent-contracts/src/rich-output-prompt.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/rich-output-prompt.test.ts rename to packages/agent/packages/agent-contracts/src/rich-output-prompt.test.ts diff --git a/products/desktop/packages/agent-contracts/src/rich-output-prompt.ts b/packages/agent/packages/agent-contracts/src/rich-output-prompt.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/rich-output-prompt.ts rename to packages/agent/packages/agent-contracts/src/rich-output-prompt.ts diff --git a/products/desktop/packages/agent-contracts/src/saga.ts b/packages/agent/packages/agent-contracts/src/saga.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/saga.ts rename to packages/agent/packages/agent-contracts/src/saga.ts diff --git a/products/desktop/packages/agent-contracts/src/sandbox-env.ts b/packages/agent/packages/agent-contracts/src/sandbox-env.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/sandbox-env.ts rename to packages/agent/packages/agent-contracts/src/sandbox-env.ts diff --git a/products/desktop/packages/agent-contracts/src/schemas.ts b/packages/agent/packages/agent-contracts/src/schemas.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/schemas.ts rename to packages/agent/packages/agent-contracts/src/schemas.ts diff --git a/products/desktop/packages/agent-contracts/src/session-events.ts b/packages/agent/packages/agent-contracts/src/session-events.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/session-events.ts rename to packages/agent/packages/agent-contracts/src/session-events.ts diff --git a/products/desktop/packages/agent-contracts/src/signal-types.ts b/packages/agent/packages/agent-contracts/src/signal-types.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/signal-types.ts rename to packages/agent/packages/agent-contracts/src/signal-types.ts diff --git a/products/desktop/packages/agent-contracts/src/skills.test.ts b/packages/agent/packages/agent-contracts/src/skills.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/skills.test.ts rename to packages/agent/packages/agent-contracts/src/skills.test.ts diff --git a/products/desktop/packages/agent-contracts/src/skills.ts b/packages/agent/packages/agent-contracts/src/skills.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/skills.ts rename to packages/agent/packages/agent-contracts/src/skills.ts diff --git a/products/desktop/packages/agent-contracts/src/slash-commands.test.ts b/packages/agent/packages/agent-contracts/src/slash-commands.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/slash-commands.test.ts rename to packages/agent/packages/agent-contracts/src/slash-commands.test.ts diff --git a/products/desktop/packages/agent-contracts/src/slash-commands.ts b/packages/agent/packages/agent-contracts/src/slash-commands.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/slash-commands.ts rename to packages/agent/packages/agent-contracts/src/slash-commands.ts diff --git a/products/desktop/packages/agent-contracts/src/task-context.ts b/packages/agent/packages/agent-contracts/src/task-context.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/task-context.ts rename to packages/agent/packages/agent-contracts/src/task-context.ts diff --git a/products/desktop/packages/agent-contracts/src/task.test.ts b/packages/agent/packages/agent-contracts/src/task.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/task.test.ts rename to packages/agent/packages/agent-contracts/src/task.test.ts diff --git a/products/desktop/packages/agent-contracts/src/task.ts b/packages/agent/packages/agent-contracts/src/task.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/task.ts rename to packages/agent/packages/agent-contracts/src/task.ts diff --git a/products/desktop/packages/agent-contracts/src/tool-meta.test.ts b/packages/agent/packages/agent-contracts/src/tool-meta.test.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/tool-meta.test.ts rename to packages/agent/packages/agent-contracts/src/tool-meta.test.ts diff --git a/products/desktop/packages/agent-contracts/src/tool-meta.ts b/packages/agent/packages/agent-contracts/src/tool-meta.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/tool-meta.ts rename to packages/agent/packages/agent-contracts/src/tool-meta.ts diff --git a/products/desktop/packages/agent-contracts/src/transcript-neutral-messages.ts b/packages/agent/packages/agent-contracts/src/transcript-neutral-messages.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/transcript-neutral-messages.ts rename to packages/agent/packages/agent-contracts/src/transcript-neutral-messages.ts diff --git a/products/desktop/packages/agent-contracts/src/urls.ts b/packages/agent/packages/agent-contracts/src/urls.ts similarity index 100% rename from products/desktop/packages/agent-contracts/src/urls.ts rename to packages/agent/packages/agent-contracts/src/urls.ts diff --git a/products/desktop/packages/agent-contracts/tsconfig.json b/packages/agent/packages/agent-contracts/tsconfig.json similarity index 100% rename from products/desktop/packages/agent-contracts/tsconfig.json rename to packages/agent/packages/agent-contracts/tsconfig.json diff --git a/products/desktop/packages/agent-contracts/tsup.config.ts b/packages/agent/packages/agent-contracts/tsup.config.ts similarity index 100% rename from products/desktop/packages/agent-contracts/tsup.config.ts rename to packages/agent/packages/agent-contracts/tsup.config.ts diff --git a/products/desktop/packages/agent-contracts/vitest.config.ts b/packages/agent/packages/agent-contracts/vitest.config.ts similarity index 100% rename from products/desktop/packages/agent-contracts/vitest.config.ts rename to packages/agent/packages/agent-contracts/vitest.config.ts diff --git a/products/desktop/packages/agent/.env.example b/packages/agent/packages/agent/.env.example similarity index 100% rename from products/desktop/packages/agent/.env.example rename to packages/agent/packages/agent/.env.example diff --git a/products/desktop/packages/agent/README.md b/packages/agent/packages/agent/README.md similarity index 100% rename from products/desktop/packages/agent/README.md rename to packages/agent/packages/agent/README.md diff --git a/products/desktop/packages/agent/build/native-binary.mjs b/packages/agent/packages/agent/build/native-binary.mjs similarity index 100% rename from products/desktop/packages/agent/build/native-binary.mjs rename to packages/agent/packages/agent/build/native-binary.mjs diff --git a/products/desktop/packages/agent/build/verify-local-tools-mcp-server.mjs b/packages/agent/packages/agent/build/verify-local-tools-mcp-server.mjs similarity index 100% rename from products/desktop/packages/agent/build/verify-local-tools-mcp-server.mjs rename to packages/agent/packages/agent/build/verify-local-tools-mcp-server.mjs diff --git a/products/desktop/packages/agent/e2e/README.md b/packages/agent/packages/agent/e2e/README.md similarity index 100% rename from products/desktop/packages/agent/e2e/README.md rename to packages/agent/packages/agent/e2e/README.md diff --git a/products/desktop/packages/agent/e2e/compaction.e2e.test.ts b/packages/agent/packages/agent/e2e/compaction.e2e.test.ts similarity index 100% rename from products/desktop/packages/agent/e2e/compaction.e2e.test.ts rename to packages/agent/packages/agent/e2e/compaction.e2e.test.ts diff --git a/products/desktop/packages/agent/e2e/config.ts b/packages/agent/packages/agent/e2e/config.ts similarity index 100% rename from products/desktop/packages/agent/e2e/config.ts rename to packages/agent/packages/agent/e2e/config.ts diff --git a/products/desktop/packages/agent/e2e/driver.e2e.test.ts b/packages/agent/packages/agent/e2e/driver.e2e.test.ts similarity index 100% rename from products/desktop/packages/agent/e2e/driver.e2e.test.ts rename to packages/agent/packages/agent/e2e/driver.e2e.test.ts diff --git a/products/desktop/packages/agent/e2e/driver.ts b/packages/agent/packages/agent/e2e/driver.ts similarity index 100% rename from products/desktop/packages/agent/e2e/driver.ts rename to packages/agent/packages/agent/e2e/driver.ts diff --git a/products/desktop/packages/agent/e2e/guard.e2e.test.ts b/packages/agent/packages/agent/e2e/guard.e2e.test.ts similarity index 100% rename from products/desktop/packages/agent/e2e/guard.e2e.test.ts rename to packages/agent/packages/agent/e2e/guard.e2e.test.ts diff --git a/products/desktop/packages/agent/e2e/run-e2e.sh b/packages/agent/packages/agent/e2e/run-e2e.sh similarity index 99% rename from products/desktop/packages/agent/e2e/run-e2e.sh rename to packages/agent/packages/agent/e2e/run-e2e.sh index fb45739f978c..df8a20fc7840 100755 --- a/products/desktop/packages/agent/e2e/run-e2e.sh +++ b/packages/agent/packages/agent/e2e/run-e2e.sh @@ -16,7 +16,7 @@ set -euo pipefail HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" AGENT_DIR="$(cd "$HERE/.." && pwd)" -POSTHOG_REPO="${POSTHOG_REPO:-$(cd "$AGENT_DIR/../../.." && pwd)/posthog}" +POSTHOG_REPO="${POSTHOG_REPO:-$(cd "$AGENT_DIR/../../.." && pwd)}" if [[ -z "${POSTHOG_CODE_E2E_GATEWAY_PERSONAL_API_KEY:-}" ]]; then SETTINGS="$POSTHOG_REPO/ee/settings.py" diff --git a/products/desktop/packages/agent/e2e/session-lifecycle.e2e.test.ts b/packages/agent/packages/agent/e2e/session-lifecycle.e2e.test.ts similarity index 100% rename from products/desktop/packages/agent/e2e/session-lifecycle.e2e.test.ts rename to packages/agent/packages/agent/e2e/session-lifecycle.e2e.test.ts diff --git a/products/desktop/packages/agent/e2e/session-startup.e2e.test.ts b/packages/agent/packages/agent/e2e/session-startup.e2e.test.ts similarity index 100% rename from products/desktop/packages/agent/e2e/session-startup.e2e.test.ts rename to packages/agent/packages/agent/e2e/session-startup.e2e.test.ts diff --git a/products/desktop/packages/agent/e2e/structured-output.e2e.test.ts b/packages/agent/packages/agent/e2e/structured-output.e2e.test.ts similarity index 100% rename from products/desktop/packages/agent/e2e/structured-output.e2e.test.ts rename to packages/agent/packages/agent/e2e/structured-output.e2e.test.ts diff --git a/products/desktop/packages/agent/package.json b/packages/agent/packages/agent/package.json similarity index 99% rename from products/desktop/packages/agent/package.json rename to packages/agent/packages/agent/package.json index c69c13544e84..9510bd29154e 100644 --- a/products/desktop/packages/agent/package.json +++ b/packages/agent/packages/agent/package.json @@ -4,7 +4,7 @@ "repository": { "type": "git", "url": "git+https://github.com/PostHog/posthog.git", - "directory": "products/desktop/packages/agent" + "directory": "packages/agent/packages/agent" }, "description": "TypeScript agent framework wrapping Claude Agent SDK with Git-based task execution for PostHog", "exports": { diff --git a/products/desktop/packages/agent/src/acp-extensions.test.ts b/packages/agent/packages/agent/src/acp-extensions.test.ts similarity index 100% rename from products/desktop/packages/agent/src/acp-extensions.test.ts rename to packages/agent/packages/agent/src/acp-extensions.test.ts diff --git a/products/desktop/packages/agent/src/acp-extensions.ts b/packages/agent/packages/agent/src/acp-extensions.ts similarity index 100% rename from products/desktop/packages/agent/src/acp-extensions.ts rename to packages/agent/packages/agent/src/acp-extensions.ts diff --git a/products/desktop/packages/agent/src/adapters/acp-connection.test.ts b/packages/agent/packages/agent/src/adapters/acp-connection.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/acp-connection.test.ts rename to packages/agent/packages/agent/src/adapters/acp-connection.test.ts diff --git a/products/desktop/packages/agent/src/adapters/acp-connection.ts b/packages/agent/packages/agent/src/adapters/acp-connection.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/acp-connection.ts rename to packages/agent/packages/agent/src/adapters/acp-connection.ts diff --git a/products/desktop/packages/agent/src/adapters/base-acp-agent.test.ts b/packages/agent/packages/agent/src/adapters/base-acp-agent.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/base-acp-agent.test.ts rename to packages/agent/packages/agent/src/adapters/base-acp-agent.test.ts diff --git a/products/desktop/packages/agent/src/adapters/base-acp-agent.ts b/packages/agent/packages/agent/src/adapters/base-acp-agent.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/base-acp-agent.ts rename to packages/agent/packages/agent/src/adapters/base-acp-agent.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/SKILL.md b/packages/agent/packages/agent/src/adapters/claude/SKILL.md similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/SKILL.md rename to packages/agent/packages/agent/src/adapters/claude/SKILL.md diff --git a/products/desktop/packages/agent/src/adapters/claude/UPSTREAM.md b/packages/agent/packages/agent/src/adapters/claude/UPSTREAM.md similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/UPSTREAM.md rename to packages/agent/packages/agent/src/adapters/claude/UPSTREAM.md diff --git a/products/desktop/packages/agent/src/adapters/claude/claude-agent.clear.test.ts b/packages/agent/packages/agent/src/adapters/claude/claude-agent.clear.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/claude-agent.clear.test.ts rename to packages/agent/packages/agent/src/adapters/claude/claude-agent.clear.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/claude-agent.finish.test.ts b/packages/agent/packages/agent/src/adapters/claude/claude-agent.finish.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/claude-agent.finish.test.ts rename to packages/agent/packages/agent/src/adapters/claude/claude-agent.finish.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/claude-agent.permission-mode.test.ts b/packages/agent/packages/agent/src/adapters/claude/claude-agent.permission-mode.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/claude-agent.permission-mode.test.ts rename to packages/agent/packages/agent/src/adapters/claude/claude-agent.permission-mode.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/claude-agent.refresh.test.ts b/packages/agent/packages/agent/src/adapters/claude/claude-agent.refresh.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/claude-agent.refresh.test.ts rename to packages/agent/packages/agent/src/adapters/claude/claude-agent.refresh.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/claude-agent.resume-model.test.ts b/packages/agent/packages/agent/src/adapters/claude/claude-agent.resume-model.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/claude-agent.resume-model.test.ts rename to packages/agent/packages/agent/src/adapters/claude/claude-agent.resume-model.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/claude-agent.side-question.test.ts b/packages/agent/packages/agent/src/adapters/claude/claude-agent.side-question.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/claude-agent.side-question.test.ts rename to packages/agent/packages/agent/src/adapters/claude/claude-agent.side-question.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/claude-agent.slash-command.test.ts b/packages/agent/packages/agent/src/adapters/claude/claude-agent.slash-command.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/claude-agent.slash-command.test.ts rename to packages/agent/packages/agent/src/adapters/claude/claude-agent.slash-command.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/claude-agent.streamed-text.test.ts b/packages/agent/packages/agent/src/adapters/claude/claude-agent.streamed-text.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/claude-agent.streamed-text.test.ts rename to packages/agent/packages/agent/src/adapters/claude/claude-agent.streamed-text.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/claude-agent.task-notification.test.ts b/packages/agent/packages/agent/src/adapters/claude/claude-agent.task-notification.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/claude-agent.task-notification.test.ts rename to packages/agent/packages/agent/src/adapters/claude/claude-agent.task-notification.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/claude-agent.ts b/packages/agent/packages/agent/src/adapters/claude/claude-agent.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/claude-agent.ts rename to packages/agent/packages/agent/src/adapters/claude/claude-agent.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/claude-agent.turn-queue.test.ts b/packages/agent/packages/agent/src/adapters/claude/claude-agent.turn-queue.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/claude-agent.turn-queue.test.ts rename to packages/agent/packages/agent/src/adapters/claude/claude-agent.turn-queue.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/context-breakdown.test.ts b/packages/agent/packages/agent/src/adapters/claude/context-breakdown.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/context-breakdown.test.ts rename to packages/agent/packages/agent/src/adapters/claude/context-breakdown.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/context-breakdown.ts b/packages/agent/packages/agent/src/adapters/claude/context-breakdown.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/context-breakdown.ts rename to packages/agent/packages/agent/src/adapters/claude/context-breakdown.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/conversion/acp-to-sdk.test.ts b/packages/agent/packages/agent/src/adapters/claude/conversion/acp-to-sdk.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/conversion/acp-to-sdk.test.ts rename to packages/agent/packages/agent/src/adapters/claude/conversion/acp-to-sdk.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/conversion/acp-to-sdk.ts b/packages/agent/packages/agent/src/adapters/claude/conversion/acp-to-sdk.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/conversion/acp-to-sdk.ts rename to packages/agent/packages/agent/src/adapters/claude/conversion/acp-to-sdk.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/conversion/sdk-to-acp.test.ts b/packages/agent/packages/agent/src/adapters/claude/conversion/sdk-to-acp.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/conversion/sdk-to-acp.test.ts rename to packages/agent/packages/agent/src/adapters/claude/conversion/sdk-to-acp.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/conversion/sdk-to-acp.ts b/packages/agent/packages/agent/src/adapters/claude/conversion/sdk-to-acp.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/conversion/sdk-to-acp.ts rename to packages/agent/packages/agent/src/adapters/claude/conversion/sdk-to-acp.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/conversion/task-state.test.ts b/packages/agent/packages/agent/src/adapters/claude/conversion/task-state.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/conversion/task-state.test.ts rename to packages/agent/packages/agent/src/adapters/claude/conversion/task-state.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/conversion/task-state.ts b/packages/agent/packages/agent/src/adapters/claude/conversion/task-state.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/conversion/task-state.ts rename to packages/agent/packages/agent/src/adapters/claude/conversion/task-state.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/conversion/tool-use-to-acp.test.ts b/packages/agent/packages/agent/src/adapters/claude/conversion/tool-use-to-acp.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/conversion/tool-use-to-acp.test.ts rename to packages/agent/packages/agent/src/adapters/claude/conversion/tool-use-to-acp.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/conversion/tool-use-to-acp.ts b/packages/agent/packages/agent/src/adapters/claude/conversion/tool-use-to-acp.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/conversion/tool-use-to-acp.ts rename to packages/agent/packages/agent/src/adapters/claude/conversion/tool-use-to-acp.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/hooks.test.ts b/packages/agent/packages/agent/src/adapters/claude/hooks.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/hooks.test.ts rename to packages/agent/packages/agent/src/adapters/claude/hooks.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/hooks.ts b/packages/agent/packages/agent/src/adapters/claude/hooks.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/hooks.ts rename to packages/agent/packages/agent/src/adapters/claude/hooks.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/image-sanitization.ts b/packages/agent/packages/agent/src/adapters/claude/image-sanitization.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/image-sanitization.ts rename to packages/agent/packages/agent/src/adapters/claude/image-sanitization.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/machine-auth.ts b/packages/agent/packages/agent/src/adapters/claude/machine-auth.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/machine-auth.ts rename to packages/agent/packages/agent/src/adapters/claude/machine-auth.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/mcp/local-tools.test.ts b/packages/agent/packages/agent/src/adapters/claude/mcp/local-tools.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/mcp/local-tools.test.ts rename to packages/agent/packages/agent/src/adapters/claude/mcp/local-tools.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/mcp/local-tools.ts b/packages/agent/packages/agent/src/adapters/claude/mcp/local-tools.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/mcp/local-tools.ts rename to packages/agent/packages/agent/src/adapters/claude/mcp/local-tools.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/mcp/tool-metadata.test.ts b/packages/agent/packages/agent/src/adapters/claude/mcp/tool-metadata.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/mcp/tool-metadata.test.ts rename to packages/agent/packages/agent/src/adapters/claude/mcp/tool-metadata.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/mcp/tool-metadata.ts b/packages/agent/packages/agent/src/adapters/claude/mcp/tool-metadata.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/mcp/tool-metadata.ts rename to packages/agent/packages/agent/src/adapters/claude/mcp/tool-metadata.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/permissions/permission-handlers.test.ts b/packages/agent/packages/agent/src/adapters/claude/permissions/permission-handlers.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/permissions/permission-handlers.test.ts rename to packages/agent/packages/agent/src/adapters/claude/permissions/permission-handlers.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/permissions/permission-handlers.ts b/packages/agent/packages/agent/src/adapters/claude/permissions/permission-handlers.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/permissions/permission-handlers.ts rename to packages/agent/packages/agent/src/adapters/claude/permissions/permission-handlers.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/permissions/permission-options.test.ts b/packages/agent/packages/agent/src/adapters/claude/permissions/permission-options.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/permissions/permission-options.test.ts rename to packages/agent/packages/agent/src/adapters/claude/permissions/permission-options.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/permissions/permission-options.ts b/packages/agent/packages/agent/src/adapters/claude/permissions/permission-options.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/permissions/permission-options.ts rename to packages/agent/packages/agent/src/adapters/claude/permissions/permission-options.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/plan/utils.test.ts b/packages/agent/packages/agent/src/adapters/claude/plan/utils.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/plan/utils.test.ts rename to packages/agent/packages/agent/src/adapters/claude/plan/utils.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/plan/utils.ts b/packages/agent/packages/agent/src/adapters/claude/plan/utils.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/plan/utils.ts rename to packages/agent/packages/agent/src/adapters/claude/plan/utils.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/questions/utils.ts b/packages/agent/packages/agent/src/adapters/claude/questions/utils.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/questions/utils.ts rename to packages/agent/packages/agent/src/adapters/claude/questions/utils.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/budget-guard.test.ts b/packages/agent/packages/agent/src/adapters/claude/session/budget-guard.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/budget-guard.test.ts rename to packages/agent/packages/agent/src/adapters/claude/session/budget-guard.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/budget-guard.ts b/packages/agent/packages/agent/src/adapters/claude/session/budget-guard.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/budget-guard.ts rename to packages/agent/packages/agent/src/adapters/claude/session/budget-guard.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/commands.test.ts b/packages/agent/packages/agent/src/adapters/claude/session/commands.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/commands.test.ts rename to packages/agent/packages/agent/src/adapters/claude/session/commands.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/commands.ts b/packages/agent/packages/agent/src/adapters/claude/session/commands.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/commands.ts rename to packages/agent/packages/agent/src/adapters/claude/session/commands.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/initialization.test.ts b/packages/agent/packages/agent/src/adapters/claude/session/initialization.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/initialization.test.ts rename to packages/agent/packages/agent/src/adapters/claude/session/initialization.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/initialization.ts b/packages/agent/packages/agent/src/adapters/claude/session/initialization.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/initialization.ts rename to packages/agent/packages/agent/src/adapters/claude/session/initialization.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/jsonl-hydration.bench.ts b/packages/agent/packages/agent/src/adapters/claude/session/jsonl-hydration.bench.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/jsonl-hydration.bench.ts rename to packages/agent/packages/agent/src/adapters/claude/session/jsonl-hydration.bench.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/jsonl-hydration.test.ts b/packages/agent/packages/agent/src/adapters/claude/session/jsonl-hydration.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/jsonl-hydration.test.ts rename to packages/agent/packages/agent/src/adapters/claude/session/jsonl-hydration.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/jsonl-hydration.ts b/packages/agent/packages/agent/src/adapters/claude/session/jsonl-hydration.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/jsonl-hydration.ts rename to packages/agent/packages/agent/src/adapters/claude/session/jsonl-hydration.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/mcp-config.test.ts b/packages/agent/packages/agent/src/adapters/claude/session/mcp-config.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/mcp-config.test.ts rename to packages/agent/packages/agent/src/adapters/claude/session/mcp-config.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/mcp-config.ts b/packages/agent/packages/agent/src/adapters/claude/session/mcp-config.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/mcp-config.ts rename to packages/agent/packages/agent/src/adapters/claude/session/mcp-config.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/model-config.test.ts b/packages/agent/packages/agent/src/adapters/claude/session/model-config.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/model-config.test.ts rename to packages/agent/packages/agent/src/adapters/claude/session/model-config.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/model-config.ts b/packages/agent/packages/agent/src/adapters/claude/session/model-config.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/model-config.ts rename to packages/agent/packages/agent/src/adapters/claude/session/model-config.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/models.test.ts b/packages/agent/packages/agent/src/adapters/claude/session/models.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/models.test.ts rename to packages/agent/packages/agent/src/adapters/claude/session/models.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/models.ts b/packages/agent/packages/agent/src/adapters/claude/session/models.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/models.ts rename to packages/agent/packages/agent/src/adapters/claude/session/models.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/options.test.ts b/packages/agent/packages/agent/src/adapters/claude/session/options.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/options.test.ts rename to packages/agent/packages/agent/src/adapters/claude/session/options.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/options.ts b/packages/agent/packages/agent/src/adapters/claude/session/options.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/options.ts rename to packages/agent/packages/agent/src/adapters/claude/session/options.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/repo-path.ts b/packages/agent/packages/agent/src/adapters/claude/session/repo-path.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/repo-path.ts rename to packages/agent/packages/agent/src/adapters/claude/session/repo-path.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/rtk-hook.test.ts b/packages/agent/packages/agent/src/adapters/claude/session/rtk-hook.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/rtk-hook.test.ts rename to packages/agent/packages/agent/src/adapters/claude/session/rtk-hook.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/rtk-hook.ts b/packages/agent/packages/agent/src/adapters/claude/session/rtk-hook.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/rtk-hook.ts rename to packages/agent/packages/agent/src/adapters/claude/session/rtk-hook.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/settings.test.ts b/packages/agent/packages/agent/src/adapters/claude/session/settings.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/settings.test.ts rename to packages/agent/packages/agent/src/adapters/claude/session/settings.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/settings.ts b/packages/agent/packages/agent/src/adapters/claude/session/settings.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/settings.ts rename to packages/agent/packages/agent/src/adapters/claude/session/settings.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/traceparent-hook.test.ts b/packages/agent/packages/agent/src/adapters/claude/session/traceparent-hook.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/traceparent-hook.test.ts rename to packages/agent/packages/agent/src/adapters/claude/session/traceparent-hook.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/session/traceparent-hook.ts b/packages/agent/packages/agent/src/adapters/claude/session/traceparent-hook.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/session/traceparent-hook.ts rename to packages/agent/packages/agent/src/adapters/claude/session/traceparent-hook.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/side-question.test.ts b/packages/agent/packages/agent/src/adapters/claude/side-question.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/side-question.test.ts rename to packages/agent/packages/agent/src/adapters/claude/side-question.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/side-question.ts b/packages/agent/packages/agent/src/adapters/claude/side-question.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/side-question.ts rename to packages/agent/packages/agent/src/adapters/claude/side-question.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/subscription-login.test.ts b/packages/agent/packages/agent/src/adapters/claude/subscription-login.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/subscription-login.test.ts rename to packages/agent/packages/agent/src/adapters/claude/subscription-login.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/subscription-login.ts b/packages/agent/packages/agent/src/adapters/claude/subscription-login.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/subscription-login.ts rename to packages/agent/packages/agent/src/adapters/claude/subscription-login.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/tools.test.ts b/packages/agent/packages/agent/src/adapters/claude/tools.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/tools.test.ts rename to packages/agent/packages/agent/src/adapters/claude/tools.test.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/tools.ts b/packages/agent/packages/agent/src/adapters/claude/tools.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/tools.ts rename to packages/agent/packages/agent/src/adapters/claude/tools.ts diff --git a/products/desktop/packages/agent/src/adapters/claude/types.ts b/packages/agent/packages/agent/src/adapters/claude/types.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/claude/types.ts rename to packages/agent/packages/agent/src/adapters/claude/types.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/app-server-client.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/app-server-client.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/app-server-client.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/app-server-client.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/app-server-client.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/app-server-client.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/app-server-client.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/app-server-client.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/approvals.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/approvals.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/approvals.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/approvals.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/approvals.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/approvals.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/approvals.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/approvals.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/binary-path.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/binary-path.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/binary-path.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/binary-path.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/binary-path.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/binary-path.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/binary-path.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/binary-path.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/codex-app-server-agent.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/codex-app-server-agent.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/codex-app-server-agent.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/codex-app-server-agent.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/codex-app-server-agent.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/codex-app-server-agent.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/codex-app-server-agent.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/codex-app-server-agent.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/ext-notifications.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/ext-notifications.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/ext-notifications.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/ext-notifications.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/ext-notifications.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/ext-notifications.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/ext-notifications.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/ext-notifications.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/input.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/input.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/input.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/input.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/input.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/input.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/input.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/input.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/local-tools-mcp-server.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/local-tools-mcp-server.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/local-tools-mcp-server.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/local-tools-mcp-server.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/local-tools-mcp.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/local-tools-mcp.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/local-tools-mcp.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/local-tools-mcp.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/local-tools-mcp.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/local-tools-mcp.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/local-tools-mcp.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/local-tools-mcp.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/mapping.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/mapping.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/mapping.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/mapping.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/mapping.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/mapping.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/mapping.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/mapping.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/mcp-config.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/mcp-config.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/mcp-config.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/mcp-config.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/mcp-config.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/mcp-config.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/mcp-config.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/mcp-config.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/mcp-manager.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/mcp-manager.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/mcp-manager.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/mcp-manager.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/mcp-manager.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/mcp-manager.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/mcp-manager.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/mcp-manager.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/models.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/models.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/models.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/models.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/models.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/models.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/models.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/models.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/protocol.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/protocol.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/protocol.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/protocol.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/session-config.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/session-config.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/session-config.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/session-config.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/session-config.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/session-config.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/session-config.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/session-config.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/spawn.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/spawn.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/spawn.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/spawn.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/spawn.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/spawn.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/spawn.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/spawn.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/structured-output.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/structured-output.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/structured-output.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/structured-output.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/structured-output.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/structured-output.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/structured-output.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/structured-output.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/subscription-login.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/subscription-login.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/subscription-login.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/subscription-login.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/subscription-login.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/subscription-login.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/subscription-login.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/subscription-login.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/thread-state.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/thread-state.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/thread-state.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/thread-state.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/thread-state.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/thread-state.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/thread-state.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/thread-state.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/token-usage.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/token-usage.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/token-usage.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/token-usage.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/turn-controller.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/turn-controller.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/turn-controller.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/turn-controller.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/turn-controller.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/turn-controller.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/turn-controller.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/turn-controller.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/usage-tracker.test.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/usage-tracker.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/usage-tracker.test.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/usage-tracker.test.ts diff --git a/products/desktop/packages/agent/src/adapters/codex-app-server/usage-tracker.ts b/packages/agent/packages/agent/src/adapters/codex-app-server/usage-tracker.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/codex-app-server/usage-tracker.ts rename to packages/agent/packages/agent/src/adapters/codex-app-server/usage-tracker.ts diff --git a/products/desktop/packages/agent/src/adapters/error-classification.test.ts b/packages/agent/packages/agent/src/adapters/error-classification.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/error-classification.test.ts rename to packages/agent/packages/agent/src/adapters/error-classification.test.ts diff --git a/products/desktop/packages/agent/src/adapters/error-classification.ts b/packages/agent/packages/agent/src/adapters/error-classification.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/error-classification.ts rename to packages/agent/packages/agent/src/adapters/error-classification.ts diff --git a/products/desktop/packages/agent/src/adapters/local-skill.ts b/packages/agent/packages/agent/src/adapters/local-skill.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/local-skill.ts rename to packages/agent/packages/agent/src/adapters/local-skill.ts diff --git a/products/desktop/packages/agent/src/adapters/prompt-blocks.ts b/packages/agent/packages/agent/src/adapters/prompt-blocks.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/prompt-blocks.ts rename to packages/agent/packages/agent/src/adapters/prompt-blocks.ts diff --git a/products/desktop/packages/agent/src/adapters/reasoning-effort.test.ts b/packages/agent/packages/agent/src/adapters/reasoning-effort.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/reasoning-effort.test.ts rename to packages/agent/packages/agent/src/adapters/reasoning-effort.test.ts diff --git a/products/desktop/packages/agent/src/adapters/reasoning-effort.ts b/packages/agent/packages/agent/src/adapters/reasoning-effort.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/reasoning-effort.ts rename to packages/agent/packages/agent/src/adapters/reasoning-effort.ts diff --git a/products/desktop/packages/agent/src/adapters/session-meta.test.ts b/packages/agent/packages/agent/src/adapters/session-meta.test.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/session-meta.test.ts rename to packages/agent/packages/agent/src/adapters/session-meta.test.ts diff --git a/products/desktop/packages/agent/src/adapters/session-meta.ts b/packages/agent/packages/agent/src/adapters/session-meta.ts similarity index 100% rename from products/desktop/packages/agent/src/adapters/session-meta.ts rename to packages/agent/packages/agent/src/adapters/session-meta.ts diff --git a/products/desktop/packages/agent/src/agent.test.ts b/packages/agent/packages/agent/src/agent.test.ts similarity index 100% rename from products/desktop/packages/agent/src/agent.test.ts rename to packages/agent/packages/agent/src/agent.test.ts diff --git a/products/desktop/packages/agent/src/agent.ts b/packages/agent/packages/agent/src/agent.ts similarity index 100% rename from products/desktop/packages/agent/src/agent.ts rename to packages/agent/packages/agent/src/agent.ts diff --git a/products/desktop/packages/agent/src/execution-mode.test.ts b/packages/agent/packages/agent/src/execution-mode.test.ts similarity index 100% rename from products/desktop/packages/agent/src/execution-mode.test.ts rename to packages/agent/packages/agent/src/execution-mode.test.ts diff --git a/products/desktop/packages/agent/src/execution-mode.ts b/packages/agent/packages/agent/src/execution-mode.ts similarity index 100% rename from products/desktop/packages/agent/src/execution-mode.ts rename to packages/agent/packages/agent/src/execution-mode.ts diff --git a/products/desktop/packages/agent/src/gateway-models.test.ts b/packages/agent/packages/agent/src/gateway-models.test.ts similarity index 100% rename from products/desktop/packages/agent/src/gateway-models.test.ts rename to packages/agent/packages/agent/src/gateway-models.test.ts diff --git a/products/desktop/packages/agent/src/gateway-models.ts b/packages/agent/packages/agent/src/gateway-models.ts similarity index 100% rename from products/desktop/packages/agent/src/gateway-models.ts rename to packages/agent/packages/agent/src/gateway-models.ts diff --git a/products/desktop/packages/agent/src/index.ts b/packages/agent/packages/agent/src/index.ts similarity index 100% rename from products/desktop/packages/agent/src/index.ts rename to packages/agent/packages/agent/src/index.ts diff --git a/products/desktop/packages/agent/src/otel-attributes.ts b/packages/agent/packages/agent/src/otel-attributes.ts similarity index 100% rename from products/desktop/packages/agent/src/otel-attributes.ts rename to packages/agent/packages/agent/src/otel-attributes.ts diff --git a/products/desktop/packages/agent/src/otel-telemetry.test.ts b/packages/agent/packages/agent/src/otel-telemetry.test.ts similarity index 100% rename from products/desktop/packages/agent/src/otel-telemetry.test.ts rename to packages/agent/packages/agent/src/otel-telemetry.test.ts diff --git a/products/desktop/packages/agent/src/otel-telemetry.ts b/packages/agent/packages/agent/src/otel-telemetry.ts similarity index 100% rename from products/desktop/packages/agent/src/otel-telemetry.ts rename to packages/agent/packages/agent/src/otel-telemetry.ts diff --git a/products/desktop/packages/agent/src/otel-trace-builder.ts b/packages/agent/packages/agent/src/otel-trace-builder.ts similarity index 100% rename from products/desktop/packages/agent/src/otel-trace-builder.ts rename to packages/agent/packages/agent/src/otel-trace-builder.ts diff --git a/products/desktop/packages/agent/src/persistent-agent-state.test.ts b/packages/agent/packages/agent/src/persistent-agent-state.test.ts similarity index 100% rename from products/desktop/packages/agent/src/persistent-agent-state.test.ts rename to packages/agent/packages/agent/src/persistent-agent-state.test.ts diff --git a/products/desktop/packages/agent/src/persistent-agent-state.ts b/packages/agent/packages/agent/src/persistent-agent-state.ts similarity index 100% rename from products/desktop/packages/agent/src/persistent-agent-state.ts rename to packages/agent/packages/agent/src/persistent-agent-state.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/toolTranslator.ts b/packages/agent/packages/agent/src/pi/conversation/toolTranslator.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/toolTranslator.ts rename to packages/agent/packages/agent/src/pi/conversation/toolTranslator.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/bashTranslator.test.ts b/packages/agent/packages/agent/src/pi/conversation/tools/bashTranslator.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/bashTranslator.test.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/bashTranslator.test.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/bashTranslator.ts b/packages/agent/packages/agent/src/pi/conversation/tools/bashTranslator.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/bashTranslator.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/bashTranslator.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/editTranslator.test.ts b/packages/agent/packages/agent/src/pi/conversation/tools/editTranslator.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/editTranslator.test.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/editTranslator.test.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/editTranslator.ts b/packages/agent/packages/agent/src/pi/conversation/tools/editTranslator.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/editTranslator.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/editTranslator.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/findTranslator.test.ts b/packages/agent/packages/agent/src/pi/conversation/tools/findTranslator.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/findTranslator.test.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/findTranslator.test.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/findTranslator.ts b/packages/agent/packages/agent/src/pi/conversation/tools/findTranslator.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/findTranslator.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/findTranslator.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/grepTranslator.test.ts b/packages/agent/packages/agent/src/pi/conversation/tools/grepTranslator.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/grepTranslator.test.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/grepTranslator.test.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/grepTranslator.ts b/packages/agent/packages/agent/src/pi/conversation/tools/grepTranslator.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/grepTranslator.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/grepTranslator.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/lsTranslator.test.ts b/packages/agent/packages/agent/src/pi/conversation/tools/lsTranslator.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/lsTranslator.test.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/lsTranslator.test.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/lsTranslator.ts b/packages/agent/packages/agent/src/pi/conversation/tools/lsTranslator.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/lsTranslator.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/lsTranslator.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/readTranslator.test.ts b/packages/agent/packages/agent/src/pi/conversation/tools/readTranslator.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/readTranslator.test.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/readTranslator.test.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/readTranslator.ts b/packages/agent/packages/agent/src/pi/conversation/tools/readTranslator.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/readTranslator.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/readTranslator.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/writeTranslator.test.ts b/packages/agent/packages/agent/src/pi/conversation/tools/writeTranslator.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/writeTranslator.test.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/writeTranslator.test.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/tools/writeTranslator.ts b/packages/agent/packages/agent/src/pi/conversation/tools/writeTranslator.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/tools/writeTranslator.ts rename to packages/agent/packages/agent/src/pi/conversation/tools/writeTranslator.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/translatePiConversation.test.ts b/packages/agent/packages/agent/src/pi/conversation/translatePiConversation.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/translatePiConversation.test.ts rename to packages/agent/packages/agent/src/pi/conversation/translatePiConversation.test.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/translatePiConversation.ts b/packages/agent/packages/agent/src/pi/conversation/translatePiConversation.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/translatePiConversation.ts rename to packages/agent/packages/agent/src/pi/conversation/translatePiConversation.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/translatePiMessage.test.ts b/packages/agent/packages/agent/src/pi/conversation/translatePiMessage.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/translatePiMessage.test.ts rename to packages/agent/packages/agent/src/pi/conversation/translatePiMessage.test.ts diff --git a/products/desktop/packages/agent/src/pi/conversation/translatePiMessage.ts b/packages/agent/packages/agent/src/pi/conversation/translatePiMessage.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/conversation/translatePiMessage.ts rename to packages/agent/packages/agent/src/pi/conversation/translatePiMessage.ts diff --git a/products/desktop/packages/agent/src/pi/queue-persistence.test.ts b/packages/agent/packages/agent/src/pi/queue-persistence.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/queue-persistence.test.ts rename to packages/agent/packages/agent/src/pi/queue-persistence.test.ts diff --git a/products/desktop/packages/agent/src/pi/queue-persistence.ts b/packages/agent/packages/agent/src/pi/queue-persistence.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/queue-persistence.ts rename to packages/agent/packages/agent/src/pi/queue-persistence.ts diff --git a/products/desktop/packages/agent/src/pi/remote-rpc-client.ts b/packages/agent/packages/agent/src/pi/remote-rpc-client.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/remote-rpc-client.ts rename to packages/agent/packages/agent/src/pi/remote-rpc-client.ts diff --git a/products/desktop/packages/agent/src/pi/repository-tools-extension.test.ts b/packages/agent/packages/agent/src/pi/repository-tools-extension.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/repository-tools-extension.test.ts rename to packages/agent/packages/agent/src/pi/repository-tools-extension.test.ts diff --git a/products/desktop/packages/agent/src/pi/repository-tools-extension.ts b/packages/agent/packages/agent/src/pi/repository-tools-extension.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/repository-tools-extension.ts rename to packages/agent/packages/agent/src/pi/repository-tools-extension.ts diff --git a/products/desktop/packages/agent/src/pi/rpc-client.test.ts b/packages/agent/packages/agent/src/pi/rpc-client.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/rpc-client.test.ts rename to packages/agent/packages/agent/src/pi/rpc-client.test.ts diff --git a/products/desktop/packages/agent/src/pi/rpc-client.ts b/packages/agent/packages/agent/src/pi/rpc-client.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/rpc-client.ts rename to packages/agent/packages/agent/src/pi/rpc-client.ts diff --git a/products/desktop/packages/agent/src/pi/rpc-environment.ts b/packages/agent/packages/agent/src/pi/rpc-environment.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/rpc-environment.ts rename to packages/agent/packages/agent/src/pi/rpc-environment.ts diff --git a/products/desktop/packages/agent/src/pi/rpc-host.ts b/packages/agent/packages/agent/src/pi/rpc-host.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/rpc-host.ts rename to packages/agent/packages/agent/src/pi/rpc-host.ts diff --git a/products/desktop/packages/agent/src/pi/rpc-transport.test.ts b/packages/agent/packages/agent/src/pi/rpc-transport.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/rpc-transport.test.ts rename to packages/agent/packages/agent/src/pi/rpc-transport.test.ts diff --git a/products/desktop/packages/agent/src/pi/rpc-transport.ts b/packages/agent/packages/agent/src/pi/rpc-transport.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/rpc-transport.ts rename to packages/agent/packages/agent/src/pi/rpc-transport.ts diff --git a/products/desktop/packages/agent/src/pi/runtime.test.ts b/packages/agent/packages/agent/src/pi/runtime.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/runtime.test.ts rename to packages/agent/packages/agent/src/pi/runtime.test.ts diff --git a/products/desktop/packages/agent/src/pi/runtime.ts b/packages/agent/packages/agent/src/pi/runtime.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/runtime.ts rename to packages/agent/packages/agent/src/pi/runtime.ts diff --git a/products/desktop/packages/agent/src/pi/types.ts b/packages/agent/packages/agent/src/pi/types.ts similarity index 100% rename from products/desktop/packages/agent/src/pi/types.ts rename to packages/agent/packages/agent/src/pi/types.ts diff --git a/products/desktop/packages/agent/src/posthog-api.test.ts b/packages/agent/packages/agent/src/posthog-api.test.ts similarity index 100% rename from products/desktop/packages/agent/src/posthog-api.test.ts rename to packages/agent/packages/agent/src/posthog-api.test.ts diff --git a/products/desktop/packages/agent/src/posthog-api.ts b/packages/agent/packages/agent/src/posthog-api.ts similarity index 100% rename from products/desktop/packages/agent/src/posthog-api.ts rename to packages/agent/packages/agent/src/posthog-api.ts diff --git a/products/desktop/packages/agent/src/pr-url-detector.test.ts b/packages/agent/packages/agent/src/pr-url-detector.test.ts similarity index 100% rename from products/desktop/packages/agent/src/pr-url-detector.test.ts rename to packages/agent/packages/agent/src/pr-url-detector.test.ts diff --git a/products/desktop/packages/agent/src/pr-url-detector.ts b/packages/agent/packages/agent/src/pr-url-detector.ts similarity index 100% rename from products/desktop/packages/agent/src/pr-url-detector.ts rename to packages/agent/packages/agent/src/pr-url-detector.ts diff --git a/products/desktop/packages/agent/src/resume.ts b/packages/agent/packages/agent/src/resume.ts similarity index 100% rename from products/desktop/packages/agent/src/resume.ts rename to packages/agent/packages/agent/src/resume.ts diff --git a/products/desktop/packages/agent/src/sagas/resume-saga.test.ts b/packages/agent/packages/agent/src/sagas/resume-saga.test.ts similarity index 100% rename from products/desktop/packages/agent/src/sagas/resume-saga.test.ts rename to packages/agent/packages/agent/src/sagas/resume-saga.test.ts diff --git a/products/desktop/packages/agent/src/sagas/resume-saga.ts b/packages/agent/packages/agent/src/sagas/resume-saga.ts similarity index 100% rename from products/desktop/packages/agent/src/sagas/resume-saga.ts rename to packages/agent/packages/agent/src/sagas/resume-saga.ts diff --git a/products/desktop/packages/agent/src/sagas/test-fixtures.ts b/packages/agent/packages/agent/src/sagas/test-fixtures.ts similarity index 100% rename from products/desktop/packages/agent/src/sagas/test-fixtures.ts rename to packages/agent/packages/agent/src/sagas/test-fixtures.ts diff --git a/products/desktop/packages/agent/src/server/agent-server.configure-environment.test.ts b/packages/agent/packages/agent/src/server/agent-server.configure-environment.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/agent-server.configure-environment.test.ts rename to packages/agent/packages/agent/src/server/agent-server.configure-environment.test.ts diff --git a/products/desktop/packages/agent/src/server/agent-server.test.ts b/packages/agent/packages/agent/src/server/agent-server.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/agent-server.test.ts rename to packages/agent/packages/agent/src/server/agent-server.test.ts diff --git a/products/desktop/packages/agent/src/server/agent-server.ts b/packages/agent/packages/agent/src/server/agent-server.ts similarity index 100% rename from products/desktop/packages/agent/src/server/agent-server.ts rename to packages/agent/packages/agent/src/server/agent-server.ts diff --git a/products/desktop/packages/agent/src/server/agentsh-runtime.test.ts b/packages/agent/packages/agent/src/server/agentsh-runtime.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/agentsh-runtime.test.ts rename to packages/agent/packages/agent/src/server/agentsh-runtime.test.ts diff --git a/products/desktop/packages/agent/src/server/agentsh-runtime.ts b/packages/agent/packages/agent/src/server/agentsh-runtime.ts similarity index 100% rename from products/desktop/packages/agent/src/server/agentsh-runtime.ts rename to packages/agent/packages/agent/src/server/agentsh-runtime.ts diff --git a/products/desktop/packages/agent/src/server/bin.ts b/packages/agent/packages/agent/src/server/bin.ts similarity index 100% rename from products/desktop/packages/agent/src/server/bin.ts rename to packages/agent/packages/agent/src/server/bin.ts diff --git a/products/desktop/packages/agent/src/server/boot-phases.test.ts b/packages/agent/packages/agent/src/server/boot-phases.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/boot-phases.test.ts rename to packages/agent/packages/agent/src/server/boot-phases.test.ts diff --git a/products/desktop/packages/agent/src/server/boot-phases.ts b/packages/agent/packages/agent/src/server/boot-phases.ts similarity index 100% rename from products/desktop/packages/agent/src/server/boot-phases.ts rename to packages/agent/packages/agent/src/server/boot-phases.ts diff --git a/products/desktop/packages/agent/src/server/cloud-prompt.ts b/packages/agent/packages/agent/src/server/cloud-prompt.ts similarity index 100% rename from products/desktop/packages/agent/src/server/cloud-prompt.ts rename to packages/agent/packages/agent/src/server/cloud-prompt.ts diff --git a/products/desktop/packages/agent/src/server/cloud-session-prompt.test.ts b/packages/agent/packages/agent/src/server/cloud-session-prompt.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/cloud-session-prompt.test.ts rename to packages/agent/packages/agent/src/server/cloud-session-prompt.test.ts diff --git a/products/desktop/packages/agent/src/server/codex-subscription-token.test.ts b/packages/agent/packages/agent/src/server/codex-subscription-token.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/codex-subscription-token.test.ts rename to packages/agent/packages/agent/src/server/codex-subscription-token.test.ts diff --git a/products/desktop/packages/agent/src/server/codex-subscription-token.ts b/packages/agent/packages/agent/src/server/codex-subscription-token.ts similarity index 100% rename from products/desktop/packages/agent/src/server/codex-subscription-token.ts rename to packages/agent/packages/agent/src/server/codex-subscription-token.ts diff --git a/products/desktop/packages/agent/src/server/credential-relay.test.ts b/packages/agent/packages/agent/src/server/credential-relay.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/credential-relay.test.ts rename to packages/agent/packages/agent/src/server/credential-relay.test.ts diff --git a/products/desktop/packages/agent/src/server/credential-relay.ts b/packages/agent/packages/agent/src/server/credential-relay.ts similarity index 100% rename from products/desktop/packages/agent/src/server/credential-relay.ts rename to packages/agent/packages/agent/src/server/credential-relay.ts diff --git a/products/desktop/packages/agent/src/server/event-stream-sender.test.ts b/packages/agent/packages/agent/src/server/event-stream-sender.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/event-stream-sender.test.ts rename to packages/agent/packages/agent/src/server/event-stream-sender.test.ts diff --git a/products/desktop/packages/agent/src/server/event-stream-sender.ts b/packages/agent/packages/agent/src/server/event-stream-sender.ts similarity index 100% rename from products/desktop/packages/agent/src/server/event-stream-sender.ts rename to packages/agent/packages/agent/src/server/event-stream-sender.ts diff --git a/products/desktop/packages/agent/src/server/gateway-env.ts b/packages/agent/packages/agent/src/server/gateway-env.ts similarity index 100% rename from products/desktop/packages/agent/src/server/gateway-env.ts rename to packages/agent/packages/agent/src/server/gateway-env.ts diff --git a/products/desktop/packages/agent/src/server/jwt.ts b/packages/agent/packages/agent/src/server/jwt.ts similarity index 100% rename from products/desktop/packages/agent/src/server/jwt.ts rename to packages/agent/packages/agent/src/server/jwt.ts diff --git a/products/desktop/packages/agent/src/server/mcp-relay-server.test.ts b/packages/agent/packages/agent/src/server/mcp-relay-server.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/mcp-relay-server.test.ts rename to packages/agent/packages/agent/src/server/mcp-relay-server.test.ts diff --git a/products/desktop/packages/agent/src/server/mcp-relay-server.ts b/packages/agent/packages/agent/src/server/mcp-relay-server.ts similarity index 100% rename from products/desktop/packages/agent/src/server/mcp-relay-server.ts rename to packages/agent/packages/agent/src/server/mcp-relay-server.ts diff --git a/products/desktop/packages/agent/src/server/pi-agent-server.test.ts b/packages/agent/packages/agent/src/server/pi-agent-server.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/pi-agent-server.test.ts rename to packages/agent/packages/agent/src/server/pi-agent-server.test.ts diff --git a/products/desktop/packages/agent/src/server/pi-agent-server.ts b/packages/agent/packages/agent/src/server/pi-agent-server.ts similarity index 100% rename from products/desktop/packages/agent/src/server/pi-agent-server.ts rename to packages/agent/packages/agent/src/server/pi-agent-server.ts diff --git a/products/desktop/packages/agent/src/server/pr-checkout.test.ts b/packages/agent/packages/agent/src/server/pr-checkout.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/pr-checkout.test.ts rename to packages/agent/packages/agent/src/server/pr-checkout.test.ts diff --git a/products/desktop/packages/agent/src/server/pr-checkout.ts b/packages/agent/packages/agent/src/server/pr-checkout.ts similarity index 100% rename from products/desktop/packages/agent/src/server/pr-checkout.ts rename to packages/agent/packages/agent/src/server/pr-checkout.ts diff --git a/products/desktop/packages/agent/src/server/question-relay.test.ts b/packages/agent/packages/agent/src/server/question-relay.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/question-relay.test.ts rename to packages/agent/packages/agent/src/server/question-relay.test.ts diff --git a/products/desktop/packages/agent/src/server/rtk-savings.test.ts b/packages/agent/packages/agent/src/server/rtk-savings.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/rtk-savings.test.ts rename to packages/agent/packages/agent/src/server/rtk-savings.test.ts diff --git a/products/desktop/packages/agent/src/server/rtk-savings.ts b/packages/agent/packages/agent/src/server/rtk-savings.ts similarity index 100% rename from products/desktop/packages/agent/src/server/rtk-savings.ts rename to packages/agent/packages/agent/src/server/rtk-savings.ts diff --git a/products/desktop/packages/agent/src/server/run-usage.test.ts b/packages/agent/packages/agent/src/server/run-usage.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/run-usage.test.ts rename to packages/agent/packages/agent/src/server/run-usage.test.ts diff --git a/products/desktop/packages/agent/src/server/run-usage.ts b/packages/agent/packages/agent/src/server/run-usage.ts similarity index 100% rename from products/desktop/packages/agent/src/server/run-usage.ts rename to packages/agent/packages/agent/src/server/run-usage.ts diff --git a/products/desktop/packages/agent/src/server/schemas.test.ts b/packages/agent/packages/agent/src/server/schemas.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/schemas.test.ts rename to packages/agent/packages/agent/src/server/schemas.test.ts diff --git a/products/desktop/packages/agent/src/server/schemas.ts b/packages/agent/packages/agent/src/server/schemas.ts similarity index 100% rename from products/desktop/packages/agent/src/server/schemas.ts rename to packages/agent/packages/agent/src/server/schemas.ts diff --git a/products/desktop/packages/agent/src/server/streaming-upload.ts b/packages/agent/packages/agent/src/server/streaming-upload.ts similarity index 100% rename from products/desktop/packages/agent/src/server/streaming-upload.ts rename to packages/agent/packages/agent/src/server/streaming-upload.ts diff --git a/products/desktop/packages/agent/src/server/types.ts b/packages/agent/packages/agent/src/server/types.ts similarity index 100% rename from products/desktop/packages/agent/src/server/types.ts rename to packages/agent/packages/agent/src/server/types.ts diff --git a/products/desktop/packages/agent/src/server/utils/retry.test.ts b/packages/agent/packages/agent/src/server/utils/retry.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/utils/retry.test.ts rename to packages/agent/packages/agent/src/server/utils/retry.test.ts diff --git a/products/desktop/packages/agent/src/server/utils/retry.ts b/packages/agent/packages/agent/src/server/utils/retry.ts similarity index 100% rename from products/desktop/packages/agent/src/server/utils/retry.ts rename to packages/agent/packages/agent/src/server/utils/retry.ts diff --git a/products/desktop/packages/agent/src/server/utils/sse-parser.test.ts b/packages/agent/packages/agent/src/server/utils/sse-parser.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/utils/sse-parser.test.ts rename to packages/agent/packages/agent/src/server/utils/sse-parser.test.ts diff --git a/products/desktop/packages/agent/src/server/utils/sse-parser.ts b/packages/agent/packages/agent/src/server/utils/sse-parser.ts similarity index 100% rename from products/desktop/packages/agent/src/server/utils/sse-parser.ts rename to packages/agent/packages/agent/src/server/utils/sse-parser.ts diff --git a/products/desktop/packages/agent/src/server/wait-for-file.test.ts b/packages/agent/packages/agent/src/server/wait-for-file.test.ts similarity index 100% rename from products/desktop/packages/agent/src/server/wait-for-file.test.ts rename to packages/agent/packages/agent/src/server/wait-for-file.test.ts diff --git a/products/desktop/packages/agent/src/server/wait-for-file.ts b/packages/agent/packages/agent/src/server/wait-for-file.ts similarity index 100% rename from products/desktop/packages/agent/src/server/wait-for-file.ts rename to packages/agent/packages/agent/src/server/wait-for-file.ts diff --git a/products/desktop/packages/agent/src/session-log-writer.test.ts b/packages/agent/packages/agent/src/session-log-writer.test.ts similarity index 100% rename from products/desktop/packages/agent/src/session-log-writer.test.ts rename to packages/agent/packages/agent/src/session-log-writer.test.ts diff --git a/products/desktop/packages/agent/src/session-log-writer.ts b/packages/agent/packages/agent/src/session-log-writer.ts similarity index 100% rename from products/desktop/packages/agent/src/session-log-writer.ts rename to packages/agent/packages/agent/src/session-log-writer.ts diff --git a/products/desktop/packages/agent/src/smoke/bin.ts b/packages/agent/packages/agent/src/smoke/bin.ts similarity index 100% rename from products/desktop/packages/agent/src/smoke/bin.ts rename to packages/agent/packages/agent/src/smoke/bin.ts diff --git a/products/desktop/packages/agent/src/smoke/classify.test.ts b/packages/agent/packages/agent/src/smoke/classify.test.ts similarity index 100% rename from products/desktop/packages/agent/src/smoke/classify.test.ts rename to packages/agent/packages/agent/src/smoke/classify.test.ts diff --git a/products/desktop/packages/agent/src/smoke/classify.ts b/packages/agent/packages/agent/src/smoke/classify.ts similarity index 100% rename from products/desktop/packages/agent/src/smoke/classify.ts rename to packages/agent/packages/agent/src/smoke/classify.ts diff --git a/products/desktop/packages/agent/src/smoke/run-turn.ts b/packages/agent/packages/agent/src/smoke/run-turn.ts similarity index 100% rename from products/desktop/packages/agent/src/smoke/run-turn.ts rename to packages/agent/packages/agent/src/smoke/run-turn.ts diff --git a/products/desktop/packages/agent/src/test/fixtures/api.ts b/packages/agent/packages/agent/src/test/fixtures/api.ts similarity index 100% rename from products/desktop/packages/agent/src/test/fixtures/api.ts rename to packages/agent/packages/agent/src/test/fixtures/api.ts diff --git a/products/desktop/packages/agent/src/test/mocks/claude-sdk.ts b/packages/agent/packages/agent/src/test/mocks/claude-sdk.ts similarity index 100% rename from products/desktop/packages/agent/src/test/mocks/claude-sdk.ts rename to packages/agent/packages/agent/src/test/mocks/claude-sdk.ts diff --git a/products/desktop/packages/agent/src/test/mocks/msw-handlers.ts b/packages/agent/packages/agent/src/test/mocks/msw-handlers.ts similarity index 100% rename from products/desktop/packages/agent/src/test/mocks/msw-handlers.ts rename to packages/agent/packages/agent/src/test/mocks/msw-handlers.ts diff --git a/products/desktop/packages/agent/src/test/native-binary.test.ts b/packages/agent/packages/agent/src/test/native-binary.test.ts similarity index 100% rename from products/desktop/packages/agent/src/test/native-binary.test.ts rename to packages/agent/packages/agent/src/test/native-binary.test.ts diff --git a/products/desktop/packages/agent/src/types.ts b/packages/agent/packages/agent/src/types.ts similarity index 100% rename from products/desktop/packages/agent/src/types.ts rename to packages/agent/packages/agent/src/types.ts diff --git a/products/desktop/packages/agent/src/utils/acp-content.ts b/packages/agent/packages/agent/src/utils/acp-content.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/acp-content.ts rename to packages/agent/packages/agent/src/utils/acp-content.ts diff --git a/products/desktop/packages/agent/src/utils/async-mutex.test.ts b/packages/agent/packages/agent/src/utils/async-mutex.test.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/async-mutex.test.ts rename to packages/agent/packages/agent/src/utils/async-mutex.test.ts diff --git a/products/desktop/packages/agent/src/utils/async-mutex.ts b/packages/agent/packages/agent/src/utils/async-mutex.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/async-mutex.ts rename to packages/agent/packages/agent/src/utils/async-mutex.ts diff --git a/products/desktop/packages/agent/src/utils/common.test.ts b/packages/agent/packages/agent/src/utils/common.test.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/common.test.ts rename to packages/agent/packages/agent/src/utils/common.test.ts diff --git a/products/desktop/packages/agent/src/utils/common.ts b/packages/agent/packages/agent/src/utils/common.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/common.ts rename to packages/agent/packages/agent/src/utils/common.ts diff --git a/products/desktop/packages/agent/src/utils/event-id.ts b/packages/agent/packages/agent/src/utils/event-id.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/event-id.ts rename to packages/agent/packages/agent/src/utils/event-id.ts diff --git a/products/desktop/packages/agent/src/utils/gateway-routing-cases.json b/packages/agent/packages/agent/src/utils/gateway-routing-cases.json similarity index 94% rename from products/desktop/packages/agent/src/utils/gateway-routing-cases.json rename to packages/agent/packages/agent/src/utils/gateway-routing-cases.json index c41619bf069c..dc2c25aac645 100644 --- a/products/desktop/packages/agent/src/utils/gateway-routing-cases.json +++ b/packages/agent/packages/agent/src/utils/gateway-routing-cases.json @@ -1,5 +1,5 @@ { - "comment": "Shared routing contract for the sandbox gateway matchers. Consumed by BOTH products/desktop/packages/agent/src/utils/gateway.test.ts and products/tasks/backend/temporal/process_task/tests/test_ai_gateway_token.py, so the TypeScript resolver and its Python mirror cannot drift while both suites stay green. A drift means routed runs silently stop minting (or mint unused tokens).", + "comment": "Shared routing contract for the sandbox gateway matchers. Consumed by BOTH packages/agent/packages/agent/src/utils/gateway.test.ts and products/tasks/backend/temporal/process_task/tests/test_ai_gateway_token.py, so the TypeScript resolver and its Python mirror cannot drift while both suites stay green. A drift means routed runs silently stop minting (or mint unused tokens).", "resolve_ai_product": [ { "origin_product": "signals_scout", diff --git a/products/desktop/packages/agent/src/utils/gateway.test.ts b/packages/agent/packages/agent/src/utils/gateway.test.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/gateway.test.ts rename to packages/agent/packages/agent/src/utils/gateway.test.ts diff --git a/products/desktop/packages/agent/src/utils/gateway.ts b/packages/agent/packages/agent/src/utils/gateway.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/gateway.ts rename to packages/agent/packages/agent/src/utils/gateway.ts diff --git a/products/desktop/packages/agent/src/utils/logger.test.ts b/packages/agent/packages/agent/src/utils/logger.test.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/logger.test.ts rename to packages/agent/packages/agent/src/utils/logger.test.ts diff --git a/products/desktop/packages/agent/src/utils/logger.ts b/packages/agent/packages/agent/src/utils/logger.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/logger.ts rename to packages/agent/packages/agent/src/utils/logger.ts diff --git a/products/desktop/packages/agent/src/utils/partial-json.test.ts b/packages/agent/packages/agent/src/utils/partial-json.test.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/partial-json.test.ts rename to packages/agent/packages/agent/src/utils/partial-json.test.ts diff --git a/products/desktop/packages/agent/src/utils/partial-json.ts b/packages/agent/packages/agent/src/utils/partial-json.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/partial-json.ts rename to packages/agent/packages/agent/src/utils/partial-json.ts diff --git a/products/desktop/packages/agent/src/utils/redact-secrets.test.ts b/packages/agent/packages/agent/src/utils/redact-secrets.test.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/redact-secrets.test.ts rename to packages/agent/packages/agent/src/utils/redact-secrets.test.ts diff --git a/products/desktop/packages/agent/src/utils/redact-secrets.ts b/packages/agent/packages/agent/src/utils/redact-secrets.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/redact-secrets.ts rename to packages/agent/packages/agent/src/utils/redact-secrets.ts diff --git a/products/desktop/packages/agent/src/utils/resolve-bundled-script.ts b/packages/agent/packages/agent/src/utils/resolve-bundled-script.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/resolve-bundled-script.ts rename to packages/agent/packages/agent/src/utils/resolve-bundled-script.ts diff --git a/products/desktop/packages/agent/src/utils/secret-rules.ts b/packages/agent/packages/agent/src/utils/secret-rules.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/secret-rules.ts rename to packages/agent/packages/agent/src/utils/secret-rules.ts diff --git a/products/desktop/packages/agent/src/utils/shell-quote.ts b/packages/agent/packages/agent/src/utils/shell-quote.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/shell-quote.ts rename to packages/agent/packages/agent/src/utils/shell-quote.ts diff --git a/products/desktop/packages/agent/src/utils/streams.ts b/packages/agent/packages/agent/src/utils/streams.ts similarity index 100% rename from products/desktop/packages/agent/src/utils/streams.ts rename to packages/agent/packages/agent/src/utils/streams.ts diff --git a/products/desktop/packages/agent/tsconfig.build.json b/packages/agent/packages/agent/tsconfig.build.json similarity index 100% rename from products/desktop/packages/agent/tsconfig.build.json rename to packages/agent/packages/agent/tsconfig.build.json diff --git a/products/desktop/packages/agent/tsconfig.json b/packages/agent/packages/agent/tsconfig.json similarity index 100% rename from products/desktop/packages/agent/tsconfig.json rename to packages/agent/packages/agent/tsconfig.json diff --git a/products/desktop/packages/agent/tsconfig.rollup.json b/packages/agent/packages/agent/tsconfig.rollup.json similarity index 100% rename from products/desktop/packages/agent/tsconfig.rollup.json rename to packages/agent/packages/agent/tsconfig.rollup.json diff --git a/products/desktop/packages/agent/tsup.config.ts b/packages/agent/packages/agent/tsup.config.ts similarity index 97% rename from products/desktop/packages/agent/tsup.config.ts rename to packages/agent/packages/agent/tsup.config.ts index bbd034be5c4a..d7d10d9cacfa 100644 --- a/products/desktop/packages/agent/tsup.config.ts +++ b/packages/agent/packages/agent/tsup.config.ts @@ -218,14 +218,11 @@ export default defineConfig([ // Touch a trigger file to signal electron-forge to restart // This file is watched by Vite, triggering main process rebuild // Skip in Docker/CI environments where the code app doesn't exist - const triggerFile = resolve( - import.meta.dirname, - "../../apps/code/src/main/.agent-trigger", - ); const triggerDir = resolve( import.meta.dirname, - "../../apps/code/src/main", + "../../../../products/desktop/apps/code/src/main", ); + const triggerFile = resolve(triggerDir, ".agent-trigger"); if (existsSync(triggerDir)) { writeFileSync(triggerFile, `${Date.now()}`); } diff --git a/products/desktop/packages/agent/vitest.config.ts b/packages/agent/packages/agent/vitest.config.ts similarity index 100% rename from products/desktop/packages/agent/vitest.config.ts rename to packages/agent/packages/agent/vitest.config.ts diff --git a/products/desktop/packages/agent/vitest.e2e.config.ts b/packages/agent/packages/agent/vitest.e2e.config.ts similarity index 88% rename from products/desktop/packages/agent/vitest.e2e.config.ts rename to packages/agent/packages/agent/vitest.e2e.config.ts index 131f9ae69ca1..e558aa11941f 100644 --- a/products/desktop/packages/agent/vitest.e2e.config.ts +++ b/packages/agent/packages/agent/vitest.e2e.config.ts @@ -3,7 +3,7 @@ import { defineConfig } from "vitest/config"; // Live e2e suite. Separate from the default `vitest.config.ts` (which only // includes `src/**`), so `pnpm test` never runs it. The `e2e` job in -// desktop-test.yml runs it on a branch that changes products/desktop/packages/, +// desktop-test.yml runs it on a branch that changes packages/agent/ or products/desktop/packages/, // and skips it in the merge queue. Run it by hand with `pnpm test:e2e`. // Sequential, generous timeouts: each test drives two real model turns end to end. export default defineConfig({ diff --git a/products/desktop/packages/enricher/README.md b/packages/agent/packages/enricher/README.md similarity index 100% rename from products/desktop/packages/enricher/README.md rename to packages/agent/packages/enricher/README.md diff --git a/products/desktop/packages/enricher/grammars/tree-sitter-go.wasm b/packages/agent/packages/enricher/grammars/tree-sitter-go.wasm similarity index 100% rename from products/desktop/packages/enricher/grammars/tree-sitter-go.wasm rename to packages/agent/packages/enricher/grammars/tree-sitter-go.wasm diff --git a/products/desktop/packages/enricher/grammars/tree-sitter-javascript.wasm b/packages/agent/packages/enricher/grammars/tree-sitter-javascript.wasm similarity index 100% rename from products/desktop/packages/enricher/grammars/tree-sitter-javascript.wasm rename to packages/agent/packages/enricher/grammars/tree-sitter-javascript.wasm diff --git a/products/desktop/packages/enricher/grammars/tree-sitter-python.wasm b/packages/agent/packages/enricher/grammars/tree-sitter-python.wasm similarity index 100% rename from products/desktop/packages/enricher/grammars/tree-sitter-python.wasm rename to packages/agent/packages/enricher/grammars/tree-sitter-python.wasm diff --git a/products/desktop/packages/enricher/grammars/tree-sitter-ruby.wasm b/packages/agent/packages/enricher/grammars/tree-sitter-ruby.wasm similarity index 100% rename from products/desktop/packages/enricher/grammars/tree-sitter-ruby.wasm rename to packages/agent/packages/enricher/grammars/tree-sitter-ruby.wasm diff --git a/products/desktop/packages/enricher/grammars/tree-sitter-tsx.wasm b/packages/agent/packages/enricher/grammars/tree-sitter-tsx.wasm similarity index 100% rename from products/desktop/packages/enricher/grammars/tree-sitter-tsx.wasm rename to packages/agent/packages/enricher/grammars/tree-sitter-tsx.wasm diff --git a/products/desktop/packages/enricher/grammars/tree-sitter-typescript.wasm b/packages/agent/packages/enricher/grammars/tree-sitter-typescript.wasm similarity index 100% rename from products/desktop/packages/enricher/grammars/tree-sitter-typescript.wasm rename to packages/agent/packages/enricher/grammars/tree-sitter-typescript.wasm diff --git a/products/desktop/packages/enricher/grammars/tree-sitter.wasm b/packages/agent/packages/enricher/grammars/tree-sitter.wasm similarity index 100% rename from products/desktop/packages/enricher/grammars/tree-sitter.wasm rename to packages/agent/packages/enricher/grammars/tree-sitter.wasm diff --git a/products/desktop/packages/enricher/package.json b/packages/agent/packages/enricher/package.json similarity index 100% rename from products/desktop/packages/enricher/package.json rename to packages/agent/packages/enricher/package.json diff --git a/products/desktop/packages/enricher/scripts/fetch-grammars.cjs b/packages/agent/packages/enricher/scripts/fetch-grammars.cjs similarity index 100% rename from products/desktop/packages/enricher/scripts/fetch-grammars.cjs rename to packages/agent/packages/enricher/scripts/fetch-grammars.cjs diff --git a/products/desktop/packages/enricher/src/alias-resolver.ts b/packages/agent/packages/enricher/src/alias-resolver.ts similarity index 100% rename from products/desktop/packages/enricher/src/alias-resolver.ts rename to packages/agent/packages/enricher/src/alias-resolver.ts diff --git a/products/desktop/packages/enricher/src/ast-helpers.ts b/packages/agent/packages/enricher/src/ast-helpers.ts similarity index 100% rename from products/desktop/packages/enricher/src/ast-helpers.ts rename to packages/agent/packages/enricher/src/ast-helpers.ts diff --git a/products/desktop/packages/enricher/src/call-detector.ts b/packages/agent/packages/enricher/src/call-detector.ts similarity index 100% rename from products/desktop/packages/enricher/src/call-detector.ts rename to packages/agent/packages/enricher/src/call-detector.ts diff --git a/products/desktop/packages/enricher/src/comment-formatter.test.ts b/packages/agent/packages/enricher/src/comment-formatter.test.ts similarity index 100% rename from products/desktop/packages/enricher/src/comment-formatter.test.ts rename to packages/agent/packages/enricher/src/comment-formatter.test.ts diff --git a/products/desktop/packages/enricher/src/comment-formatter.ts b/packages/agent/packages/enricher/src/comment-formatter.ts similarity index 100% rename from products/desktop/packages/enricher/src/comment-formatter.ts rename to packages/agent/packages/enricher/src/comment-formatter.ts diff --git a/products/desktop/packages/enricher/src/detector.test.ts b/packages/agent/packages/enricher/src/detector.test.ts similarity index 100% rename from products/desktop/packages/enricher/src/detector.test.ts rename to packages/agent/packages/enricher/src/detector.test.ts diff --git a/products/desktop/packages/enricher/src/detector.ts b/packages/agent/packages/enricher/src/detector.ts similarity index 100% rename from products/desktop/packages/enricher/src/detector.ts rename to packages/agent/packages/enricher/src/detector.ts diff --git a/products/desktop/packages/enricher/src/enrich-source.ts b/packages/agent/packages/enricher/src/enrich-source.ts similarity index 100% rename from products/desktop/packages/enricher/src/enrich-source.ts rename to packages/agent/packages/enricher/src/enrich-source.ts diff --git a/products/desktop/packages/enricher/src/enriched-result.ts b/packages/agent/packages/enricher/src/enriched-result.ts similarity index 100% rename from products/desktop/packages/enricher/src/enriched-result.ts rename to packages/agent/packages/enricher/src/enriched-result.ts diff --git a/products/desktop/packages/enricher/src/enricher.test.ts b/packages/agent/packages/enricher/src/enricher.test.ts similarity index 100% rename from products/desktop/packages/enricher/src/enricher.test.ts rename to packages/agent/packages/enricher/src/enricher.test.ts diff --git a/products/desktop/packages/enricher/src/enricher.ts b/packages/agent/packages/enricher/src/enricher.ts similarity index 100% rename from products/desktop/packages/enricher/src/enricher.ts rename to packages/agent/packages/enricher/src/enricher.ts diff --git a/products/desktop/packages/enricher/src/flag-classification.test.ts b/packages/agent/packages/enricher/src/flag-classification.test.ts similarity index 100% rename from products/desktop/packages/enricher/src/flag-classification.test.ts rename to packages/agent/packages/enricher/src/flag-classification.test.ts diff --git a/products/desktop/packages/enricher/src/flag-classification.ts b/packages/agent/packages/enricher/src/flag-classification.ts similarity index 100% rename from products/desktop/packages/enricher/src/flag-classification.ts rename to packages/agent/packages/enricher/src/flag-classification.ts diff --git a/products/desktop/packages/enricher/src/import-resolver.test.ts b/packages/agent/packages/enricher/src/import-resolver.test.ts similarity index 100% rename from products/desktop/packages/enricher/src/import-resolver.test.ts rename to packages/agent/packages/enricher/src/import-resolver.test.ts diff --git a/products/desktop/packages/enricher/src/import-resolver.ts b/packages/agent/packages/enricher/src/import-resolver.ts similarity index 100% rename from products/desktop/packages/enricher/src/import-resolver.ts rename to packages/agent/packages/enricher/src/import-resolver.ts diff --git a/products/desktop/packages/enricher/src/index.ts b/packages/agent/packages/enricher/src/index.ts similarity index 100% rename from products/desktop/packages/enricher/src/index.ts rename to packages/agent/packages/enricher/src/index.ts diff --git a/products/desktop/packages/enricher/src/languages.ts b/packages/agent/packages/enricher/src/languages.ts similarity index 100% rename from products/desktop/packages/enricher/src/languages.ts rename to packages/agent/packages/enricher/src/languages.ts diff --git a/products/desktop/packages/enricher/src/log.ts b/packages/agent/packages/enricher/src/log.ts similarity index 100% rename from products/desktop/packages/enricher/src/log.ts rename to packages/agent/packages/enricher/src/log.ts diff --git a/products/desktop/packages/enricher/src/parse-result.ts b/packages/agent/packages/enricher/src/parse-result.ts similarity index 100% rename from products/desktop/packages/enricher/src/parse-result.ts rename to packages/agent/packages/enricher/src/parse-result.ts diff --git a/products/desktop/packages/enricher/src/parser-manager.ts b/packages/agent/packages/enricher/src/parser-manager.ts similarity index 100% rename from products/desktop/packages/enricher/src/parser-manager.ts rename to packages/agent/packages/enricher/src/parser-manager.ts diff --git a/products/desktop/packages/enricher/src/posthog-api.ts b/packages/agent/packages/enricher/src/posthog-api.ts similarity index 100% rename from products/desktop/packages/enricher/src/posthog-api.ts rename to packages/agent/packages/enricher/src/posthog-api.ts diff --git a/products/desktop/packages/enricher/src/serialize.test.ts b/packages/agent/packages/enricher/src/serialize.test.ts similarity index 100% rename from products/desktop/packages/enricher/src/serialize.test.ts rename to packages/agent/packages/enricher/src/serialize.test.ts diff --git a/products/desktop/packages/enricher/src/serialize.ts b/packages/agent/packages/enricher/src/serialize.ts similarity index 100% rename from products/desktop/packages/enricher/src/serialize.ts rename to packages/agent/packages/enricher/src/serialize.ts diff --git a/products/desktop/packages/enricher/src/stale-flags.test.ts b/packages/agent/packages/enricher/src/stale-flags.test.ts similarity index 100% rename from products/desktop/packages/enricher/src/stale-flags.test.ts rename to packages/agent/packages/enricher/src/stale-flags.test.ts diff --git a/products/desktop/packages/enricher/src/stale-flags.ts b/packages/agent/packages/enricher/src/stale-flags.ts similarity index 100% rename from products/desktop/packages/enricher/src/stale-flags.ts rename to packages/agent/packages/enricher/src/stale-flags.ts diff --git a/products/desktop/packages/enricher/src/types.ts b/packages/agent/packages/enricher/src/types.ts similarity index 100% rename from products/desktop/packages/enricher/src/types.ts rename to packages/agent/packages/enricher/src/types.ts diff --git a/products/desktop/packages/enricher/src/variant-detector.ts b/packages/agent/packages/enricher/src/variant-detector.ts similarity index 100% rename from products/desktop/packages/enricher/src/variant-detector.ts rename to packages/agent/packages/enricher/src/variant-detector.ts diff --git a/products/desktop/packages/enricher/src/wrapper-detector.test.ts b/packages/agent/packages/enricher/src/wrapper-detector.test.ts similarity index 100% rename from products/desktop/packages/enricher/src/wrapper-detector.test.ts rename to packages/agent/packages/enricher/src/wrapper-detector.test.ts diff --git a/products/desktop/packages/enricher/src/wrapper-detector.ts b/packages/agent/packages/enricher/src/wrapper-detector.ts similarity index 100% rename from products/desktop/packages/enricher/src/wrapper-detector.ts rename to packages/agent/packages/enricher/src/wrapper-detector.ts diff --git a/products/desktop/packages/enricher/src/wrapper-integration.test.ts b/packages/agent/packages/enricher/src/wrapper-integration.test.ts similarity index 100% rename from products/desktop/packages/enricher/src/wrapper-integration.test.ts rename to packages/agent/packages/enricher/src/wrapper-integration.test.ts diff --git a/products/desktop/packages/enricher/tsconfig.json b/packages/agent/packages/enricher/tsconfig.json similarity index 100% rename from products/desktop/packages/enricher/tsconfig.json rename to packages/agent/packages/enricher/tsconfig.json diff --git a/products/desktop/packages/enricher/tsup.config.ts b/packages/agent/packages/enricher/tsup.config.ts similarity index 100% rename from products/desktop/packages/enricher/tsup.config.ts rename to packages/agent/packages/enricher/tsup.config.ts diff --git a/products/desktop/packages/git/package.json b/packages/agent/packages/git/package.json similarity index 100% rename from products/desktop/packages/git/package.json rename to packages/agent/packages/git/package.json diff --git a/products/desktop/packages/git/src/client.ts b/packages/agent/packages/git/src/client.ts similarity index 100% rename from products/desktop/packages/git/src/client.ts rename to packages/agent/packages/git/src/client.ts diff --git a/products/desktop/packages/git/src/concurrency.ts b/packages/agent/packages/git/src/concurrency.ts similarity index 100% rename from products/desktop/packages/git/src/concurrency.ts rename to packages/agent/packages/git/src/concurrency.ts diff --git a/products/desktop/packages/git/src/exclude-patterns.test.ts b/packages/agent/packages/git/src/exclude-patterns.test.ts similarity index 100% rename from products/desktop/packages/git/src/exclude-patterns.test.ts rename to packages/agent/packages/git/src/exclude-patterns.test.ts diff --git a/products/desktop/packages/git/src/exclude-patterns.ts b/packages/agent/packages/git/src/exclude-patterns.ts similarity index 100% rename from products/desktop/packages/git/src/exclude-patterns.ts rename to packages/agent/packages/git/src/exclude-patterns.ts diff --git a/products/desktop/packages/git/src/gh.test.ts b/packages/agent/packages/git/src/gh.test.ts similarity index 100% rename from products/desktop/packages/git/src/gh.test.ts rename to packages/agent/packages/git/src/gh.test.ts diff --git a/products/desktop/packages/git/src/gh.ts b/packages/agent/packages/git/src/gh.ts similarity index 100% rename from products/desktop/packages/git/src/gh.ts rename to packages/agent/packages/git/src/gh.ts diff --git a/products/desktop/packages/git/src/git-exec.test.ts b/packages/agent/packages/git/src/git-exec.test.ts similarity index 100% rename from products/desktop/packages/git/src/git-exec.test.ts rename to packages/agent/packages/git/src/git-exec.test.ts diff --git a/products/desktop/packages/git/src/git-exec.ts b/packages/agent/packages/git/src/git-exec.ts similarity index 100% rename from products/desktop/packages/git/src/git-exec.ts rename to packages/agent/packages/git/src/git-exec.ts diff --git a/products/desktop/packages/git/src/git-saga.ts b/packages/agent/packages/git/src/git-saga.ts similarity index 100% rename from products/desktop/packages/git/src/git-saga.ts rename to packages/agent/packages/git/src/git-saga.ts diff --git a/products/desktop/packages/git/src/lock-detector.ts b/packages/agent/packages/git/src/lock-detector.ts similarity index 100% rename from products/desktop/packages/git/src/lock-detector.ts rename to packages/agent/packages/git/src/lock-detector.ts diff --git a/products/desktop/packages/git/src/operation-manager.ts b/packages/agent/packages/git/src/operation-manager.ts similarity index 100% rename from products/desktop/packages/git/src/operation-manager.ts rename to packages/agent/packages/git/src/operation-manager.ts diff --git a/products/desktop/packages/git/src/queries.test.ts b/packages/agent/packages/git/src/queries.test.ts similarity index 100% rename from products/desktop/packages/git/src/queries.test.ts rename to packages/agent/packages/git/src/queries.test.ts diff --git a/products/desktop/packages/git/src/queries.ts b/packages/agent/packages/git/src/queries.ts similarity index 100% rename from products/desktop/packages/git/src/queries.ts rename to packages/agent/packages/git/src/queries.ts diff --git a/products/desktop/packages/git/src/rw-lock.ts b/packages/agent/packages/git/src/rw-lock.ts similarity index 100% rename from products/desktop/packages/git/src/rw-lock.ts rename to packages/agent/packages/git/src/rw-lock.ts diff --git a/products/desktop/packages/git/src/sagas/branch.ts b/packages/agent/packages/git/src/sagas/branch.ts similarity index 100% rename from products/desktop/packages/git/src/sagas/branch.ts rename to packages/agent/packages/git/src/sagas/branch.ts diff --git a/products/desktop/packages/git/src/sagas/checkpoint.test.ts b/packages/agent/packages/git/src/sagas/checkpoint.test.ts similarity index 100% rename from products/desktop/packages/git/src/sagas/checkpoint.test.ts rename to packages/agent/packages/git/src/sagas/checkpoint.test.ts diff --git a/products/desktop/packages/git/src/sagas/checkpoint.ts b/packages/agent/packages/git/src/sagas/checkpoint.ts similarity index 100% rename from products/desktop/packages/git/src/sagas/checkpoint.ts rename to packages/agent/packages/git/src/sagas/checkpoint.ts diff --git a/products/desktop/packages/git/src/sagas/clean.ts b/packages/agent/packages/git/src/sagas/clean.ts similarity index 100% rename from products/desktop/packages/git/src/sagas/clean.ts rename to packages/agent/packages/git/src/sagas/clean.ts diff --git a/products/desktop/packages/git/src/sagas/clone.ts b/packages/agent/packages/git/src/sagas/clone.ts similarity index 100% rename from products/desktop/packages/git/src/sagas/clone.ts rename to packages/agent/packages/git/src/sagas/clone.ts diff --git a/products/desktop/packages/git/src/sagas/commit.ts b/packages/agent/packages/git/src/sagas/commit.ts similarity index 100% rename from products/desktop/packages/git/src/sagas/commit.ts rename to packages/agent/packages/git/src/sagas/commit.ts diff --git a/products/desktop/packages/git/src/sagas/discard.ts b/packages/agent/packages/git/src/sagas/discard.ts similarity index 100% rename from products/desktop/packages/git/src/sagas/discard.ts rename to packages/agent/packages/git/src/sagas/discard.ts diff --git a/products/desktop/packages/git/src/sagas/head.ts b/packages/agent/packages/git/src/sagas/head.ts similarity index 100% rename from products/desktop/packages/git/src/sagas/head.ts rename to packages/agent/packages/git/src/sagas/head.ts diff --git a/products/desktop/packages/git/src/sagas/init.ts b/packages/agent/packages/git/src/sagas/init.ts similarity index 100% rename from products/desktop/packages/git/src/sagas/init.ts rename to packages/agent/packages/git/src/sagas/init.ts diff --git a/products/desktop/packages/git/src/sagas/patch.ts b/packages/agent/packages/git/src/sagas/patch.ts similarity index 100% rename from products/desktop/packages/git/src/sagas/patch.ts rename to packages/agent/packages/git/src/sagas/patch.ts diff --git a/products/desktop/packages/git/src/sagas/pull.ts b/packages/agent/packages/git/src/sagas/pull.ts similarity index 100% rename from products/desktop/packages/git/src/sagas/pull.ts rename to packages/agent/packages/git/src/sagas/pull.ts diff --git a/products/desktop/packages/git/src/sagas/push.ts b/packages/agent/packages/git/src/sagas/push.ts similarity index 100% rename from products/desktop/packages/git/src/sagas/push.ts rename to packages/agent/packages/git/src/sagas/push.ts diff --git a/products/desktop/packages/git/src/sagas/stash.ts b/packages/agent/packages/git/src/sagas/stash.ts similarity index 100% rename from products/desktop/packages/git/src/sagas/stash.ts rename to packages/agent/packages/git/src/sagas/stash.ts diff --git a/products/desktop/packages/git/src/signed-commit.test.ts b/packages/agent/packages/git/src/signed-commit.test.ts similarity index 100% rename from products/desktop/packages/git/src/signed-commit.test.ts rename to packages/agent/packages/git/src/signed-commit.test.ts diff --git a/products/desktop/packages/git/src/signed-commit.ts b/packages/agent/packages/git/src/signed-commit.ts similarity index 100% rename from products/desktop/packages/git/src/signed-commit.ts rename to packages/agent/packages/git/src/signed-commit.ts diff --git a/products/desktop/packages/git/src/stacks.test.ts b/packages/agent/packages/git/src/stacks.test.ts similarity index 100% rename from products/desktop/packages/git/src/stacks.test.ts rename to packages/agent/packages/git/src/stacks.test.ts diff --git a/products/desktop/packages/git/src/stacks.ts b/packages/agent/packages/git/src/stacks.ts similarity index 100% rename from products/desktop/packages/git/src/stacks.ts rename to packages/agent/packages/git/src/stacks.ts diff --git a/products/desktop/packages/git/src/status-stream.test.ts b/packages/agent/packages/git/src/status-stream.test.ts similarity index 100% rename from products/desktop/packages/git/src/status-stream.test.ts rename to packages/agent/packages/git/src/status-stream.test.ts diff --git a/products/desktop/packages/git/src/status-stream.ts b/packages/agent/packages/git/src/status-stream.ts similarity index 100% rename from products/desktop/packages/git/src/status-stream.ts rename to packages/agent/packages/git/src/status-stream.ts diff --git a/products/desktop/packages/git/src/trailers.ts b/packages/agent/packages/git/src/trailers.ts similarity index 100% rename from products/desktop/packages/git/src/trailers.ts rename to packages/agent/packages/git/src/trailers.ts diff --git a/products/desktop/packages/git/src/utils.test.ts b/packages/agent/packages/git/src/utils.test.ts similarity index 100% rename from products/desktop/packages/git/src/utils.test.ts rename to packages/agent/packages/git/src/utils.test.ts diff --git a/products/desktop/packages/git/src/utils.ts b/packages/agent/packages/git/src/utils.ts similarity index 100% rename from products/desktop/packages/git/src/utils.ts rename to packages/agent/packages/git/src/utils.ts diff --git a/products/desktop/packages/git/src/worktree-name.test.ts b/packages/agent/packages/git/src/worktree-name.test.ts similarity index 100% rename from products/desktop/packages/git/src/worktree-name.test.ts rename to packages/agent/packages/git/src/worktree-name.test.ts diff --git a/products/desktop/packages/git/src/worktree-name.ts b/packages/agent/packages/git/src/worktree-name.ts similarity index 100% rename from products/desktop/packages/git/src/worktree-name.ts rename to packages/agent/packages/git/src/worktree-name.ts diff --git a/products/desktop/packages/git/src/worktree.test.ts b/packages/agent/packages/git/src/worktree.test.ts similarity index 100% rename from products/desktop/packages/git/src/worktree.test.ts rename to packages/agent/packages/git/src/worktree.test.ts diff --git a/products/desktop/packages/git/src/worktree.ts b/packages/agent/packages/git/src/worktree.ts similarity index 100% rename from products/desktop/packages/git/src/worktree.ts rename to packages/agent/packages/git/src/worktree.ts diff --git a/products/desktop/packages/git/tsconfig.json b/packages/agent/packages/git/tsconfig.json similarity index 100% rename from products/desktop/packages/git/tsconfig.json rename to packages/agent/packages/git/tsconfig.json diff --git a/products/desktop/packages/git/vitest.config.ts b/packages/agent/packages/git/vitest.config.ts similarity index 100% rename from products/desktop/packages/git/vitest.config.ts rename to packages/agent/packages/git/vitest.config.ts diff --git a/products/desktop/packages/harness/README.md b/packages/agent/packages/harness/README.md similarity index 100% rename from products/desktop/packages/harness/README.md rename to packages/agent/packages/harness/README.md diff --git a/products/desktop/packages/harness/package.json b/packages/agent/packages/harness/package.json similarity index 100% rename from products/desktop/packages/harness/package.json rename to packages/agent/packages/harness/package.json diff --git a/products/desktop/packages/harness/src/cli.ts b/packages/agent/packages/harness/src/cli.ts similarity index 100% rename from products/desktop/packages/harness/src/cli.ts rename to packages/agent/packages/harness/src/cli.ts diff --git a/products/desktop/packages/harness/src/extensions/README.md b/packages/agent/packages/harness/src/extensions/README.md similarity index 100% rename from products/desktop/packages/harness/src/extensions/README.md rename to packages/agent/packages/harness/src/extensions/README.md diff --git a/products/desktop/packages/harness/src/extensions/agent-instructions/index.ts b/packages/agent/packages/harness/src/extensions/agent-instructions/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/agent-instructions/index.ts rename to packages/agent/packages/harness/src/extensions/agent-instructions/index.ts diff --git a/products/desktop/packages/harness/src/extensions/agent-instructions/instructions.test.ts b/packages/agent/packages/harness/src/extensions/agent-instructions/instructions.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/agent-instructions/instructions.test.ts rename to packages/agent/packages/harness/src/extensions/agent-instructions/instructions.test.ts diff --git a/products/desktop/packages/harness/src/extensions/agent-instructions/instructions.ts b/packages/agent/packages/harness/src/extensions/agent-instructions/instructions.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/agent-instructions/instructions.ts rename to packages/agent/packages/harness/src/extensions/agent-instructions/instructions.ts diff --git a/products/desktop/packages/harness/src/extensions/auto-publish/extension.test.ts b/packages/agent/packages/harness/src/extensions/auto-publish/extension.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/auto-publish/extension.test.ts rename to packages/agent/packages/harness/src/extensions/auto-publish/extension.test.ts diff --git a/products/desktop/packages/harness/src/extensions/auto-publish/extension.ts b/packages/agent/packages/harness/src/extensions/auto-publish/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/auto-publish/extension.ts rename to packages/agent/packages/harness/src/extensions/auto-publish/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/auto-publish/index.ts b/packages/agent/packages/harness/src/extensions/auto-publish/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/auto-publish/index.ts rename to packages/agent/packages/harness/src/extensions/auto-publish/index.ts diff --git a/products/desktop/packages/harness/src/extensions/background-jobs/extension.test.ts b/packages/agent/packages/harness/src/extensions/background-jobs/extension.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/background-jobs/extension.test.ts rename to packages/agent/packages/harness/src/extensions/background-jobs/extension.test.ts diff --git a/products/desktop/packages/harness/src/extensions/background-jobs/extension.ts b/packages/agent/packages/harness/src/extensions/background-jobs/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/background-jobs/extension.ts rename to packages/agent/packages/harness/src/extensions/background-jobs/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/background-jobs/index.ts b/packages/agent/packages/harness/src/extensions/background-jobs/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/background-jobs/index.ts rename to packages/agent/packages/harness/src/extensions/background-jobs/index.ts diff --git a/products/desktop/packages/harness/src/extensions/background-jobs/jobs.test.ts b/packages/agent/packages/harness/src/extensions/background-jobs/jobs.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/background-jobs/jobs.test.ts rename to packages/agent/packages/harness/src/extensions/background-jobs/jobs.test.ts diff --git a/products/desktop/packages/harness/src/extensions/background-jobs/jobs.ts b/packages/agent/packages/harness/src/extensions/background-jobs/jobs.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/background-jobs/jobs.ts rename to packages/agent/packages/harness/src/extensions/background-jobs/jobs.ts diff --git a/products/desktop/packages/harness/src/extensions/background-jobs/render.ts b/packages/agent/packages/harness/src/extensions/background-jobs/render.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/background-jobs/render.ts rename to packages/agent/packages/harness/src/extensions/background-jobs/render.ts diff --git a/products/desktop/packages/harness/src/extensions/benjamin/benjamin.lock.json b/packages/agent/packages/harness/src/extensions/benjamin/benjamin.lock.json similarity index 100% rename from products/desktop/packages/harness/src/extensions/benjamin/benjamin.lock.json rename to packages/agent/packages/harness/src/extensions/benjamin/benjamin.lock.json diff --git a/products/desktop/packages/harness/src/extensions/benjamin/guidance.test.ts b/packages/agent/packages/harness/src/extensions/benjamin/guidance.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/benjamin/guidance.test.ts rename to packages/agent/packages/harness/src/extensions/benjamin/guidance.test.ts diff --git a/products/desktop/packages/harness/src/extensions/benjamin/guidance.ts b/packages/agent/packages/harness/src/extensions/benjamin/guidance.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/benjamin/guidance.ts rename to packages/agent/packages/harness/src/extensions/benjamin/guidance.ts diff --git a/products/desktop/packages/harness/src/extensions/benjamin/index.ts b/packages/agent/packages/harness/src/extensions/benjamin/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/benjamin/index.ts rename to packages/agent/packages/harness/src/extensions/benjamin/index.ts diff --git a/products/desktop/packages/harness/src/extensions/benjamin/instruction.ts b/packages/agent/packages/harness/src/extensions/benjamin/instruction.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/benjamin/instruction.ts rename to packages/agent/packages/harness/src/extensions/benjamin/instruction.ts diff --git a/products/desktop/packages/harness/src/extensions/benjamin/license-guard.ts b/packages/agent/packages/harness/src/extensions/benjamin/license-guard.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/benjamin/license-guard.ts rename to packages/agent/packages/harness/src/extensions/benjamin/license-guard.ts diff --git a/products/desktop/packages/harness/src/extensions/benjamin/ste100.ts b/packages/agent/packages/harness/src/extensions/benjamin/ste100.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/benjamin/ste100.ts rename to packages/agent/packages/harness/src/extensions/benjamin/ste100.ts diff --git a/products/desktop/packages/harness/src/extensions/context-wiki/context-wiki.ts b/packages/agent/packages/harness/src/extensions/context-wiki/context-wiki.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/context-wiki/context-wiki.ts rename to packages/agent/packages/harness/src/extensions/context-wiki/context-wiki.ts diff --git a/products/desktop/packages/harness/src/extensions/context-wiki/extension.test.ts b/packages/agent/packages/harness/src/extensions/context-wiki/extension.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/context-wiki/extension.test.ts rename to packages/agent/packages/harness/src/extensions/context-wiki/extension.test.ts diff --git a/products/desktop/packages/harness/src/extensions/context-wiki/extension.ts b/packages/agent/packages/harness/src/extensions/context-wiki/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/context-wiki/extension.ts rename to packages/agent/packages/harness/src/extensions/context-wiki/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/context-wiki/index.ts b/packages/agent/packages/harness/src/extensions/context-wiki/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/context-wiki/index.ts rename to packages/agent/packages/harness/src/extensions/context-wiki/index.ts diff --git a/products/desktop/packages/harness/src/extensions/current-work/extension.test.ts b/packages/agent/packages/harness/src/extensions/current-work/extension.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/current-work/extension.test.ts rename to packages/agent/packages/harness/src/extensions/current-work/extension.test.ts diff --git a/products/desktop/packages/harness/src/extensions/current-work/extension.ts b/packages/agent/packages/harness/src/extensions/current-work/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/current-work/extension.ts rename to packages/agent/packages/harness/src/extensions/current-work/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/enrichment/extension.test.ts b/packages/agent/packages/harness/src/extensions/enrichment/extension.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/enrichment/extension.test.ts rename to packages/agent/packages/harness/src/extensions/enrichment/extension.test.ts diff --git a/products/desktop/packages/harness/src/extensions/enrichment/extension.ts b/packages/agent/packages/harness/src/extensions/enrichment/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/enrichment/extension.ts rename to packages/agent/packages/harness/src/extensions/enrichment/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/enrichment/file-enricher.test.ts b/packages/agent/packages/harness/src/extensions/enrichment/file-enricher.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/enrichment/file-enricher.test.ts rename to packages/agent/packages/harness/src/extensions/enrichment/file-enricher.test.ts diff --git a/products/desktop/packages/harness/src/extensions/enrichment/file-enricher.ts b/packages/agent/packages/harness/src/extensions/enrichment/file-enricher.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/enrichment/file-enricher.ts rename to packages/agent/packages/harness/src/extensions/enrichment/file-enricher.ts diff --git a/products/desktop/packages/harness/src/extensions/enrichment/index.ts b/packages/agent/packages/harness/src/extensions/enrichment/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/enrichment/index.ts rename to packages/agent/packages/harness/src/extensions/enrichment/index.ts diff --git a/products/desktop/packages/harness/src/extensions/entrypoints.ts b/packages/agent/packages/harness/src/extensions/entrypoints.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/entrypoints.ts rename to packages/agent/packages/harness/src/extensions/entrypoints.ts diff --git a/products/desktop/packages/harness/src/extensions/footer-focus-demo/README.md b/packages/agent/packages/harness/src/extensions/footer-focus-demo/README.md similarity index 100% rename from products/desktop/packages/harness/src/extensions/footer-focus-demo/README.md rename to packages/agent/packages/harness/src/extensions/footer-focus-demo/README.md diff --git a/products/desktop/packages/harness/src/extensions/footer-focus-demo/editor.ts b/packages/agent/packages/harness/src/extensions/footer-focus-demo/editor.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/footer-focus-demo/editor.ts rename to packages/agent/packages/harness/src/extensions/footer-focus-demo/editor.ts diff --git a/products/desktop/packages/harness/src/extensions/footer-focus-demo/extension.ts b/packages/agent/packages/harness/src/extensions/footer-focus-demo/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/footer-focus-demo/extension.ts rename to packages/agent/packages/harness/src/extensions/footer-focus-demo/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/footer-focus-demo/footer.ts b/packages/agent/packages/harness/src/extensions/footer-focus-demo/footer.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/footer-focus-demo/footer.ts rename to packages/agent/packages/harness/src/extensions/footer-focus-demo/footer.ts diff --git a/products/desktop/packages/harness/src/extensions/footer-focus-demo/inbox.ts b/packages/agent/packages/harness/src/extensions/footer-focus-demo/inbox.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/footer-focus-demo/inbox.ts rename to packages/agent/packages/harness/src/extensions/footer-focus-demo/inbox.ts diff --git a/products/desktop/packages/harness/src/extensions/footer-focus-demo/index.ts b/packages/agent/packages/harness/src/extensions/footer-focus-demo/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/footer-focus-demo/index.ts rename to packages/agent/packages/harness/src/extensions/footer-focus-demo/index.ts diff --git a/products/desktop/packages/harness/src/extensions/footer-focus-demo/overlay.ts b/packages/agent/packages/harness/src/extensions/footer-focus-demo/overlay.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/footer-focus-demo/overlay.ts rename to packages/agent/packages/harness/src/extensions/footer-focus-demo/overlay.ts diff --git a/products/desktop/packages/harness/src/extensions/hog-branding/brand-env.ts b/packages/agent/packages/harness/src/extensions/hog-branding/brand-env.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/hog-branding/brand-env.ts rename to packages/agent/packages/harness/src/extensions/hog-branding/brand-env.ts diff --git a/products/desktop/packages/harness/src/extensions/hog-branding/extension.test.ts b/packages/agent/packages/harness/src/extensions/hog-branding/extension.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/hog-branding/extension.test.ts rename to packages/agent/packages/harness/src/extensions/hog-branding/extension.test.ts diff --git a/products/desktop/packages/harness/src/extensions/hog-branding/extension.ts b/packages/agent/packages/harness/src/extensions/hog-branding/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/hog-branding/extension.ts rename to packages/agent/packages/harness/src/extensions/hog-branding/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/hog-branding/index.ts b/packages/agent/packages/harness/src/extensions/hog-branding/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/hog-branding/index.ts rename to packages/agent/packages/harness/src/extensions/hog-branding/index.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/cloud-run.ts b/packages/agent/packages/harness/src/extensions/local-tools/cloud-run.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/cloud-run.ts rename to packages/agent/packages/harness/src/extensions/local-tools/cloud-run.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/github-token.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/github-token.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/github-token.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/github-token.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/github-token.ts b/packages/agent/packages/harness/src/extensions/local-tools/github-token.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/github-token.ts rename to packages/agent/packages/harness/src/extensions/local-tools/github-token.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/index.ts b/packages/agent/packages/harness/src/extensions/local-tools/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/index.ts rename to packages/agent/packages/harness/src/extensions/local-tools/index.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/local-tools.ts b/packages/agent/packages/harness/src/extensions/local-tools/local-tools.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/local-tools.ts rename to packages/agent/packages/harness/src/extensions/local-tools/local-tools.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/registry.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/registry.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/registry.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/registry.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/registry.ts b/packages/agent/packages/harness/src/extensions/local-tools/registry.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/registry.ts rename to packages/agent/packages/harness/src/extensions/local-tools/registry.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/signed-commit-artefacts.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/signed-commit-artefacts.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/signed-commit-artefacts.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/signed-commit-artefacts.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/signed-commit-artefacts.ts b/packages/agent/packages/harness/src/extensions/local-tools/signed-commit-artefacts.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/signed-commit-artefacts.ts rename to packages/agent/packages/harness/src/extensions/local-tools/signed-commit-artefacts.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/signed-commit-shared.ts b/packages/agent/packages/harness/src/extensions/local-tools/signed-commit-shared.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/signed-commit-shared.ts rename to packages/agent/packages/harness/src/extensions/local-tools/signed-commit-shared.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/task-tools-client.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/task-tools-client.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/task-tools-client.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/task-tools-client.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/task-tools-client.ts b/packages/agent/packages/harness/src/extensions/local-tools/task-tools-client.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/task-tools-client.ts rename to packages/agent/packages/harness/src/extensions/local-tools/task-tools-client.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/artifact-upload.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/artifact-upload.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/artifact-upload.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/artifact-upload.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/clone-repo.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/clone-repo.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/clone-repo.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/clone-repo.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/clone-repo.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/clone-repo.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/clone-repo.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/clone-repo.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/finish.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/finish.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/finish.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/finish.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/finish.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/finish.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/finish.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/finish.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/gh-stack.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/gh-stack.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/gh-stack.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/gh-stack.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/gh-stack.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/gh-stack.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/gh-stack.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/gh-stack.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/list-agents.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/list-agents.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/list-agents.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/list-agents.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/list-agents.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/list-agents.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/list-agents.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/list-agents.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/list-repos.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/list-repos.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/list-repos.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/list-repos.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/report-activity.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/report-activity.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/report-activity.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/report-activity.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/report-activity.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/report-activity.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/report-activity.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/report-activity.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/send-agent-message.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/send-agent-message.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/send-agent-message.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/send-agent-message.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/send-agent-message.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/send-agent-message.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/send-agent-message.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/send-agent-message.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/show-actions.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/show-actions.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/show-actions.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/show-actions.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/show-actions.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/show-actions.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/show-actions.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/show-actions.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/signed-commit.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/signed-commit.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/signed-commit.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/signed-commit.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/signed-commit.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/signed-commit.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/signed-commit.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/signed-commit.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/signed-git-tool.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/signed-git-tool.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/signed-git-tool.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/signed-git-tool.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/signed-merge.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/signed-merge.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/signed-merge.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/signed-merge.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/signed-merge.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/signed-merge.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/signed-merge.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/signed-merge.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/signed-rewrite.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/signed-rewrite.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/signed-rewrite.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/signed-rewrite.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/speak.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/speak.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/speak.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/speak.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/speak.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/speak.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/speak.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/speak.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/task-summary-update.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/task-summary-update.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/task-summary-update.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/task-summary-update.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/task-summary-update.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/task-summary-update.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/task-summary-update.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/task-summary-update.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/upload-artifact.test.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/upload-artifact.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/upload-artifact.test.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/upload-artifact.test.ts diff --git a/products/desktop/packages/harness/src/extensions/local-tools/tools/upload-artifact.ts b/packages/agent/packages/harness/src/extensions/local-tools/tools/upload-artifact.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/local-tools/tools/upload-artifact.ts rename to packages/agent/packages/harness/src/extensions/local-tools/tools/upload-artifact.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/README.md b/packages/agent/packages/harness/src/extensions/mcp/README.md similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/README.md rename to packages/agent/packages/harness/src/extensions/mcp/README.md diff --git a/products/desktop/packages/harness/src/extensions/mcp/auth-flow.test.ts b/packages/agent/packages/harness/src/extensions/mcp/auth-flow.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/auth-flow.test.ts rename to packages/agent/packages/harness/src/extensions/mcp/auth-flow.test.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/auth-flow.ts b/packages/agent/packages/harness/src/extensions/mcp/auth-flow.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/auth-flow.ts rename to packages/agent/packages/harness/src/extensions/mcp/auth-flow.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/auth-storage.test.ts b/packages/agent/packages/harness/src/extensions/mcp/auth-storage.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/auth-storage.test.ts rename to packages/agent/packages/harness/src/extensions/mcp/auth-storage.test.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/auth-storage.ts b/packages/agent/packages/harness/src/extensions/mcp/auth-storage.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/auth-storage.ts rename to packages/agent/packages/harness/src/extensions/mcp/auth-storage.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/callback-server.test.ts b/packages/agent/packages/harness/src/extensions/mcp/callback-server.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/callback-server.test.ts rename to packages/agent/packages/harness/src/extensions/mcp/callback-server.test.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/callback-server.ts b/packages/agent/packages/harness/src/extensions/mcp/callback-server.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/callback-server.ts rename to packages/agent/packages/harness/src/extensions/mcp/callback-server.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/config.test.ts b/packages/agent/packages/harness/src/extensions/mcp/config.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/config.test.ts rename to packages/agent/packages/harness/src/extensions/mcp/config.test.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/config.ts b/packages/agent/packages/harness/src/extensions/mcp/config.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/config.ts rename to packages/agent/packages/harness/src/extensions/mcp/config.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/errors.ts b/packages/agent/packages/harness/src/extensions/mcp/errors.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/errors.ts rename to packages/agent/packages/harness/src/extensions/mcp/errors.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/extension.test.ts b/packages/agent/packages/harness/src/extensions/mcp/extension.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/extension.test.ts rename to packages/agent/packages/harness/src/extensions/mcp/extension.test.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/extension.ts b/packages/agent/packages/harness/src/extensions/mcp/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/extension.ts rename to packages/agent/packages/harness/src/extensions/mcp/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/index.ts b/packages/agent/packages/harness/src/extensions/mcp/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/index.ts rename to packages/agent/packages/harness/src/extensions/mcp/index.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/oauth-provider.test.ts b/packages/agent/packages/harness/src/extensions/mcp/oauth-provider.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/oauth-provider.test.ts rename to packages/agent/packages/harness/src/extensions/mcp/oauth-provider.test.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/oauth-provider.ts b/packages/agent/packages/harness/src/extensions/mcp/oauth-provider.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/oauth-provider.ts rename to packages/agent/packages/harness/src/extensions/mcp/oauth-provider.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/proxy-tool.test.ts b/packages/agent/packages/harness/src/extensions/mcp/proxy-tool.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/proxy-tool.test.ts rename to packages/agent/packages/harness/src/extensions/mcp/proxy-tool.test.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/proxy-tool.ts b/packages/agent/packages/harness/src/extensions/mcp/proxy-tool.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/proxy-tool.ts rename to packages/agent/packages/harness/src/extensions/mcp/proxy-tool.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/render.test.ts b/packages/agent/packages/harness/src/extensions/mcp/render.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/render.test.ts rename to packages/agent/packages/harness/src/extensions/mcp/render.test.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/render.ts b/packages/agent/packages/harness/src/extensions/mcp/render.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/render.ts rename to packages/agent/packages/harness/src/extensions/mcp/render.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/schema.test.ts b/packages/agent/packages/harness/src/extensions/mcp/schema.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/schema.test.ts rename to packages/agent/packages/harness/src/extensions/mcp/schema.test.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/schema.ts b/packages/agent/packages/harness/src/extensions/mcp/schema.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/schema.ts rename to packages/agent/packages/harness/src/extensions/mcp/schema.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/server-manager.test.ts b/packages/agent/packages/harness/src/extensions/mcp/server-manager.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/server-manager.test.ts rename to packages/agent/packages/harness/src/extensions/mcp/server-manager.test.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/server-manager.ts b/packages/agent/packages/harness/src/extensions/mcp/server-manager.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/server-manager.ts rename to packages/agent/packages/harness/src/extensions/mcp/server-manager.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/skills/mcp-servers/SKILL.md b/packages/agent/packages/harness/src/extensions/mcp/skills/mcp-servers/SKILL.md similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/skills/mcp-servers/SKILL.md rename to packages/agent/packages/harness/src/extensions/mcp/skills/mcp-servers/SKILL.md diff --git a/products/desktop/packages/harness/src/extensions/mcp/test-support.ts b/packages/agent/packages/harness/src/extensions/mcp/test-support.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/test-support.ts rename to packages/agent/packages/harness/src/extensions/mcp/test-support.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/tool-bridge.test.ts b/packages/agent/packages/harness/src/extensions/mcp/tool-bridge.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/tool-bridge.test.ts rename to packages/agent/packages/harness/src/extensions/mcp/tool-bridge.test.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/tool-bridge.ts b/packages/agent/packages/harness/src/extensions/mcp/tool-bridge.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/tool-bridge.ts rename to packages/agent/packages/harness/src/extensions/mcp/tool-bridge.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/tool-cache.test.ts b/packages/agent/packages/harness/src/extensions/mcp/tool-cache.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/tool-cache.test.ts rename to packages/agent/packages/harness/src/extensions/mcp/tool-cache.test.ts diff --git a/products/desktop/packages/harness/src/extensions/mcp/tool-cache.ts b/packages/agent/packages/harness/src/extensions/mcp/tool-cache.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/mcp/tool-cache.ts rename to packages/agent/packages/harness/src/extensions/mcp/tool-cache.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/agents.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/agents.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/agents.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/agents.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/agents.ts b/packages/agent/packages/harness/src/extensions/orchestration/agents.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/agents.ts rename to packages/agent/packages/harness/src/extensions/orchestration/agents.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/auth.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/auth.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/auth.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/auth.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/auth.ts b/packages/agent/packages/harness/src/extensions/orchestration/auth.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/auth.ts rename to packages/agent/packages/harness/src/extensions/orchestration/auth.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/bundled-agents/Explore.md b/packages/agent/packages/harness/src/extensions/orchestration/bundled-agents/Explore.md similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/bundled-agents/Explore.md rename to packages/agent/packages/harness/src/extensions/orchestration/bundled-agents/Explore.md diff --git a/products/desktop/packages/harness/src/extensions/orchestration/bundled-agents/General.md b/packages/agent/packages/harness/src/extensions/orchestration/bundled-agents/General.md similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/bundled-agents/General.md rename to packages/agent/packages/harness/src/extensions/orchestration/bundled-agents/General.md diff --git a/products/desktop/packages/harness/src/extensions/orchestration/bundled-agents/Plan.md b/packages/agent/packages/harness/src/extensions/orchestration/bundled-agents/Plan.md similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/bundled-agents/Plan.md rename to packages/agent/packages/harness/src/extensions/orchestration/bundled-agents/Plan.md diff --git a/products/desktop/packages/harness/src/extensions/orchestration/context.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/context.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/context.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/context.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/context.ts b/packages/agent/packages/harness/src/extensions/orchestration/context.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/context.ts rename to packages/agent/packages/harness/src/extensions/orchestration/context.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/discovery.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/discovery.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/discovery.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/discovery.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/discovery.ts b/packages/agent/packages/harness/src/extensions/orchestration/discovery.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/discovery.ts rename to packages/agent/packages/harness/src/extensions/orchestration/discovery.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/extension.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/extension.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/extension.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/extension.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/extension.ts b/packages/agent/packages/harness/src/extensions/orchestration/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/extension.ts rename to packages/agent/packages/harness/src/extensions/orchestration/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/format.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/format.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/format.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/format.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/format.ts b/packages/agent/packages/harness/src/extensions/orchestration/format.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/format.ts rename to packages/agent/packages/harness/src/extensions/orchestration/format.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/index.ts b/packages/agent/packages/harness/src/extensions/orchestration/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/index.ts rename to packages/agent/packages/harness/src/extensions/orchestration/index.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/lifecycle.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/lifecycle.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/lifecycle.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/lifecycle.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/lifecycle.ts b/packages/agent/packages/harness/src/extensions/orchestration/lifecycle.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/lifecycle.ts rename to packages/agent/packages/harness/src/extensions/orchestration/lifecycle.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/policy.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/policy.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/policy.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/policy.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/policy.ts b/packages/agent/packages/harness/src/extensions/orchestration/policy.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/policy.ts rename to packages/agent/packages/harness/src/extensions/orchestration/policy.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/resources.ts b/packages/agent/packages/harness/src/extensions/orchestration/resources.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/resources.ts rename to packages/agent/packages/harness/src/extensions/orchestration/resources.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/run-agent.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/run-agent.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/run-agent.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/run-agent.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/run-agent.ts b/packages/agent/packages/harness/src/extensions/orchestration/run-agent.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/run-agent.ts rename to packages/agent/packages/harness/src/extensions/orchestration/run-agent.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/settings.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/settings.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/settings.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/settings.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/settings.ts b/packages/agent/packages/harness/src/extensions/orchestration/settings.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/settings.ts rename to packages/agent/packages/harness/src/extensions/orchestration/settings.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/skills/dynamic-workflows/SKILL.md b/packages/agent/packages/harness/src/extensions/orchestration/skills/dynamic-workflows/SKILL.md similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/skills/dynamic-workflows/SKILL.md rename to packages/agent/packages/harness/src/extensions/orchestration/skills/dynamic-workflows/SKILL.md diff --git a/products/desktop/packages/harness/src/extensions/orchestration/skills/subagent-orchestration/SKILL.md b/packages/agent/packages/harness/src/extensions/orchestration/skills/subagent-orchestration/SKILL.md similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/skills/subagent-orchestration/SKILL.md rename to packages/agent/packages/harness/src/extensions/orchestration/skills/subagent-orchestration/SKILL.md diff --git a/products/desktop/packages/harness/src/extensions/orchestration/text-truncate.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/text-truncate.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/text-truncate.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/text-truncate.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/text-truncate.ts b/packages/agent/packages/harness/src/extensions/orchestration/text-truncate.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/text-truncate.ts rename to packages/agent/packages/harness/src/extensions/orchestration/text-truncate.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/tools/subagent-tool.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/tools/subagent-tool.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/tools/subagent-tool.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/tools/subagent-tool.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/tools/subagent-tool.ts b/packages/agent/packages/harness/src/extensions/orchestration/tools/subagent-tool.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/tools/subagent-tool.ts rename to packages/agent/packages/harness/src/extensions/orchestration/tools/subagent-tool.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/tools/workflow-runtime.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/tools/workflow-runtime.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/tools/workflow-runtime.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/tools/workflow-runtime.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/tools/workflow-runtime.ts b/packages/agent/packages/harness/src/extensions/orchestration/tools/workflow-runtime.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/tools/workflow-runtime.ts rename to packages/agent/packages/harness/src/extensions/orchestration/tools/workflow-runtime.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/tools/workflow-tool.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/tools/workflow-tool.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/tools/workflow-tool.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/tools/workflow-tool.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/tools/workflow-tool.ts b/packages/agent/packages/harness/src/extensions/orchestration/tools/workflow-tool.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/tools/workflow-tool.ts rename to packages/agent/packages/harness/src/extensions/orchestration/tools/workflow-tool.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/ui/status-editor.ts b/packages/agent/packages/harness/src/extensions/orchestration/ui/status-editor.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/ui/status-editor.ts rename to packages/agent/packages/harness/src/extensions/orchestration/ui/status-editor.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/ui/status-footer.ts b/packages/agent/packages/harness/src/extensions/orchestration/ui/status-footer.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/ui/status-footer.ts rename to packages/agent/packages/harness/src/extensions/orchestration/ui/status-footer.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/ui/status-registry.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/ui/status-registry.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/ui/status-registry.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/ui/status-registry.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/ui/status-registry.ts b/packages/agent/packages/harness/src/extensions/orchestration/ui/status-registry.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/ui/status-registry.ts rename to packages/agent/packages/harness/src/extensions/orchestration/ui/status-registry.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/ui/subagent-render.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/ui/subagent-render.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/ui/subagent-render.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/ui/subagent-render.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/ui/subagent-render.ts b/packages/agent/packages/harness/src/extensions/orchestration/ui/subagent-render.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/ui/subagent-render.ts rename to packages/agent/packages/harness/src/extensions/orchestration/ui/subagent-render.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/ui/subagent-status-overlay.ts b/packages/agent/packages/harness/src/extensions/orchestration/ui/subagent-status-overlay.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/ui/subagent-status-overlay.ts rename to packages/agent/packages/harness/src/extensions/orchestration/ui/subagent-status-overlay.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/ui/workflow-render.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/ui/workflow-render.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/ui/workflow-render.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/ui/workflow-render.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/ui/workflow-render.ts b/packages/agent/packages/harness/src/extensions/orchestration/ui/workflow-render.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/ui/workflow-render.ts rename to packages/agent/packages/harness/src/extensions/orchestration/ui/workflow-render.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/ui/workflow-status-overlay.test.ts b/packages/agent/packages/harness/src/extensions/orchestration/ui/workflow-status-overlay.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/ui/workflow-status-overlay.test.ts rename to packages/agent/packages/harness/src/extensions/orchestration/ui/workflow-status-overlay.test.ts diff --git a/products/desktop/packages/harness/src/extensions/orchestration/ui/workflow-status-overlay.ts b/packages/agent/packages/harness/src/extensions/orchestration/ui/workflow-status-overlay.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/orchestration/ui/workflow-status-overlay.ts rename to packages/agent/packages/harness/src/extensions/orchestration/ui/workflow-status-overlay.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-mcp-policy/exec-permission.test.ts b/packages/agent/packages/harness/src/extensions/posthog-mcp-policy/exec-permission.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-mcp-policy/exec-permission.test.ts rename to packages/agent/packages/harness/src/extensions/posthog-mcp-policy/exec-permission.test.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-mcp-policy/exec-permission.ts b/packages/agent/packages/harness/src/extensions/posthog-mcp-policy/exec-permission.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-mcp-policy/exec-permission.ts rename to packages/agent/packages/harness/src/extensions/posthog-mcp-policy/exec-permission.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-mcp-policy/extension.test.ts b/packages/agent/packages/harness/src/extensions/posthog-mcp-policy/extension.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-mcp-policy/extension.test.ts rename to packages/agent/packages/harness/src/extensions/posthog-mcp-policy/extension.test.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-mcp-policy/extension.ts b/packages/agent/packages/harness/src/extensions/posthog-mcp-policy/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-mcp-policy/extension.ts rename to packages/agent/packages/harness/src/extensions/posthog-mcp-policy/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-mcp-policy/index.ts b/packages/agent/packages/harness/src/extensions/posthog-mcp-policy/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-mcp-policy/index.ts rename to packages/agent/packages/harness/src/extensions/posthog-mcp-policy/index.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-mcp-policy/products.test.ts b/packages/agent/packages/harness/src/extensions/posthog-mcp-policy/products.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-mcp-policy/products.test.ts rename to packages/agent/packages/harness/src/extensions/posthog-mcp-policy/products.test.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-mcp-policy/products.ts b/packages/agent/packages/harness/src/extensions/posthog-mcp-policy/products.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-mcp-policy/products.ts rename to packages/agent/packages/harness/src/extensions/posthog-mcp-policy/products.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/extension.test.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/extension.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/extension.test.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/extension.test.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/extension.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/extension.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/gateway-auth.test.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/gateway-auth.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/gateway-auth.test.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/gateway-auth.test.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/gateway-auth.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/gateway-auth.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/gateway-auth.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/gateway-auth.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/gateway.test.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/gateway.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/gateway.test.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/gateway.test.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/gateway.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/gateway.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/gateway.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/gateway.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/index.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/index.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/index.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/model-catalog.test.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/model-catalog.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/model-catalog.test.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/model-catalog.test.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/model-catalog.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/model-catalog.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/model-catalog.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/model-catalog.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/models.test.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/models.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/models.test.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/models.test.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/models.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/models.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/models.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/models.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/oauth.test.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/oauth.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/oauth.test.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/oauth.test.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/oauth.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/oauth.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/oauth.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/oauth.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/provider.test.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/provider.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/provider.test.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/provider.test.ts diff --git a/products/desktop/packages/harness/src/extensions/posthog-provider/provider.ts b/packages/agent/packages/harness/src/extensions/posthog-provider/provider.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/posthog-provider/provider.ts rename to packages/agent/packages/harness/src/extensions/posthog-provider/provider.ts diff --git a/products/desktop/packages/harness/src/extensions/product-engineer/extension.test.ts b/packages/agent/packages/harness/src/extensions/product-engineer/extension.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/product-engineer/extension.test.ts rename to packages/agent/packages/harness/src/extensions/product-engineer/extension.test.ts diff --git a/products/desktop/packages/harness/src/extensions/product-engineer/extension.ts b/packages/agent/packages/harness/src/extensions/product-engineer/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/product-engineer/extension.ts rename to packages/agent/packages/harness/src/extensions/product-engineer/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/product-engineer/index.ts b/packages/agent/packages/harness/src/extensions/product-engineer/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/product-engineer/index.ts rename to packages/agent/packages/harness/src/extensions/product-engineer/index.ts diff --git a/products/desktop/packages/harness/src/extensions/registry.ts b/packages/agent/packages/harness/src/extensions/registry.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/registry.ts rename to packages/agent/packages/harness/src/extensions/registry.ts diff --git a/products/desktop/packages/harness/src/extensions/rtk/commands.test.ts b/packages/agent/packages/harness/src/extensions/rtk/commands.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/rtk/commands.test.ts rename to packages/agent/packages/harness/src/extensions/rtk/commands.test.ts diff --git a/products/desktop/packages/harness/src/extensions/rtk/commands.ts b/packages/agent/packages/harness/src/extensions/rtk/commands.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/rtk/commands.ts rename to packages/agent/packages/harness/src/extensions/rtk/commands.ts diff --git a/products/desktop/packages/harness/src/extensions/rtk/extension.test.ts b/packages/agent/packages/harness/src/extensions/rtk/extension.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/rtk/extension.test.ts rename to packages/agent/packages/harness/src/extensions/rtk/extension.test.ts diff --git a/products/desktop/packages/harness/src/extensions/rtk/extension.ts b/packages/agent/packages/harness/src/extensions/rtk/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/rtk/extension.ts rename to packages/agent/packages/harness/src/extensions/rtk/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/rtk/git-command.ts b/packages/agent/packages/harness/src/extensions/rtk/git-command.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/rtk/git-command.ts rename to packages/agent/packages/harness/src/extensions/rtk/git-command.ts diff --git a/products/desktop/packages/harness/src/extensions/rtk/guidance.test.ts b/packages/agent/packages/harness/src/extensions/rtk/guidance.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/rtk/guidance.test.ts rename to packages/agent/packages/harness/src/extensions/rtk/guidance.test.ts diff --git a/products/desktop/packages/harness/src/extensions/rtk/guidance.ts b/packages/agent/packages/harness/src/extensions/rtk/guidance.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/rtk/guidance.ts rename to packages/agent/packages/harness/src/extensions/rtk/guidance.ts diff --git a/products/desktop/packages/harness/src/extensions/rtk/index.ts b/packages/agent/packages/harness/src/extensions/rtk/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/rtk/index.ts rename to packages/agent/packages/harness/src/extensions/rtk/index.ts diff --git a/products/desktop/packages/harness/src/extensions/skills-store/index.ts b/packages/agent/packages/harness/src/extensions/skills-store/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/skills-store/index.ts rename to packages/agent/packages/harness/src/extensions/skills-store/index.ts diff --git a/products/desktop/packages/harness/src/extensions/skills-store/store-skills.test.ts b/packages/agent/packages/harness/src/extensions/skills-store/store-skills.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/skills-store/store-skills.test.ts rename to packages/agent/packages/harness/src/extensions/skills-store/store-skills.test.ts diff --git a/products/desktop/packages/harness/src/extensions/skills-store/store-skills.ts b/packages/agent/packages/harness/src/extensions/skills-store/store-skills.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/skills-store/store-skills.ts rename to packages/agent/packages/harness/src/extensions/skills-store/store-skills.ts diff --git a/products/desktop/packages/harness/src/extensions/task-system-prompt/cloud.ts b/packages/agent/packages/harness/src/extensions/task-system-prompt/cloud.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/task-system-prompt/cloud.ts rename to packages/agent/packages/harness/src/extensions/task-system-prompt/cloud.ts diff --git a/products/desktop/packages/harness/src/extensions/task-system-prompt/extension.test.ts b/packages/agent/packages/harness/src/extensions/task-system-prompt/extension.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/task-system-prompt/extension.test.ts rename to packages/agent/packages/harness/src/extensions/task-system-prompt/extension.test.ts diff --git a/products/desktop/packages/harness/src/extensions/task-system-prompt/extension.ts b/packages/agent/packages/harness/src/extensions/task-system-prompt/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/task-system-prompt/extension.ts rename to packages/agent/packages/harness/src/extensions/task-system-prompt/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/task-system-prompt/index.ts b/packages/agent/packages/harness/src/extensions/task-system-prompt/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/task-system-prompt/index.ts rename to packages/agent/packages/harness/src/extensions/task-system-prompt/index.ts diff --git a/products/desktop/packages/harness/src/extensions/task-system-prompt/prompt.test.ts b/packages/agent/packages/harness/src/extensions/task-system-prompt/prompt.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/task-system-prompt/prompt.test.ts rename to packages/agent/packages/harness/src/extensions/task-system-prompt/prompt.test.ts diff --git a/products/desktop/packages/harness/src/extensions/task-system-prompt/prompt.ts b/packages/agent/packages/harness/src/extensions/task-system-prompt/prompt.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/task-system-prompt/prompt.ts rename to packages/agent/packages/harness/src/extensions/task-system-prompt/prompt.ts diff --git a/products/desktop/packages/harness/src/extensions/task-system-prompt/skills.ts b/packages/agent/packages/harness/src/extensions/task-system-prompt/skills.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/task-system-prompt/skills.ts rename to packages/agent/packages/harness/src/extensions/task-system-prompt/skills.ts diff --git a/products/desktop/packages/harness/src/extensions/task-system-prompt/task-summary.ts b/packages/agent/packages/harness/src/extensions/task-system-prompt/task-summary.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/task-system-prompt/task-summary.ts rename to packages/agent/packages/harness/src/extensions/task-system-prompt/task-summary.ts diff --git a/products/desktop/packages/harness/src/extensions/web-access/extension.ts b/packages/agent/packages/harness/src/extensions/web-access/extension.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/web-access/extension.ts rename to packages/agent/packages/harness/src/extensions/web-access/extension.ts diff --git a/products/desktop/packages/harness/src/extensions/web-access/index.ts b/packages/agent/packages/harness/src/extensions/web-access/index.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/web-access/index.ts rename to packages/agent/packages/harness/src/extensions/web-access/index.ts diff --git a/products/desktop/packages/harness/src/extensions/web-access/render.test.ts b/packages/agent/packages/harness/src/extensions/web-access/render.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/web-access/render.test.ts rename to packages/agent/packages/harness/src/extensions/web-access/render.test.ts diff --git a/products/desktop/packages/harness/src/extensions/web-access/render.ts b/packages/agent/packages/harness/src/extensions/web-access/render.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/web-access/render.ts rename to packages/agent/packages/harness/src/extensions/web-access/render.ts diff --git a/products/desktop/packages/harness/src/extensions/web-access/web-fetch.test.ts b/packages/agent/packages/harness/src/extensions/web-access/web-fetch.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/web-access/web-fetch.test.ts rename to packages/agent/packages/harness/src/extensions/web-access/web-fetch.test.ts diff --git a/products/desktop/packages/harness/src/extensions/web-access/web-fetch.ts b/packages/agent/packages/harness/src/extensions/web-access/web-fetch.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/web-access/web-fetch.ts rename to packages/agent/packages/harness/src/extensions/web-access/web-fetch.ts diff --git a/products/desktop/packages/harness/src/extensions/web-access/web-search.test.ts b/packages/agent/packages/harness/src/extensions/web-access/web-search.test.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/web-access/web-search.test.ts rename to packages/agent/packages/harness/src/extensions/web-access/web-search.test.ts diff --git a/products/desktop/packages/harness/src/extensions/web-access/web-search.ts b/packages/agent/packages/harness/src/extensions/web-access/web-search.ts similarity index 100% rename from products/desktop/packages/harness/src/extensions/web-access/web-search.ts rename to packages/agent/packages/harness/src/extensions/web-access/web-search.ts diff --git a/products/desktop/packages/harness/src/index.ts b/packages/agent/packages/harness/src/index.ts similarity index 100% rename from products/desktop/packages/harness/src/index.ts rename to packages/agent/packages/harness/src/index.ts diff --git a/products/desktop/packages/harness/src/project-trust.test.ts b/packages/agent/packages/harness/src/project-trust.test.ts similarity index 100% rename from products/desktop/packages/harness/src/project-trust.test.ts rename to packages/agent/packages/harness/src/project-trust.test.ts diff --git a/products/desktop/packages/harness/src/project-trust.ts b/packages/agent/packages/harness/src/project-trust.ts similarity index 100% rename from products/desktop/packages/harness/src/project-trust.ts rename to packages/agent/packages/harness/src/project-trust.ts diff --git a/products/desktop/packages/harness/src/runtime.test.ts b/packages/agent/packages/harness/src/runtime.test.ts similarity index 100% rename from products/desktop/packages/harness/src/runtime.test.ts rename to packages/agent/packages/harness/src/runtime.test.ts diff --git a/products/desktop/packages/harness/src/runtime.ts b/packages/agent/packages/harness/src/runtime.ts similarity index 100% rename from products/desktop/packages/harness/src/runtime.ts rename to packages/agent/packages/harness/src/runtime.ts diff --git a/products/desktop/packages/harness/tsconfig.json b/packages/agent/packages/harness/tsconfig.json similarity index 100% rename from products/desktop/packages/harness/tsconfig.json rename to packages/agent/packages/harness/tsconfig.json diff --git a/products/desktop/packages/harness/tsup.config.ts b/packages/agent/packages/harness/tsup.config.ts similarity index 100% rename from products/desktop/packages/harness/tsup.config.ts rename to packages/agent/packages/harness/tsup.config.ts diff --git a/products/desktop/packages/agent/pnpm-lock.yaml b/packages/agent/pnpm-lock.yaml similarity index 50% rename from products/desktop/packages/agent/pnpm-lock.yaml rename to packages/agent/pnpm-lock.yaml index b0194c7540b8..095feb219f2a 100644 --- a/products/desktop/packages/agent/pnpm-lock.yaml +++ b/packages/agent/pnpm-lock.yaml @@ -15,46 +15,82 @@ catalogs: '@earendil-works/pi-coding-agent': specifier: 0.84.1 version: 0.84.1 + '@earendil-works/pi-tui': + specifier: 0.84.1 + version: 0.84.1 overrides: - '@modelcontextprotocol/sdk': 1.29.0 - '@isaacs/brace-expansion': 5.0.1 - path-to-regexp: 8.4.2 + node-abi: ^3.92.0 + zod@^4.0.0: 4.4.3 + react: 19.2.6 + react-dom: 19.2.6 + react-test-renderer: 19.2.6 + '@types/react': ^19.2.15 + '@types/react-dom': ^19.2.3 + '@posthog/quill>@base-ui/react': ^1.3.0 + node-gyp>undici: 8.5.0 + vite: npm:rolldown-vite@7.3.1 + protobufjs: 7.6.5 + axios: 1.18.1 + hono: 4.12.28 + '@xmldom/xmldom': 0.8.13 + node-forge: 1.4.0 + simple-git: 3.36.0 + drizzle-orm: 0.45.2 fast-uri: 3.1.4 '@hono/node-server': 1.19.13 + lodash: 4.18.0 + serialize-javascript: 7.0.5 + '@electron/get>undici': 7.28.0 + rollup: 4.59.0 + brace-expansion@1: 1.1.16 + brace-expansion@2: 2.1.2 + ws@7: 7.5.11 + ws@8: 8.21.0 + path-to-regexp@8: 8.4.2 qs: 6.15.3 + smol-toml: 1.6.1 importers: .: + devDependencies: + '@biomejs/biome': + specifier: 2.2.4 + version: 2.2.4 + turbo: + specifier: ^2.9.16 + version: 2.9.18 + + packages/agent: dependencies: '@agentclientprotocol/sdk': specifier: 1.1.0 version: 1.1.0(zod@4.4.3) '@anthropic-ai/claude-agent-sdk': - specifier: 0.3.197 - version: 0.3.197(@anthropic-ai/sdk@0.109.0(zod@4.4.3))(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(zod@4.4.3) + specifier: 0.3.270 + version: 0.3.270(@anthropic-ai/sdk@0.109.0(zod@4.4.3))(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(zod@4.4.3) '@anthropic-ai/sdk': specifier: 0.109.0 version: 0.109.0(zod@4.4.3) '@earendil-works/pi-agent-core': specifier: 'catalog:' - version: 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) + version: 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) '@earendil-works/pi-ai': specifier: 'catalog:' - version: 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) + version: 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) '@earendil-works/pi-coding-agent': specifier: 'catalog:' - version: 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) + version: 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) '@hono/node-server': specifier: 1.19.13 - version: 1.19.13(hono@4.12.31) + version: 1.19.13(hono@4.12.28) '@modelcontextprotocol/sdk': specifier: 1.29.0 version: 1.29.0(zod@4.4.3) '@openai/codex': - specifier: 0.144.0 - version: 0.144.0 + specifier: 0.154.0 + version: 0.154.0 '@opentelemetry/api': specifier: ^1.9.1 version: 1.9.1 @@ -69,16 +105,16 @@ importers: version: 0.208.0(@opentelemetry/api@1.9.1) '@opentelemetry/resources': specifier: ^2.0.0 - version: 2.10.0(@opentelemetry/api@1.9.1) + version: 2.5.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-logs': specifier: ^0.208.0 version: 0.208.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-trace-base': specifier: ^2.8.0 - version: 2.10.0(@opentelemetry/api@1.9.1) + version: 2.8.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': specifier: ^1.28.0 - version: 1.43.0 + version: 1.39.0 '@types/jsonwebtoken': specifier: ^9.0.10 version: 9.0.10 @@ -87,19 +123,19 @@ importers: version: 14.0.3 fflate: specifier: ^0.8.2 - version: 0.8.3 + version: 0.8.2 hono: - specifier: ^4.11.7 - version: 4.12.31 + specifier: 4.12.28 + version: 4.12.28 jsonwebtoken: specifier: ^9.0.2 version: 9.0.3 + lru-cache: + specifier: ^11.1.0 + version: 11.2.5 minimatch: specifier: ^10.0.3 - version: 10.1.1 - tar: - specifier: ^7.5.19 - version: 7.5.21 + version: 10.1.2 uuid: specifier: 13.0.0 version: 13.0.0 @@ -107,91 +143,218 @@ importers: specifier: ^0.3.3 version: 0.3.3 zod: - specifier: ^4.2.0 + specifier: 4.4.3 version: 4.4.3 devDependencies: + '@posthog/agent-contracts': + specifier: workspace:* + version: link:../agent-contracts + '@posthog/git': + specifier: workspace:* + version: link:../git + '@posthog/harness': + specifier: workspace:* + version: link:../harness '@types/bun': - specifier: latest + specifier: 1.3.14 version: 1.3.14 - '@types/tar': - specifier: ^6.1.13 - version: 6.1.13 msw: specifier: ^2.12.7 - version: 2.15.0(@types/node@24.10.1)(typescript@5.9.3) + version: 2.12.8(@types/node@25.2.0)(typescript@5.9.3) tsup: specifier: ^8.5.1 - version: 8.5.1(jiti@2.7.0)(postcss@8.5.22)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.9.0) - tsx: - specifier: ^4.20.6 - version: 4.21.0 + version: 8.5.1(@swc/core@1.15.43)(jiti@2.7.0)(postcss@8.5.23)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.9.0) + typescript: + specifier: ^5.5.0 + version: 5.9.3 + vitest: + specifier: ^4.1.8 + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.2.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) + + packages/agent-contracts: + dependencies: + zod: + specifier: 4.4.3 + version: 4.4.3 + devDependencies: + '@agentclientprotocol/sdk': + specifier: 0.19.0 + version: 0.19.0(zod@4.4.3) + tsup: + specifier: ^8.5.1 + version: 8.5.1(@swc/core@1.15.43)(jiti@2.7.0)(postcss@8.5.23)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.9.0) + typescript: + specifier: ^5.5.0 + version: 5.9.3 + vitest: + specifier: ^4.1.8 + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.2.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) + + packages/enricher: + dependencies: + '@posthog/agent-contracts': + specifier: workspace:* + version: link:../agent-contracts + web-tree-sitter: + specifier: ^0.24.7 + version: 0.24.7 + devDependencies: + tree-sitter-cli: + specifier: ^0.26.6 + version: 0.26.8 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@swc/core@1.15.43)(jiti@2.7.0)(postcss@8.5.23)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.9.0) typescript: specifier: ^5.5.0 version: 5.9.3 vitest: specifier: ^4.1.8 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.10.1)(msw@2.15.0(@types/node@24.10.1)(typescript@5.9.3))(vite@8.1.5(@types/node@24.10.1)(esbuild@0.27.1)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.9.0)) + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.2.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) + + packages/git: + dependencies: + '@posthog/agent-contracts': + specifier: workspace:* + version: link:../agent-contracts + git-url-parse: + specifier: ^16.1.0 + version: 16.1.0 + simple-git: + specifier: 3.36.0 + version: 3.36.0 + devDependencies: + typescript: + specifier: ^5.5.0 + version: 5.9.3 + vitest: + specifier: ^4.1.8 + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.2.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) + + packages/harness: + dependencies: + '@earendil-works/pi-ai': + specifier: 'catalog:' + version: 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) + '@earendil-works/pi-coding-agent': + specifier: 'catalog:' + version: 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) + '@earendil-works/pi-tui': + specifier: 'catalog:' + version: 0.84.1 + '@modelcontextprotocol/sdk': + specifier: ^1.29.0 + version: 1.29.0(zod@4.4.3) + '@posthog/agent-contracts': + specifier: workspace:* + version: link:../agent-contracts + '@posthog/enricher': + specifier: workspace:* + version: link:../enricher + '@posthog/git': + specifier: workspace:* + version: link:../git + fflate: + specifier: ^0.8.2 + version: 0.8.3 + lru-cache: + specifier: ^11.1.0 + version: 11.2.5 + turndown: + specifier: ^7.2.4 + version: 7.2.4 + typebox: + specifier: 1.3.7 + version: 1.3.7 + zod: + specifier: 4.4.3 + version: 4.4.3 + devDependencies: + '@types/node': + specifier: ^22.0.0 + version: 22.20.0 + '@types/turndown': + specifier: ^5.0.6 + version: 5.0.6 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@swc/core@1.15.43)(jiti@2.7.0)(postcss@8.5.23)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.9.0) + typescript: + specifier: ^5.5.0 + version: 5.9.3 + vitest: + specifier: ^4.1.8 + version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@22.20.0)(typescript@5.9.3))(vite@7.3.5(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) packages: + '@agentclientprotocol/sdk@0.19.0': + resolution: {integrity: sha512-U9I8ws9WTOk6jCBAWpXefGSDgVXn14/kV6HFzwWGcstQ02mOQgClMAROHmoIn9GqZbDBDEOkdIbP4P4TEMQdug==} + peerDependencies: + zod: 4.4.3 + '@agentclientprotocol/sdk@1.1.0': resolution: {integrity: sha512-NT2KqphUJ3w6EksUL51ZhJgIYgq/ZLGcBPkyMKgRSO5PMVwe9DnKKX+Htnvk6KHh6dUuh34UHK4gKp+4te1Mdg==} peerDependencies: - zod: ^3.25.0 || ^4.0.0 + zod: 4.4.3 - '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.197': - resolution: {integrity: sha512-jC6WvH5Hr6APTfbMjo4nC6LlyMMqbpCMwiHXIw7/AsQXIHQhZ+cRRMesQlV6UFI1l3O53gLZHzsG9cXwfrPHKw==} + '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.270': + resolution: {integrity: sha512-nk7BP+i559rheYz9DIwAfevd4DulQXP0mXPP+MeO2fGuIGFmzhE/c0JRm9YswXv5HdaYJvSzjGIB7dVA01NehA==} cpu: [arm64] os: [darwin] - '@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.197': - resolution: {integrity: sha512-ZQNvGkMrTyatBlHTIQ4w2i2aLBuvq355UP/FDLnVXIH8l23RsL1x/0w9P+dqB7EmY9OZi/cPxSrpskpo+dZWLA==} + '@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.270': + resolution: {integrity: sha512-89Uql8Oalm52ojdZZeNLU24LKrU+WG9QR7d6YP9ly4aY0YvQUJDaTosbDkijQngUETbPBFdKuVp6fNM8x0Zt3Q==} cpu: [x64] os: [darwin] - '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.197': - resolution: {integrity: sha512-VuIGXsLGK/aqSQ0tTBqqPVNzjefWS5SWnK8mlYyQitT4s5UDzHXJm0UZBTGxRtlcS0e2+QAHKwbGBCq1ZKSXjg==} + '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.270': + resolution: {integrity: sha512-2BlLk2MAohWG2h43RKcjCA4ooMfBxzKf4yyYfOVv1DtYr8zPU876MHCT1VXB2BaemjKA0pdYJJBzH6pncwx6MQ==} cpu: [arm64] os: [linux] + libc: [musl] - '@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.197': - resolution: {integrity: sha512-pWhQgCtAft4EGM4Zn24HRad1a/k2u6oA+2uM/KCdjehfKtooDiHfMNd1yzXY/n9AEBWP0RHB2Vz3mJ30X2pVAg==} + '@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.270': + resolution: {integrity: sha512-iHPYqwetyeO4tZPzXyKZz0hUh2fLpwu/+biGTxxynikG3XrYknovZ/znGDA3TxjSFurqHf5IIDA+SOjh9OPs0A==} cpu: [arm64] os: [linux] + libc: [glibc] - '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.197': - resolution: {integrity: sha512-3Tuy7XhD4UIKE4A4RPmKJcbL7Q/3dcB1hEWQt2lKP7c/DlixeEv+tRzvpnFZKhFX2hy0tkBk3QjkozSAacMC/w==} + '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.270': + resolution: {integrity: sha512-mzH3lnbzrbDGrTf75jLEmkbvkKRLLgmjLaWvf3QuUsgcw+aU69aOY0mW33oOrsuq5zg330uI3B4e68f4LbxNIA==} cpu: [x64] os: [linux] + libc: [musl] - '@anthropic-ai/claude-agent-sdk-linux-x64@0.3.197': - resolution: {integrity: sha512-AUccrbdcv4Hy/GteP/gYLjG/zDP+fe2BFtDMctEfRFVz40DazYDcOyW1+nIgSTQtxf5jSTAVVf3cNuXB2CZwlw==} + '@anthropic-ai/claude-agent-sdk-linux-x64@0.3.270': + resolution: {integrity: sha512-ADaqz2viyAd0GUxdupYLX/K0YJb46xckNpEeWxyLK/9+26b/R5stbaGDyL29fIzyq1ymnNUOaCgEWEemgX0kEA==} cpu: [x64] os: [linux] + libc: [glibc] - '@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.197': - resolution: {integrity: sha512-Wx8uiAKBenDuL8lWQmrqnX5ppljaH5unQ9cKiCz2/9Kgf09dgnrwbX8n/FhndCZR8PmYw539eWwYVrSVc/bl6w==} + '@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.270': + resolution: {integrity: sha512-Pexeu26cLZByhs6VlrawNYAEu+QE2YptvwNkXsmpLRm7Q/C/M0N/BZBmuUcikXrQQ9cuVzSjuuTTpZt64mvtLA==} cpu: [arm64] os: [win32] - '@anthropic-ai/claude-agent-sdk-win32-x64@0.3.197': - resolution: {integrity: sha512-ZXJO/VvR3SI4G0gwthWeFXWdHB5RXPu3rtfGRcKZ/YgtDeW17rQ+LZIJTk2ywzbLb8EvlghR5JPgn293hC179Q==} + '@anthropic-ai/claude-agent-sdk-win32-x64@0.3.270': + resolution: {integrity: sha512-9UyfFcUYsyUZqSe/xX9nIJ1Og6i8FxhlQ35BDi79Ik5He87XFxEIGUvJuMcl7Mq2e3panyhekELFE+9H79xKdw==} cpu: [x64] os: [win32] - '@anthropic-ai/claude-agent-sdk@0.3.197': - resolution: {integrity: sha512-XNIi8W1tb+QfMkcK+5kepOC6BsxG8wtupd72H+pIPzIJypVQhHy7FoX+KBMtTRYwtl+5dsjKyABhjWXebeUilw==} + '@anthropic-ai/claude-agent-sdk@0.3.270': + resolution: {integrity: sha512-sSfcm5Nhb+WHeBCxqeHRRQMUKPmFTL+zgv5xcRUVaFMLttfNEbn3IZJE+fLJJmy4h3J8zdc5sXdSa1JxyB8ppQ==} engines: {node: '>=18.0.0'} peerDependencies: '@anthropic-ai/sdk': '>=0.93.0' - '@modelcontextprotocol/sdk': 1.29.0 - zod: ^4.0.0 + '@modelcontextprotocol/sdk': ^1.29.0 + zod: 4.4.3 '@anthropic-ai/sdk@0.109.0': resolution: {integrity: sha512-y7P4eLyW5uNut4fXpOUEHqhJwx7dnxrWAfCQE4Lcgm0hSFQuIeHa7CWEKE5dFolEjQJE/RFKkppjri05r2OK/Q==} hasBin: true peerDependencies: - zod: ^3.25.0 || ^4.0.0 + zod: 4.4.3 peerDependenciesMeta: zod: optional: true @@ -200,11 +363,18 @@ packages: resolution: {integrity: sha512-LAmu761tSN9r66ixvmciswUj/ZC+1Q4iAfpedTfSVLeswRwnY3n2Nb6Tsk+cLPP28aLOPWeMgIuTuCcMC6W/iw==} hasBin: true peerDependencies: - zod: ^3.25.0 || ^4.0.0 + zod: 4.4.3 peerDependenciesMeta: zod: optional: true + '@asamuzakjp/css-color@3.2.0': + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + '@aws-crypto/sha256-browser@5.2.0': resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} @@ -222,90 +392,175 @@ packages: resolution: {integrity: sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/core@3.976.0': - resolution: {integrity: sha512-0cjRaEdlVoOrsNb9pP5q1Syyc8pXw5xSj2Np2ryReRTr9FppIIRVSdZK4lbnfmc2Hvgux/xBOUU6baB7z8//uA==} + '@aws-sdk/core@3.974.23': + resolution: {integrity: sha512-MiWR/uWjxjFXGzrE0Ghc5lWxUxzHsUWFhV+OX7M4cR9SrmrnZs6TXavnCWnzzdwJeFri34xQo81rvGNzK3c4BQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-env@3.972.60': - resolution: {integrity: sha512-BAkxdoe7tpDDqCghGpuOeHQRbm/2znVvOQm0AvpQbA2tbfMN46doN4zx65fv85ImP3KADwc2zQPmbrlI9MPfMg==} + '@aws-sdk/credential-provider-env@3.972.49': + resolution: {integrity: sha512-liB3yQNHCM9k/gu/w36XHMKPluT7HTlnGUhRbBGSISDQkcr/Sy1zsZabiuvQj8WG5yW573u9RehrBvvnIQ9OEQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-http@3.972.62': - resolution: {integrity: sha512-g/0fGqKTb9xpKdd9AtpmV5Eo3DFKbnkpA2+w0peISSlu7NfAoWOuYBFxsu+yWBtxU89ka55ezoZBCbFaS8pjYQ==} + '@aws-sdk/credential-provider-http@3.972.51': + resolution: {integrity: sha512-XET0H2oofciJ5lMRWNIvRjAP7Q3wv2XT+JtJJEdhPWUMwe3TvQ9qcxonpu7vXmNngncvFpi4E2It+Tamas/naA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-ini@3.973.5': - resolution: {integrity: sha512-ylubazcRfq2TVus/qXucSXeC42Qdjp5HQxTu68K/BsdMiZlcSLD1zkpoCgApXZX1Y6YJhtGGs7ZHhO/GuIgBlw==} + '@aws-sdk/credential-provider-ini@3.972.56': + resolution: {integrity: sha512-IAmc61hbgQiHht9U3x0tnRwz0lzdwOwD/i9voRgdJrKamF+JtmrBOsW9GwB7mfFonNWOWL4qARWYrF8veEMe3w==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-login@3.972.67': - resolution: {integrity: sha512-CCygIKJ9YbI3n84OClSaSppkgKKHVj2TGT33c6FRORZrYNZQ1POmD+ip0FLYokiJAK7sSdc3YVkOsBm90oxWMQ==} + '@aws-sdk/credential-provider-login@3.972.55': + resolution: {integrity: sha512-hBBkANo3cDn+h2qxxzER4a+J8JCO9o9Z/YYmU7iky6AcaarX5RRdRcHNC6SLdwY0vAXQygn6soUbDqPn3GghaA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.71': - resolution: {integrity: sha512-HIg7Q2osBzajQwL+1Vkyh2E7Gim3eTNb9RHIsOxDGjW0eZg4oEKtRs5sioCnc73ilhaOm4gX2lHVF8J7+nt2rg==} + '@aws-sdk/credential-provider-node@3.972.58': + resolution: {integrity: sha512-OyCLVmSI7pZO8hxwNVX6pXhTVlJqRBTp+ijdEfJSUj0RyjHnF602OfAarOzGq6wkGodeFkYBt8MmJ6A6ycRgWw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-process@3.972.60': - resolution: {integrity: sha512-YIo3f99hM43QdYG8hDzwGemnR/pU95b0kramqSJUTleCqaB7+HwKf7YZFHqvOgTqZTPx/mRmNIqoDRr3U0Z3Tw==} + '@aws-sdk/credential-provider-process@3.972.49': + resolution: {integrity: sha512-C8h36lBuC/RnBSsjlO+dn6xZm3KbAl5vpJaVPAfQnMmz2/OISmKOc8XZcqMQgO2ADwBYNRMM6Kf3vz9G/TulMQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-sso@3.973.4': - resolution: {integrity: sha512-BPdmL8sSBOCv4ngZ+3LHxyc3CNqDCEK37CHioCk7zGrTMY5sUtkH8q+o6qA80nn6w3/fyBPGNE7OIRlmoOxRQA==} + '@aws-sdk/credential-provider-sso@3.972.55': + resolution: {integrity: sha512-1FkOz74Ea5QGS9jtIoXp55T/IkSS3spv+nLTT07fRY/+T5xmEOqaYBVIaEmX4zTNvbV6g2lrtlaVKWEoNyJt3w==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-web-identity@3.972.66': - resolution: {integrity: sha512-kSAziJboOmZmsR9/MTbiNjowl2BPes1bQuJpne4qAZ62ubi8fjfr/aupJSQje6udBoYxXTQbsL0e0kby2la3ng==} + '@aws-sdk/credential-provider-web-identity@3.972.55': + resolution: {integrity: sha512-g2BoECD1q01kTPByi56+VLVvdWDzMkKIcr77qixpqH0okw2t0U5CoPv+6S8v/D1Y2Wa6QKKtn6XAtDzP+Kfpvg==} engines: {node: '>=20.0.0'} - '@aws-sdk/eventstream-handler-node@3.972.29': - resolution: {integrity: sha512-t3tKQRTVXsI2QNPE3CaNjHl0wRO9Xi3acZkAyti2RQsiFmZ9Gi0kArX2ighlRJ1BtDVuul413gThAgzyTfgmWA==} + '@aws-sdk/eventstream-handler-node@3.972.22': + resolution: {integrity: sha512-tqPJv0dz4+O0hWGm1a6YekcMZyPhDFs/zH73Von7icaVT5n0Jqvm86typ3jRrG+qoUdPhALOnboRLTmnWQTlYQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-eventstream@3.972.24': - resolution: {integrity: sha512-oykin4mDWxNOuYQ7SF1cHzgYeuFEkF4cdRwgvjFFbIklkx09qIFBiOgsORafG9sXZFO3TayMmQuAQYgADXhI8w==} + '@aws-sdk/middleware-eventstream@3.972.18': + resolution: {integrity: sha512-OHpk8YoZi3yexPq8aFt1vN1IxA2zLKvsIR5GpWYylX/ve6kQmY7wxHNSFy/D3t2apMZ16rs76Co4dJWcDyIk3A==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-websocket@3.972.42': - resolution: {integrity: sha512-dw+GP8DC7QC2C8tUoK7DI8BnrNAjz8tb+uBHSrD2qJvxkCf58kTtFr98pljSrk+umU4n4HDW4eU2k7C2dWMzsg==} + '@aws-sdk/middleware-websocket@3.972.31': + resolution: {integrity: sha512-ps1rumU1LybSFHaW9dTDgkhCMJLVaedEY78kKSzUDDY+b9974/g6aiaYYA0U9WV0oL4CJCJrVWG+EZ/qr4or7g==} engines: {node: '>= 14.0.0'} - '@aws-sdk/nested-clients@3.997.34': - resolution: {integrity: sha512-Y9REVrSwmLM+Qy6sZJ7ofMC2S3Hr3tPP/4CzL5U1olPP7OGoF+6+Px0E49cVQBtSxJtyeLJMf0UaBErfeSahAA==} + '@aws-sdk/nested-clients@3.997.23': + resolution: {integrity: sha512-gO93ZPsI2bxeFZD42f1/qjDw6FAZkNZcKRO94LIiT03fzOmcJ9e/tunxjVjA1Rl69ClmVJzz8H3G9CdKef10PA==} engines: {node: '>=20.0.0'} - '@aws-sdk/signature-v4-multi-region@3.996.41': - resolution: {integrity: sha512-QMUytg+FQMGouc8gHS00KoYih3+N6cqmVI/pQGOIo7Nr7OpQaiXjSYOuL+vsPZ1tymY4LAQ8MYcHJmws5LRxng==} + '@aws-sdk/signature-v4-multi-region@3.996.35': + resolution: {integrity: sha512-6L/VWs+Wch2stHemCGTmUNqKLMzURxQDK5boNG3Jn3kAOp71meDUuS5sbObpEvFxHDq0uWeSLFDNSYsjNt+Dlg==} engines: {node: '>=20.0.0'} '@aws-sdk/token-providers@3.1048.0': resolution: {integrity: sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==} engines: {node: '>=20.0.0'} - '@aws-sdk/token-providers@3.1092.0': - resolution: {integrity: sha512-hBYUAr6iBLNFcsiWTgtBb0stdSw39VOUq4Sp4A5caCNf66BAZplWN4FleKrVpJx5li2YgdnK2DqoFSMWC642FQ==} + '@aws-sdk/token-providers@3.1074.0': + resolution: {integrity: sha512-pv80IzgGW4RnXWtft692chZOM9i6PhebVsLCcnaM4dBEPZva2fE6FXAHs76G7Rc7s3yGyX/68G0nZMrUy+Vmpg==} engines: {node: '>=20.0.0'} - '@aws-sdk/types@3.974.2': - resolution: {integrity: sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA==} + '@aws-sdk/types@3.973.13': + resolution: {integrity: sha512-pEHZqRkAlHfnfAU9tK+WpKv/gBNjGJrHMgA3A0iYRGyswBS2t0pfez+lWlwktb3Bqa0ovh7w/QJTFwp3fDxLNg==} engines: {node: '>=20.0.0'} '@aws-sdk/util-locate-window@3.965.8': resolution: {integrity: sha512-uUbMs1cBZPafD0ohUj6EwNf0fPZ534NvBxHox4hjX+0Rxq5paSYUem7+hi833pYrzrcnBATKIYpR02MDXT5M9g==} engines: {node: '>=20.0.0'} - '@aws-sdk/xml-builder@3.972.36': - resolution: {integrity: sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA==} + '@aws-sdk/xml-builder@3.972.31': + resolution: {integrity: sha512-SzE4Pgyl+hDF+BuyuzxUSpwnuUu9lJuO1YGgteG89/4Qv0+2IQiVQqdbPV32IozLvXWQChPQcdkk/sKvb1QHiQ==} engines: {node: '>=20.0.0'} - '@aws/lambda-invoke-store@0.3.0': - resolution: {integrity: sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ==} + '@aws/lambda-invoke-store@0.2.4': + resolution: {integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==} engines: {node: '>=18.0.0'} - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} engines: {node: '>=6.9.0'} + '@biomejs/biome@2.2.4': + resolution: {integrity: sha512-TBHU5bUy/Ok6m8c0y3pZiuO/BZoY/OcGxoLlrfQof5s8ISVwbVBdFINPQZyFfKwil8XibYWb7JMwnT8wT4WVPg==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@2.2.4': + resolution: {integrity: sha512-RJe2uiyaloN4hne4d2+qVj3d3gFJFbmrr5PYtkkjei1O9c+BjGXgpUPVbi8Pl8syumhzJjFsSIYkcLt2VlVLMA==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@2.2.4': + resolution: {integrity: sha512-cFsdB4ePanVWfTnPVaUX+yr8qV8ifxjBKMkZwN7gKb20qXPxd/PmwqUH8mY5wnM9+U0QwM76CxFyBRJhC9tQwg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@2.2.4': + resolution: {integrity: sha512-7TNPkMQEWfjvJDaZRSkDCPT/2r5ESFPKx+TEev+I2BXDGIjfCZk2+b88FOhnJNHtksbOZv8ZWnxrA5gyTYhSsQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@biomejs/cli-linux-arm64@2.2.4': + resolution: {integrity: sha512-M/Iz48p4NAzMXOuH+tsn5BvG/Jb07KOMTdSVwJpicmhN309BeEyRyQX+n1XDF0JVSlu28+hiTQ2L4rZPvu7nMw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@biomejs/cli-linux-x64-musl@2.2.4': + resolution: {integrity: sha512-m41nFDS0ksXK2gwXL6W6yZTYPMH0LughqbsxInSKetoH6morVj43szqKx79Iudkp8WRT5SxSh7qVb8KCUiewGg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@biomejs/cli-linux-x64@2.2.4': + resolution: {integrity: sha512-orr3nnf2Dpb2ssl6aihQtvcKtLySLta4E2UcXdp7+RTa7mfJjBgIsbS0B9GC8gVu0hjOu021aU8b3/I1tn+pVQ==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@biomejs/cli-win32-arm64@2.2.4': + resolution: {integrity: sha512-NXnfTeKHDFUWfxAefa57DiGmu9VyKi0cDqFpdI+1hJWQjGJhJutHPX0b5m+eXvTKOaf+brU+P0JrQAZMb5yYaQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@2.2.4': + resolution: {integrity: sha512-3Y4V4zVRarVh/B/eSHczR4LYoSVyv3Dfuvm3cWs5w/HScccS0+Wt/lHOcDTRYeHjQmMYVC3rIRWqyN2EI52+zg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + '@earendil-works/pi-agent-core@0.84.1': resolution: {integrity: sha512-evyzXYWCLQGmcaBYHlmSku02r8qoN4SGI60GZABo6iV+H+nqX+P9ud8fEZ4GmRq9mUSREvvfX+w9dA9ThF9C6w==} engines: {node: '>=22.19.0'} @@ -336,167 +591,470 @@ packages: resolution: {integrity: sha512-udeXFbgEhJ6JiB0uguwNVNkDy2FENfmtQwPcY+/iJ8GWeq18wkal1tKqa5YyeH0IqtX1vG0cGh8zfSYzyzVuLA==} engines: {node: '>=22.19.0'} - '@emnapi/core@1.11.1': - resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} - - '@emnapi/runtime@1.11.1': - resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] - '@emnapi/wasi-threads@1.2.2': - resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] - '@esbuild/aix-ppc64@0.27.1': - resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.27.1': - resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.27.1': - resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.27.1': - resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.27.1': - resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.27.1': - resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.27.1': - resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.1': - resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.27.1': - resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.27.1': - resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.27.1': - resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.27.1': - resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.27.1': - resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.27.1': - resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.27.1': - resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.27.1': - resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.27.1': - resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.27.1': - resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.1': - resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.27.1': - resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.1': - resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.27.1': - resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.27.1': - resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.27.1': - resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.27.1': - resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.27.1': - resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -505,7 +1063,7 @@ packages: resolution: {integrity: sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==} engines: {node: '>=20.0.0'} peerDependencies: - '@modelcontextprotocol/sdk': 1.29.0 + '@modelcontextprotocol/sdk': ^1.25.2 peerDependenciesMeta: '@modelcontextprotocol/sdk': optional: true @@ -514,37 +1072,37 @@ packages: resolution: {integrity: sha512-TsQLe4i2gvoTtrHje625ngThGBySOgSK3Xo2XRYOdqGN1teR8+I7vchQC46uLJi8OF62YTYA3AhSpumtkhsaKQ==} engines: {node: '>=18.14.1'} peerDependencies: - hono: ^4 + hono: 4.12.28 - '@inquirer/ansi@2.0.7': - resolution: {integrity: sha512-3eTuUO1vH2cZm2ZKHeQxnOqlTi9EfZDGgIe3BL3I4u+rJHocr9Fz86M4fjYABPvFnQG/gGK551HqDiIcETwU6Q==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} + engines: {node: '>=18'} - '@inquirer/confirm@6.1.1': - resolution: {integrity: sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} + engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/core@11.2.1': - resolution: {integrity: sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + '@inquirer/core@10.3.2': + resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} + engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/figures@2.0.7': - resolution: {integrity: sha512-aJ8TBPOGB6f/2qziPfElISTCEd5XOYTFckA2SGjhNmiKzfK/u4ot3v0DUzGVdUnKjN10EqnnEPck36BkyfLnJw==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + engines: {node: '>=18'} - '@inquirer/type@4.0.7': - resolution: {integrity: sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} + engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -559,10 +1117,6 @@ packages: resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==} engines: {node: 20 || >=22} - '@isaacs/fs-minipass@4.0.1': - resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} - engines: {node: '>=18.0.0'} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -570,12 +1124,21 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@kwsites/file-exists@1.1.1': + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + + '@kwsites/promise-deferred@1.1.1': + resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + '@mariozechner/clipboard-darwin-arm64@0.3.9': resolution: {integrity: sha512-BfgV7vCEWZwJwZJw03r6bP5+tf0iI/ANuQYCxi9RNn7FrWB3yzGuMKCrNLRl6V761vXRdL8+OqZ0wd4TqlsNOQ==} engines: {node: '>= 10'} @@ -598,30 +1161,35 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@mariozechner/clipboard-linux-arm64-musl@0.3.9': resolution: {integrity: sha512-AGuJdgKsmJdm4Pych7kv3sqe591ERRaAHW3xjLooiFzn8J+PxUyof++7YZrB5Y5tpnTO+K18Og3taj2NpluCRQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@mariozechner/clipboard-linux-riscv64-gnu@0.3.9': resolution: {integrity: sha512-DXBEAiuMpk7dhS1a9NzNxVAFi1vaKoPu7rQNgY8LIDLGrK3lnIp3nT10DUum+PKVJoJppIP+NAA8IZe4DMNDPw==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] + libc: [glibc] '@mariozechner/clipboard-linux-x64-gnu@0.3.9': resolution: {integrity: sha512-WORrMLd6EpElEME7JRKfSaY34nW1P5LbdgK5YNCS1ncG2LqmITsSMEJ8nh2mpvxb3TxqbOOKgY7k9eMJYlW9Mw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@mariozechner/clipboard-linux-x64-musl@0.3.9': resolution: {integrity: sha512-/DHn+1DrfL6oRaPPWXaOKvonFFrni666fxd+zFqiQEfvBH0tsHVWjq9iqBk0oDp0qaPA72lIMy5BptxISBEhZQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@mariozechner/clipboard-win32-arm64-msvc@0.3.9': resolution: {integrity: sha512-O5FHD3ErkMwMhNzAfu3ggy0ug4z7btZuoQgwwxlzPrwV2bxlD6WDpqBY4NCgICAgZdDKdp+loUEKVAVt8aYnhQ==} @@ -647,75 +1215,69 @@ packages: '@opentelemetry/api': optional: true + '@mixmark-io/domino@2.2.0': + resolution: {integrity: sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==} + '@modelcontextprotocol/sdk@1.29.0': resolution: {integrity: sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==} engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 - zod: ^3.25 || ^4.0 + zod: 4.4.3 peerDependenciesMeta: '@cfworker/json-schema': optional: true - '@mswjs/interceptors@0.41.9': - resolution: {integrity: sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==} + '@mswjs/interceptors@0.41.0': + resolution: {integrity: sha512-edAo9bW53BLYeSK+UPRr2Iz1Fj9DeGMjytvVM0HXRoo750ElWUgPsZPAOTQa12EUiwgDErH2PsFNTLvk1jBxjQ==} engines: {node: '>=18'} - '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} - '@open-draft/deferred-promise@3.0.0': - resolution: {integrity: sha512-XW375UK8/9SqUVNVa6M0yEy8+iTi4QN5VZ7aZuRFQmy76LRwI9wy5F4YIBU6T+eTe2/DNDo8tqu8RHlwLHM6RA==} - '@open-draft/logger@0.3.0': resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - '@openai/codex@0.144.0': - resolution: {integrity: sha512-QFh6f+v5QUx/Vg0HjIl9HB94p7aDLBDkZjc4IXX5RXUcXHPVCZNb6Hl2R49Og/fqW7orgZkeDcgWfRANUa1WoQ==} + '@openai/codex@0.154.0': + resolution: {integrity: sha512-FV/x1OHXYv/ifjf3mXj9ThTTAWcUZN6cGIRQRhRxkKNOPuImu1WW0c8ev1vUkE9XGH90dEnYG1tBjIkxRikg0w==} engines: {node: '>=16'} hasBin: true - '@openai/codex@0.144.0-darwin-arm64': - resolution: {integrity: sha512-rqFAJdOa2I0VRgepVsSZeLxs96+Y+LXTjccOOvH6894FyaFAYPZ/o+6hgpB1iGHxxdoY/DsGa8jrJC8Leqn9Kg==} + '@openai/codex@0.154.0-darwin-arm64': + resolution: {integrity: sha512-HP/vJCH/t2hB9Kg6hotN9UglClJ6/z584fal5lEP14C9gNAgAQS4/kTQC7l5V+BA3TqwDPwINSjul28cX8AYXg==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@openai/codex@0.144.0-darwin-x64': - resolution: {integrity: sha512-4p2jxRbN+Khg5UQzpkzT9upFj+qkEF/abmdvrtflkkWmVKP6Nt+yi8ospdqv9PDqvQ9SotPvX7iXaFaeUTrtmA==} + '@openai/codex@0.154.0-darwin-x64': + resolution: {integrity: sha512-2aqz+72Hop8PF2RYglQ4JnGjm3OlRIrTykJIT0hyLeUgM6NCFy09RgTmqRCoWliKQZjEn9jjZqUEp7QujAj77g==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@openai/codex@0.144.0-linux-arm64': - resolution: {integrity: sha512-k++xhZrn9P3laO00Q92APG6mdOFDD66nUBo+8ExCa1NXi2pjLEMLC4+UNJTUUtUT1PEflOZ5pDKxPXgzaiFFFg==} + '@openai/codex@0.154.0-linux-arm64': + resolution: {integrity: sha512-KmTCB6ST484zeYlPpKP/K5P/gRaYmt6TihVD+zotoe6O9q0JSBP+FYvCz4A/zZXR7xDOHURTSjHp0sD8wWS0YQ==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@openai/codex@0.144.0-linux-x64': - resolution: {integrity: sha512-GmKtQeX+cO9lN7mQD1FEVcXYEMLMgMByHwZdvlluH0bj/+c2ind3hwbRtE3eECFDekNhEiB80Ez0FfbkyFQqoA==} + '@openai/codex@0.154.0-linux-x64': + resolution: {integrity: sha512-a4FI3A8sGtwGrOqltrPbrS2hajrHQG591EwmRfiRoLMb10VxdBtUGW4gu6IJVYENiYGA7k3P4jlRHEoCZU/s9Q==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@openai/codex@0.144.0-win32-arm64': - resolution: {integrity: sha512-e2yGSgwdzrT1SoJMoOzWD58WBEsIaAMZpEchuV2VGkE2T955SG7dn7EyVQTQcy7/rdpE8aEDktZ/1eQQfjkdtQ==} + '@openai/codex@0.154.0-win32-arm64': + resolution: {integrity: sha512-CRUmZnE0Y/a8aLMrrA681EytOGaPaF659wJAiI4I3hsbQjaeYBSPV7PkCjy4Qn5LR/fmwIUORVH+6JaBNQL+tw==} engines: {node: '>=16'} cpu: [arm64] os: [win32] - '@openai/codex@0.144.0-win32-x64': - resolution: {integrity: sha512-QiholLCYqNeYvNM77HOmPtrOFrY0rQc/N9nXt+sQGXO3rEGmcWjpLzujY4Oegl3CLRHoieWqlep3EqEvFBjoIA==} + '@openai/codex@0.154.0-win32-x64': + resolution: {integrity: sha512-Stg2KEJPIKVqPPR1wCverGOR4ey3RR3cvakR07w7FNKQUMzmHaOZomRsP2bR1qOT/67yHsks9rB+MCMfIWXcRA==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -732,14 +1294,20 @@ packages: resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==} engines: {node: '>=8.0.0'} - '@opentelemetry/core@2.10.0': - resolution: {integrity: sha512-/wNZ8twnEQQA4HoHu22+vcsdru6pWPWxW+7w+FlxT6Id7PE/WIbZmVKkte+PF72e0F2dnImFeHD2syyE1Mw6MQ==} + '@opentelemetry/core@2.2.0': + resolution: {integrity: sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/core@2.5.0': + resolution: {integrity: sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.2.0': - resolution: {integrity: sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==} + '@opentelemetry/core@2.8.0': + resolution: {integrity: sha512-hd1Lfh8p545nNz+jq1Ejfz+Mn1hyLuxYn1YzTfFNrxr8urEWMNQLPf1Th8kjOH+HxwawCrtgBp8JpBUR4ZSgww==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -768,14 +1336,20 @@ packages: peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/resources@2.10.0': - resolution: {integrity: sha512-q6MMm2zhggzsHVNbabYwut+a6nbuQQe3URUoxaojM/8K1IBfwwPzvxIjNi2/lI1TFe+fMHMW9MWhrtDLEXEnkA==} + '@opentelemetry/resources@2.2.0': + resolution: {integrity: sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + + '@opentelemetry/resources@2.5.0': + resolution: {integrity: sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/resources@2.2.0': - resolution: {integrity: sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==} + '@opentelemetry/resources@2.8.0': + resolution: {integrity: sha512-qmXQ27ilDbUK/vGMqwL8D4/rhn76C+sherM4wTbjlfknR8Nvfc/hCxjRJPhkzZzUsPiNg16SA31NxMabwttRjg==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' @@ -792,30 +1366,28 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.9.0 <1.10.0' - '@opentelemetry/sdk-trace-base@2.10.0': - resolution: {integrity: sha512-GuYQQT7QD2EeO8lcZLRQzcbOyhqAzL+6WWTKTU9mSUBYBazkEDl+VrQcXQhbB08OWM9anD1aHleVadzulpOaUQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace-base@2.2.0': resolution: {integrity: sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace@2.10.0': - resolution: {integrity: sha512-MfQGq3GRmTh5fM/y+OjaO0vj6+luCB1XO2gfXCalKCfgKw0eHL++sm75DNweC6ohlp+aFvACqeE0fYayqdRaoQ==} + '@opentelemetry/sdk-trace-base@2.8.0': + resolution: {integrity: sha512-mhU4jp+vW0mGbFRd+GeXHvmfA4aDqWjBjLC3pE5XMpLs0IE2ryYb019Ts2AQrOq67gaTF25D91+fgvEHDZEnuQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/semantic-conventions@1.43.0': - resolution: {integrity: sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==} + '@opentelemetry/semantic-conventions@1.39.0': + resolution: {integrity: sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==} + engines: {node: '>=14'} + + '@opentelemetry/semantic-conventions@1.41.1': + resolution: {integrity: sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==} engines: {node: '>=14'} - '@oxc-project/types@0.139.0': - resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -844,221 +1416,163 @@ packages: '@protobufjs/utf8@1.1.2': resolution: {integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==} - '@rolldown/binding-android-arm64@1.1.5': - resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] - - '@rolldown/binding-darwin-arm64@1.1.5': - resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] - - '@rolldown/binding-darwin-x64@1.1.5': - resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] - - '@rolldown/binding-freebsd-x64@1.1.5': - resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [freebsd] - - '@rolldown/binding-linux-arm-gnueabihf@1.1.5': - resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - - '@rolldown/binding-linux-arm64-gnu@1.1.5': - resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - - '@rolldown/binding-linux-arm64-musl@1.1.5': - resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - - '@rolldown/binding-linux-ppc64-gnu@1.1.5': - resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ppc64] - os: [linux] - - '@rolldown/binding-linux-s390x-gnu@1.1.5': - resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [s390x] - os: [linux] - - '@rolldown/binding-linux-x64-gnu@1.1.5': - resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - - '@rolldown/binding-linux-x64-musl@1.1.5': - resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - - '@rolldown/binding-openharmony-arm64@1.1.5': - resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - - '@rolldown/binding-wasm32-wasi@1.1.5': - resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] - - '@rolldown/binding-win32-arm64-msvc@1.1.5': - resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] - - '@rolldown/binding-win32-x64-msvc@1.1.5': - resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - - '@rolldown/pluginutils@1.0.1': - resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - - '@rollup/rollup-android-arm-eabi@4.53.3': - resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} + '@rollup/rollup-android-arm-eabi@4.59.0': + resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.3': - resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} + '@rollup/rollup-android-arm64@4.59.0': + resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.3': - resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} + '@rollup/rollup-darwin-arm64@4.59.0': + resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.3': - resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} + '@rollup/rollup-darwin-x64@4.59.0': + resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.3': - resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} + '@rollup/rollup-freebsd-arm64@4.59.0': + resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.3': - resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} + '@rollup/rollup-freebsd-x64@4.59.0': + resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': - resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} cpu: [arm] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.53.3': - resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} cpu: [arm] os: [linux] + libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.53.3': - resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} + '@rollup/rollup-linux-arm64-gnu@4.59.0': + resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} cpu: [arm64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.53.3': - resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} + '@rollup/rollup-linux-arm64-musl@4.59.0': + resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} cpu: [arm64] os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.59.0': + resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} + cpu: [loong64] + os: [linux] + libc: [glibc] - '@rollup/rollup-linux-loong64-gnu@4.53.3': - resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} + '@rollup/rollup-linux-loong64-musl@4.59.0': + resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} cpu: [loong64] os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.53.3': - resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} + '@rollup/rollup-linux-ppc64-musl@4.59.0': + resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} cpu: [ppc64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.53.3': - resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} cpu: [riscv64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.53.3': - resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} + '@rollup/rollup-linux-riscv64-musl@4.59.0': + resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} cpu: [riscv64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.53.3': - resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} + '@rollup/rollup-linux-s390x-gnu@4.59.0': + resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} cpu: [s390x] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.53.3': - resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} + '@rollup/rollup-linux-x64-gnu@4.59.0': + resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} cpu: [x64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.53.3': - resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} + '@rollup/rollup-linux-x64-musl@4.59.0': + resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} cpu: [x64] os: [linux] + libc: [musl] + + '@rollup/rollup-openbsd-x64@4.59.0': + resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + cpu: [x64] + os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.53.3': - resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} + '@rollup/rollup-openharmony-arm64@4.59.0': + resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.3': - resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} + '@rollup/rollup-win32-arm64-msvc@4.59.0': + resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.3': - resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} + '@rollup/rollup-win32-ia32-msvc@4.59.0': + resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.3': - resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} + '@rollup/rollup-win32-x64-gnu@4.59.0': + resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.3': - resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} + '@rollup/rollup-win32-x64-msvc@4.59.0': + resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} cpu: [x64] os: [win32] '@silvia-odwyer/photon-node@0.3.4': resolution: {integrity: sha512-bnly4BKB3KDTFxrUIcgCLbaeVVS8lrAkri1pEzskpmxu9MdfGQTy8b8EgcD83ywD3RPMsIulY8xJH5Awa+t9fA==} - '@smithy/core@3.29.8': - resolution: {integrity: sha512-rpCbCV+TimOBi3VLNBMmtTvgfOWcFIEAru3+TFlG87SL2F+te4jOnnNR+cf3uR4eJ5Qf4LnT80fqnBKgPRS6zA==} + '@simple-git/args-pathspec@1.0.3': + resolution: {integrity: sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==} + + '@simple-git/argv-parser@1.1.1': + resolution: {integrity: sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==} + + '@smithy/core@3.26.0': + resolution: {integrity: sha512-mLUktFAn+Pa2agl1J7VgtYNFWCX8/b4GMJSK1hCu4YCvtBfM6F8Os3EP4ry+DFFlXOf3wyvlgXhuUdFoy52D3g==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.4.13': - resolution: {integrity: sha512-X+2HNZhWi5i3rJsCas0LPf6fTQUaKyJ40zd8aTO/bwpRfpU3biYaqLr7C1WMibL7PVKJalpi1PyybjGPNoHC8Q==} + '@smithy/credential-provider-imds@4.4.2': + resolution: {integrity: sha512-18UMDMyrAbDcpmL1gLUA7ww0fRTcdCrSjSJOi2Sbld+tVjwD/pW+OAwjlScFLR7vvBnhZrIPQ7kVuTf1mnJLug==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.6.10': - resolution: {integrity: sha512-5/Yj9mS2JjTsB3B8ZX7euh77mrY9aXW23ag1yAmFykSRmA6vldqBrgqmSeQ50EjY+5SB8+aE4w14B6LKbBVEhQ==} + '@smithy/fetch-http-handler@5.5.2': + resolution: {integrity: sha512-Ei/UK/QMhq0rKaMqGPlOAkE2yS9DZeYmZdk1RAKc3vp3zxgleZHZyBLlZv8yLsxljX4svCRuMTD6u3LLIcU4Bg==} engines: {node: '>=18.0.0'} '@smithy/is-array-buffer@2.2.0': @@ -1069,16 +1583,16 @@ packages: resolution: {integrity: sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.9.10': - resolution: {integrity: sha512-ETQz9v/Z+nTQc6fRWTXxUpxJqwpmzB3Tn3WKAdHwWkeT+m+HE5czs6GNG8vW+4vyxXSls65RVcvOZwk7Q/PS/Q==} + '@smithy/node-http-handler@4.8.2': + resolution: {integrity: sha512-wfl1uwrAqMH9/pi4kqBo5LBcFwrJLxuDLqL7p7qNcJIFcyZDUc6pzhYk4CYv+DP7fIUpQCZumwNnkhPKS52osQ==} engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.6.9': - resolution: {integrity: sha512-g5rnEii/mkT0mjVJmlsaOfyNBtHNTecD9Lo4NP8D5HzMUEnZNpz7/FbvBCjNcV4vteHFAxOGiLUYNxPkDZZAPw==} + '@smithy/signature-v4@5.5.2': + resolution: {integrity: sha512-7xHpmPY4rt0IOmeAA8EfjgEH8isT+587TCdy9H6a7d4OMi5CQ0oEHhWllunvPu4j4Cq0vTFwdxXN/kABWPjdyA==} engines: {node: '>=18.0.0'} - '@smithy/types@4.16.1': - resolution: {integrity: sha512-0JFs3V2y2M9tKW5na/qxe69Zv+uxLMO7QBbhxF/FHu/Gp2NFZAAL9tWl9PU02xxo07pb3G9FTyjNc6D5uZrJIg==} + '@smithy/types@4.15.0': + resolution: {integrity: sha512-Z5TAOxygoFvybJV3igo5SloFflSokHx2hu1eFA+DxDTcn+FtKxUSui+rbTRG1pAafMA888Z3MVvCWUuvCrTXjg==} engines: {node: '>=18.0.0'} '@smithy/util-buffer-from@2.2.0': @@ -1095,8 +1609,128 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@tybys/wasm-util@0.10.3': - resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + '@swc/core-darwin-arm64@1.15.43': + resolution: {integrity: sha512-v1aVuvXdo/BHxJzco9V2xpHrvwWmhfS8t6gziY5wJxd+Z2h8AeJRnAwPD8itCDaGXVBwJ/CaKfxEzTkG0Va0OA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.15.43': + resolution: {integrity: sha512-lp3d4Lamc8dt5huYdGLSR+9hLxmfr1jb0l+4XXG2zPqZwYWRN9R0U2qYoTrggiU2RWW0oV9VbWM3kBnqIc2kdQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.15.43': + resolution: {integrity: sha512-JWTQQELtsG5GgphDrr/XqqmM2pDN3cZqbMS0Mrg+iTiXL3F74sn/S2IyYE/5u4h2KLkTf9qQ7dXyxsbx7YzkeA==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.15.43': + resolution: {integrity: sha512-B4otJRdPWIsmiSBf0uG7Z/+vMWmkufjz5MmYxubwKuZazDW14Zd3symga1N62QR4RT+kEFeHEgsXfZGyn/w0hw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-arm64-musl@1.15.43': + resolution: {integrity: sha512-6zB6OnpViBxYy4tgY3v2i6AZY9fwkcHZ032UOwtwUuW1d19sdT07qF0kZe6/3UR1tUaK6jjg2rmVcUIBCEYVjQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@swc/core-linux-ppc64-gnu@1.15.43': + resolution: {integrity: sha512-coxE1ZWdB3uSDVNoEtYNrRi/1epvckZx9cTJ8ICUxTMTxGk+yvQ/Twacp3ruZSaMPGCriUjP86C37VhaT6nyRg==} + engines: {node: '>=10'} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-s390x-gnu@1.15.43': + resolution: {integrity: sha512-lXfLhs+LpBsD5inuYx+YDH5WsPPBQ95KPUiy8P5wq9ob9xKDZFqwNfU2QW6bGO8NqRO/H9JQomTSt5Yyh+FGfA==} + engines: {node: '>=10'} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-gnu@1.15.43': + resolution: {integrity: sha512-07XnKwTmKy8TGOZG3D9fRnLWGynxPjwQnZLVmBFbo6F+7vHYzBIOuwXEhemrChBWb6yDNZsVCcMWCPX6FDD2xg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-musl@1.15.43': + resolution: {integrity: sha512-TJc+bsSIaBh+hZvZ5GRtW/K1bw66TJ9vsUwvVIsZdiWxU5ObLwZvfcnZ3UpgVfMnFibRes9uriJrQNBHEEogRQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@swc/core-win32-arm64-msvc@1.15.43': + resolution: {integrity: sha512-jfd7s2/bUQYkOHLs+LWQNKZdmDa8+sufKLllhpWAhVQ2GDCwsHe3vR/j+OSiItZNtkzFuaawa3+SAKz9y5gYfw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.15.43': + resolution: {integrity: sha512-rLAE8JvucqEW1ZGohxPQrQWPBQeJG4+ypKbWfdlU/qmKScvCkxf9/Jxnzki1dkUQCQ7P5Enp13RlvqOlvx/32g==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.15.43': + resolution: {integrity: sha512-h8MLDHZcfIukwQWj03rIJZx1I0E81AYj2X7J/nGErG4nz+QAv6G1Z+peotvinL3lqpbo32tLYSMFo32/ySzxKg==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.15.43': + resolution: {integrity: sha512-1CuKjFkPxIgGdeHVuNbkxmBxkcbdc08u0aiI43pFq6yY1tTVKmXT9hFEooyyKs/sJ3xf1GPHyEwTtk9Xl8dvQw==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.27': + resolution: {integrity: sha512-K6h3iUlqeM946U4sXFYeahefR1YBbXJvko+hv8WS8/0BNJ4OHiHRywMnQUJCqkR7Y9+hqQ1TvEpiKqUhz7NEFg==} + + '@turbo/darwin-64@2.9.18': + resolution: {integrity: sha512-9f27peFu16ur8c0v9nUFUEyBnbKuuFsUTjHFWfmwGfzySBXbHwzU44QhZon6Mznz0cHsIr3984NQj/bVrnGSRw==} + cpu: [x64] + os: [darwin] + + '@turbo/darwin-arm64@2.9.18': + resolution: {integrity: sha512-9A6TMRq/Ib+QnbhLlgkhOm+624wO4pzSQ/yQviQfWHOlFvaYxdnIAYmu2H6TS6y7kSVL0DvzNe04NbESTOzFVQ==} + cpu: [arm64] + os: [darwin] + + '@turbo/linux-64@2.9.18': + resolution: {integrity: sha512-zCdIDtz69AnbYh913elJRRoF3QY5aa2HNnf+4rAkc7bQ+tWujiDkCNV7stazOUPggaDvhKIf2Z87qHftTeXSkw==} + cpu: [x64] + os: [linux] + + '@turbo/linux-arm64@2.9.18': + resolution: {integrity: sha512-Va1kXI04naMgYwqv/5Dfa36dTDx8015U7oaQAjrXa45ua9OoFjSV4OmvkML4EmXvUclQHCiBRbY8bvd0jV7eAg==} + cpu: [arm64] + os: [linux] + + '@turbo/windows-64@2.9.18': + resolution: {integrity: sha512-m0kDhZANxSNz9ck1ybogFscHabriAsp4eDFNrN/1H5WrgTF7b3VlcPZnhuO3v2+E2KnCbeAc+UUT10BZZHdDKw==} + cpu: [x64] + os: [win32] + + '@turbo/windows-arm64@2.9.18': + resolution: {integrity: sha512-nUdR8WqoomUys9iIQmG45TMiizJ+5BV8egSeLLZba/AWblyp3fVBcIH1kSE58OtK4g2YzbMJEth6Ttv9w5rqMA==} + cpu: [arm64] + os: [win32] '@types/bun@1.3.14': resolution: {integrity: sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw==} @@ -1116,26 +1750,36 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@24.10.1': - resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} + '@types/node@22.20.0': + resolution: {integrity: sha512-QWlFW2wf3nTjC13/DqRnBpR4ZO36VJH/JVBkA/vcnmbTBNQIlnObqyqZE1tUR7+Ni23Lda8R1BxMfbXRpCUx5g==} + + '@types/node@24.12.0': + resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} + + '@types/node@24.13.3': + resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==} + + '@types/node@25.2.0': + resolution: {integrity: sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==} + + '@types/parse-path@7.1.0': + resolution: {integrity: sha512-EULJ8LApcVEPbrfND0cRQqutIOdiIgJ1Mgrhpy755r14xMohPTEpkV/k28SJvuOs9bHRFW8x+KeDAEPiGQPB9Q==} + deprecated: This is a stub types definition. parse-path provides its own type definitions, so you do not need this installed. '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - '@types/set-cookie-parser@2.4.10': - resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==} - '@types/statuses@2.0.6': resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==} - '@types/tar@6.1.13': - resolution: {integrity: sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==} + '@types/turndown@5.0.6': + resolution: {integrity: sha512-ru00MoyeeouE5BX4gRL+6m/BsDfbRayOskWqUvh7CLGW+UXxHQItqALa38kKnOiZPqJrtzJUgAC2+F0rL1S4Pg==} - '@vitest/expect@4.1.10': - resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} + '@vitest/expect@4.1.8': + resolution: {integrity: sha512-h3nDO677RDLEGlBxyQ5CW8RlMThSKSRLUePLOx09gNIWRL40edgA1GCZSZgf1W55MFAG6/Sw14KeaAnqv0NKdQ==} - '@vitest/mocker@4.1.10': - resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} + '@vitest/mocker@4.1.8': + resolution: {integrity: sha512-LEiN/xe4OSIbKe9HQIp5OC24agGD9J5CnmMgsLohVVoOPWL9a2sBoR6VBx43jQZb7Kr1l4RCuyCJzcAa0+dojw==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1145,20 +1789,25 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.10': - resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} + '@vitest/pretty-format@4.1.8': + resolution: {integrity: sha512-9GasEBxpZ1VYIpqHf/0+YGg121uSNwCKOJqIrTwWP/TB7DmFCiaBpNl3aPZzoLWfWkuqhbH8vJIVobZkvdo2cA==} + + '@vitest/runner@4.1.8': + resolution: {integrity: sha512-EmVxeBAfMJvycdjd6Hm+RbFBbA9fKvo0Kx37hNpBYoYeavH3RNsBXWDooR1mgD52dCrxIIuP7UotpfiwOikvcg==} - '@vitest/runner@4.1.10': - resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} + '@vitest/snapshot@4.1.8': + resolution: {integrity: sha512-acfZboRmAIf05DEKcBQy33VXojFJjtUdLyo7oOmV9kebb2xdU01UknNiPuPZoJZQyO7DF0gZdTGTpeAzET9QPQ==} - '@vitest/snapshot@4.1.10': - resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} + '@vitest/spy@4.1.8': + resolution: {integrity: sha512-6EevtBp6OZOPF7bmz36HrGMeP3txgVSrgebWxHOafDXGkhIzfXK14f8KF6MuFfgXXUeHxmpD3BQxkV00/3s5mA==} - '@vitest/spy@4.1.10': - resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} + '@vitest/ui@4.1.8': + resolution: {integrity: sha512-RUS2ZU2TsduVrI+9c12uTNaKrNUTsm6yFt3fueEUB9iKvyC2UP83F+sqIz00HQIah4UOL1TMoDAki8K0NjGvsA==} + peerDependencies: + vitest: 4.1.8 - '@vitest/utils@4.1.10': - resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} + '@vitest/utils@4.1.8': + resolution: {integrity: sha512-uOJamYALNhfJ6iolExyQM40yIQwDqYnkKtQ5VCiSe17E33H0aQ/u+1GlRuz4LZBk6Mm3sg90G9hEbmEt37C1Zg==} accepts@2.0.0: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} @@ -1169,6 +1818,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.17.0: + resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} + engines: {node: '>=0.4.0'} + hasBin: true + agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} @@ -1181,8 +1835,8 @@ packages: ajv: optional: true - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -1209,20 +1863,23 @@ packages: bignumber.js@9.3.1: resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} - body-parser@2.2.1: - resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==} + body-parser@2.2.2: + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} engines: {node: '>=18'} bowser@2.14.1: resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} - brace-expansion@5.0.8: - resolution: {integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==} - engines: {node: 20 || >=22} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + engines: {node: 18 || 20 || >=22} buffer-equal-constant-time@1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + bun-types@1.3.14: resolution: {integrity: sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ==} @@ -1260,10 +1917,6 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - chownr@3.0.0: - resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} - engines: {node: '>=18'} - cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} @@ -1283,6 +1936,9 @@ packages: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -1317,18 +1973,26 @@ packages: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + cors@2.8.6: + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} engines: {node: '>= 0.10'} cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + cssstyle@4.6.0: + resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} + engines: {node: '>=18'} + data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -1338,6 +2002,9 @@ packages: supports-color: optional: true + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -1367,6 +2034,10 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -1375,15 +2046,25 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@2.3.1: - resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} - esbuild@0.27.1: - resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} engines: {node: '>=18'} hasBin: true @@ -1409,12 +2090,12 @@ packages: resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} engines: {node: '>=18.0.0'} - expect-type@1.4.0: - resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} - express-rate-limit@8.6.0: - resolution: {integrity: sha512-XKJXDsASUOo0LLtFwW5hCcQGH0N4WQc/Rn8/Pvoia+TJFOkkFPvrtW9lZOeeNcxQJspvOIERMwiRLsVFlhHEkA==} + express-rate-limit@8.3.1: + resolution: {integrity: sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==} engines: {node: '>= 16'} peerDependencies: express: '>= 4.11' @@ -1432,18 +2113,9 @@ packages: fast-sha256@1.3.0: resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} - fast-string-truncated-width@3.0.3: - resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} - - fast-string-width@3.0.2: - resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} - fast-uri@3.1.4: resolution: {integrity: sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==} - fast-wrap-ansi@0.2.2: - resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -1457,6 +2129,9 @@ packages: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + fflate@0.8.3: resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} @@ -1467,6 +2142,9 @@ packages: fix-dts-default-cjs-exports@1.0.1: resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + flatted@3.4.3: + resolution: {integrity: sha512-/zipXxyO6rGvuNGDiULY9MvEGSkb2gaG4GGH4ygMi0ZZzyMHdUZBmntJmx5x1G2VuPytCwGN4xsJP6cw+sK+vQ==} + formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -1487,8 +2165,8 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - gaxios@7.3.0: - resolution: {integrity: sha512-RB5vLV+vvQeoFPCX4QMK6/hjVkbIamPp1QSUD0CiZcnj12qbpiL+pLbYtgD+oZkWl0tl9z+o2Utp+MpM3QRhBA==} + gaxios@7.1.5: + resolution: {integrity: sha512-5FZy72Rh8LhtjmvDrKkI+lVhrsQrVKVsItxMoDm5mNQE+xR0WVIIs+jzPSJgBvKVsLi24fZhXJIsNI0bihDzFg==} engines: {node: '>=18'} gcp-metadata@8.1.2: @@ -1511,15 +2189,18 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-tsconfig@4.13.0: - resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + git-up@8.1.1: + resolution: {integrity: sha512-FDenSF3fVqBYSaJoYy1KSc2wosx0gCvKP+c+PRBht7cAaiCeQlBtfBDX9vgnNOHmdePlSFITVcn4pFfcgNvx3g==} + + git-url-parse@16.1.0: + resolution: {integrity: sha512-cPLz4HuK86wClEW7iDdeAKcCVlWXmrLpb2L+G9goW0Z1dtpNS6BXXSOckUTlJT/LDQViE1QZKstNORzHsLnobw==} glob@13.0.6: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} - google-auth-library@10.9.1: - resolution: {integrity: sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw==} + google-auth-library@10.9.0: + resolution: {integrity: sha512-xtvUqvINPhTaBm7nXqlYPcrMHJPm1lCNdSovxnKKhTm+4JsvQ+KGVYJViLoH9Yxu8w+T0Qv5HubzYT9BLrppJg==} engines: {node: '>=18'} google-logging-utils@1.1.3: @@ -1533,8 +2214,8 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphql@16.14.2: - resolution: {integrity: sha512-Chq1s4CY7jmh8gO2qvLIJyfCDIN+EHLFW/9iShnp1z8FjBQMoodWP1kDC36VAMXXIvAjj4ARa7ntfAV2BrjsbA==} + graphql@16.12.0: + resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} grok-mermaid@0.2.2: @@ -1545,24 +2226,28 @@ packages: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} - headers-polyfill@5.0.1: - resolution: {integrity: sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==} + headers-polyfill@4.0.3: + resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} - hono@4.12.31: - resolution: {integrity: sha512-zJIHFrl6bq3RDd2YusFNCDlM8qUprxKswyi/OPzPyzKDdyBXDqWx8bZlZ7R+saTdSTatUmb3O7K4SspGPaEOQg==} + hono@4.12.28: + resolution: {integrity: sha512-YwUvVpSF7m1yOblFPrU3Hbo8XhPheBoiyfGuII6z19LnOr6JpDnyyp7LFNrfV56wS8tpvtBFGRISHN02pDdLOA==} engines: {node: '>=16.9.0'} hosted-git-info@9.0.3: resolution: {integrity: sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==} engines: {node: ^20.17.0 || >=22.9.0} + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + http-errors@2.0.1: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} @@ -1575,8 +2260,12 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - iconv-lite@0.7.0: - resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} ignore@7.0.5: @@ -1586,8 +2275,8 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ip-address@10.2.0: - resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} ipaddr.js@1.9.1: @@ -1601,9 +2290,15 @@ packages: is-node-process@1.2.0: resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-ssh@1.4.1: + resolution: {integrity: sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1611,13 +2306,22 @@ packages: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true - jose@6.1.3: - resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} + jose@6.2.1: + resolution: {integrity: sha512-jUaKr1yrbfaImV7R2TN/b3IcZzsw38/chqMpo2XJ7i2F8AfM/lA4G1goC3JVEwg0H7UldTmSt3P68nt31W7/mw==} joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} + jsdom@26.1.0: + resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + json-bigint@1.0.0: resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} @@ -1676,24 +2380,28 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.33.0: resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.33.0: resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.33.0: resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.33.0: resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} @@ -1746,8 +2454,11 @@ packages: long@5.3.2: resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} - lru-cache@11.5.2: - resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.2.5: + resolution: {integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==} engines: {node: 20 || >=22} magic-string@0.30.21: @@ -1778,34 +2489,30 @@ packages: resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} engines: {node: '>=18'} - minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} + minimatch@10.1.2: + resolution: {integrity: sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==} engines: {node: 20 || >=22} minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} - minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - minipass@7.1.3: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@3.1.0: - resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} - engines: {node: '>= 18'} - mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msw@2.15.0: - resolution: {integrity: sha512-2wQAmKkQKxRuXvYJxVhPGG0wZNBQyD06oJvxqw90XqLvptdqxdlHrFUfEteKkpaNORX3Xzc+HtEl/q0nfmN2wQ==} + msw@2.12.8: + resolution: {integrity: sha512-KOriJUhjefCO+liF7Ie1KlSXcBAQEzuLhPZ4EKuEUSEmAR4YhuuzT9YuGxTipjqDrg6eWQ6oMoGVhvEnqukFGg==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -1814,9 +2521,9 @@ packages: typescript: optional: true - mute-stream@3.0.0: - resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} - engines: {node: ^20.17.0 || >=22.9.0} + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -1839,6 +2546,9 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + nwsapi@2.2.23: + resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -1847,9 +2557,8 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} - obug@2.1.4: - resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} - engines: {node: '>=12.20.0'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} @@ -1862,8 +2571,8 @@ packages: resolution: {integrity: sha512-zd23dbWTjiJ6sSAX6s0HrCZi41JwTA1bQVs0wLQPZ2/5o2gxOJA5wh7yOAUgwYybfhDXyhwlpeQf7Mlgx8EOCA==} hasBin: true peerDependencies: - ws: ^8.18.0 - zod: ^3.25 || ^4.0 + ws: 8.21.0 + zod: 4.4.3 peerDependenciesMeta: ws: optional: true @@ -1877,6 +2586,16 @@ packages: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} + parse-path@7.1.0: + resolution: {integrity: sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==} + + parse-url@9.2.0: + resolution: {integrity: sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==} + engines: {node: '>=14.13.0'} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -1892,6 +2611,9 @@ packages: resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} engines: {node: 18 || 20 || >=22} + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + path-to-regexp@8.4.2: resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} @@ -1938,8 +2660,8 @@ packages: yaml: optional: true - postcss@8.5.22: - resolution: {integrity: sha512-KBDEIpLrvpv16pp3K0Fw+UCoZfopFjjgeB+0tA/aaThfEE74kKDLrgg603YvOWJyg3+WYtyq3xYsQWsIyZlPqQ==} + postcss@8.5.23: + resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} engines: {node: ^10 || ^12 || >=14} proper-lockfile@4.1.2: @@ -1949,10 +2671,17 @@ packages: resolution: {integrity: sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw==} engines: {node: '>=12.0.0'} + protocols@2.0.2: + resolution: {integrity: sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==} + proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + qs@6.15.3: resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==} engines: {node: '>=0.6'} @@ -1981,9 +2710,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} @@ -1992,16 +2718,11 @@ packages: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} - rettime@0.11.11: - resolution: {integrity: sha512-ILJRqVWBCTlg9r42fFgwVZx1gnFAcQF8mRoMkbgQfIrjEDf9nbBFDFx00oloOa+Q869FUtaYDXZvEfnecQSCoQ==} - - rolldown@1.1.5: - resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true + rettime@0.10.1: + resolution: {integrity: sha512-uyDrIlUEH37cinabq0AX4QbgV4HbFZ/gqoiunWQ1UqBtRvTTytwhNYjE++pO/MjPTZL5KQCf2bEoJ/BJNVQ5Kw==} - rollup@4.53.3: - resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} + rollup@4.59.0: + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2009,32 +2730,36 @@ packages: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} - engines: {node: '>=10'} - hasBin: true + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} semver@7.8.0: resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} engines: {node: '>=10'} hasBin: true - send@1.2.0: - resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} - engines: {node: '>= 18'} + semver@7.8.4: + resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==} + engines: {node: '>=10'} + hasBin: true - serve-static@2.2.0: - resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} engines: {node: '>= 18'} - set-cookie-parser@3.1.2: - resolution: {integrity: sha512-5/r/lTwbJ3zQ+qwdUFZYeRNqda7P5HD8zQKqlSjdGt1/S0cjLAphHusj4Y58ahDtWn/g32xrIS58/ikOvwl0Lw==} + serve-static@2.2.1: + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} + engines: {node: '>= 18'} setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -2073,10 +2798,24 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-git@3.36.0: + resolution: {integrity: sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q==} + + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + source-map@0.7.6: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} @@ -2091,8 +2830,8 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - std-env@4.2.0: - resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} @@ -2110,13 +2849,17 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + tagged-tag@1.0.0: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - tar@7.5.21: - resolution: {integrity: sha512-XdhtCvlMywwxpCW8YEq3lOXBJpUPTR2OHHcwLPO3HwsJqOHa2Ok/oJ7ruGzp+JrKoRPVCzJwAdEjqLW/vNRPHA==} - engines: {node: '>=18'} + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} + engines: {node: '>=10'} + hasBin: true thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} @@ -2131,8 +2874,8 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.2.4: - resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} tinyglobby@0.2.15: @@ -2147,25 +2890,49 @@ packages: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} - tldts-core@7.4.9: - resolution: {integrity: sha512-DxKfPBI52p2msTEu7MPhdpdDTBhhVQg1a/8PjQckeyAvO13eMYElX545grIp6nnTGIMZlRvFZPvFhvI/WIz2Vg==} + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + + tldts-core@7.0.22: + resolution: {integrity: sha512-KgbTDC5wzlL6j/x6np6wCnDSMUq4kucHNm00KXPbfNzmllCmtmvtykJHfmgdHntwIeupW04y8s1N/43S1PkQDw==} + + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + hasBin: true - tldts@7.4.9: - resolution: {integrity: sha512-3kZ8wQQ/k5DrChD4X4FVvr2D7E5uoRgAqkPyLpSCGUvqOvqu+JEdr3mwMUaVWb+vMHZaKhF5fp2PBigKsui7hA==} + tldts@7.0.22: + resolution: {integrity: sha512-nqpKFC53CgopKPjT6Wfb6tpIcZXHcI6G37hesvikhx0EmUGPkZrujRyAjgnmp1SHNgpQfKVanZ+KfpANFt2Hxw==} hasBin: true toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} - tough-cookie@6.0.2: - resolution: {integrity: sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==} + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} + + tough-cookie@6.0.0: + resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} engines: {node: '>=16'} + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + tree-sitter-cli@0.26.8: + resolution: {integrity: sha512-teQFMF5V/g8aIdakZ0M/eZoedCM3MuBt1JuDOICLloA2hy7QfeOInb99U6wiML4qXcBHWREwf0U1TWzw7p67YA==} + engines: {node: '>=12.0.0'} + hasBin: true + ts-algebra@2.0.0: resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==} @@ -2194,13 +2961,21 @@ packages: typescript: optional: true - tsx@4.21.0: - resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + tsx@4.22.4: + resolution: {integrity: sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==} engines: {node: '>=18.0.0'} hasBin: true - type-fest@5.8.0: - resolution: {integrity: sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==} + turbo@2.9.18: + resolution: {integrity: sha512-bwabv6PupzeavybzEoArBAkwq5fnzwf8OFnRtpHwnviFWuwJPFxtyH+aVp36TmIqK3aYYgtTJ3J0m2ysxxSzQg==} + hasBin: true + + turndown@7.2.4: + resolution: {integrity: sha512-I8yFsfRzmzK0WV1pNNOA4A7y4RDfFxPRxb3t+e3ui14qSGOxGtiSP6GjeX+Y6CHb7HYaFj7ECUD7VE5kQMZWGQ==} + engines: {node: '>=18', npm: '>=9'} + + type-fest@5.4.3: + resolution: {integrity: sha512-AXSAQJu79WGc79/3e9/CR77I/KQgeY1AhNvcShIH4PTcGYyC4xv6H4R4AUOwkPS5799KlVDAu8zExeCrkGquiA==} engines: {node: '>=20'} type-is@2.0.1: @@ -2215,12 +2990,18 @@ packages: engines: {node: '>=14.17'} hasBin: true - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + undici@8.9.0: resolution: {integrity: sha512-aWZpUj7XoGonMClx4gdDRfgBjqeA+F473aDmROQQbM9n6PRfK/u1q/a0X4wMTgcHfT8H6fpbt98PFuDUwFg2YA==} engines: {node: '>=22.19.0'} @@ -2240,16 +3021,15 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite@8.1.5: - resolution: {integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==} + vite@7.3.5: + resolution: {integrity: sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.3.0 - esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 + lightningcss: ^1.21.0 sass: ^1.70.0 sass-embedded: ^1.70.0 stylus: '>=0.54.8' @@ -2260,14 +3040,12 @@ packages: peerDependenciesMeta: '@types/node': optional: true - '@vitejs/devtools': - optional: true - esbuild: - optional: true jiti: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true sass-embedded: @@ -2283,20 +3061,20 @@ packages: yaml: optional: true - vitest@4.1.10: - resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} + vitest@4.1.8: + resolution: {integrity: sha512-flY6ScbCIt9HThs+C5HS7jvGOB560DJtk/Z15IQROTA6zEy49Nh8T/dofWTQL+n3vswqn87sbJNiuqw1SDp5Ig==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.10 - '@vitest/browser-preview': 4.1.10 - '@vitest/browser-webdriverio': 4.1.10 - '@vitest/coverage-istanbul': 4.1.10 - '@vitest/coverage-v8': 4.1.10 - '@vitest/ui': 4.1.10 + '@vitest/browser-playwright': 4.1.8 + '@vitest/browser-preview': 4.1.8 + '@vitest/browser-webdriverio': 4.1.8 + '@vitest/coverage-istanbul': 4.1.8 + '@vitest/coverage-v8': 4.1.8 + '@vitest/ui': 4.1.8 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2324,10 +3102,34 @@ packages: jsdom: optional: true + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} + web-tree-sitter@0.24.7: + resolution: {integrity: sha512-CdC/TqVFbXqR+C51v38hv6wOPatKEUGxa39scAeFSm98wIhZxAYonhRQPSMmfZ2w7JDI0zQDdzdmgtNk06/krQ==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -2338,6 +3140,10 @@ packages: engines: {node: '>=8'} hasBin: true + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -2345,8 +3151,8 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.21.1: - resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} + ws@8.21.0: + resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -2357,14 +3163,17 @@ packages: utf-8-validate: optional: true + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@5.0.0: - resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} - engines: {node: '>=18'} - yaml@2.9.0: resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} @@ -2374,65 +3183,73 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - yargs@17.7.3: - resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} + engines: {node: '>=18'} + yoga-wasm-web@0.3.3: resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} - zod-to-json-schema@3.25.2: - resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} + zod-to-json-schema@3.25.1: + resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} peerDependencies: - zod: ^3.25.28 || ^4 + zod: 4.4.3 zod@4.4.3: resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} snapshots: + '@agentclientprotocol/sdk@0.19.0(zod@4.4.3)': + dependencies: + zod: 4.4.3 + '@agentclientprotocol/sdk@1.1.0(zod@4.4.3)': dependencies: zod: 4.4.3 - '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.197': + '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.270': optional: true - '@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.197': + '@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.270': optional: true - '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.197': + '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.270': optional: true - '@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.197': + '@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.270': optional: true - '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.197': + '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.270': optional: true - '@anthropic-ai/claude-agent-sdk-linux-x64@0.3.197': + '@anthropic-ai/claude-agent-sdk-linux-x64@0.3.270': optional: true - '@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.197': + '@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.270': optional: true - '@anthropic-ai/claude-agent-sdk-win32-x64@0.3.197': + '@anthropic-ai/claude-agent-sdk-win32-x64@0.3.270': optional: true - '@anthropic-ai/claude-agent-sdk@0.3.197(@anthropic-ai/sdk@0.109.0(zod@4.4.3))(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(zod@4.4.3)': + '@anthropic-ai/claude-agent-sdk@0.3.270(@anthropic-ai/sdk@0.109.0(zod@4.4.3))(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(zod@4.4.3)': dependencies: '@anthropic-ai/sdk': 0.109.0(zod@4.4.3) '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3) zod: 4.4.3 optionalDependencies: - '@anthropic-ai/claude-agent-sdk-darwin-arm64': 0.3.197 - '@anthropic-ai/claude-agent-sdk-darwin-x64': 0.3.197 - '@anthropic-ai/claude-agent-sdk-linux-arm64': 0.3.197 - '@anthropic-ai/claude-agent-sdk-linux-arm64-musl': 0.3.197 - '@anthropic-ai/claude-agent-sdk-linux-x64': 0.3.197 - '@anthropic-ai/claude-agent-sdk-linux-x64-musl': 0.3.197 - '@anthropic-ai/claude-agent-sdk-win32-arm64': 0.3.197 - '@anthropic-ai/claude-agent-sdk-win32-x64': 0.3.197 + '@anthropic-ai/claude-agent-sdk-darwin-arm64': 0.3.270 + '@anthropic-ai/claude-agent-sdk-darwin-x64': 0.3.270 + '@anthropic-ai/claude-agent-sdk-linux-arm64': 0.3.270 + '@anthropic-ai/claude-agent-sdk-linux-arm64-musl': 0.3.270 + '@anthropic-ai/claude-agent-sdk-linux-x64': 0.3.270 + '@anthropic-ai/claude-agent-sdk-linux-x64-musl': 0.3.270 + '@anthropic-ai/claude-agent-sdk-win32-arm64': 0.3.270 + '@anthropic-ai/claude-agent-sdk-win32-x64': 0.3.270 '@anthropic-ai/sdk@0.109.0(zod@4.4.3)': dependencies: @@ -2447,12 +3264,27 @@ snapshots: optionalDependencies: zod: 4.4.3 + '@asamuzakjp/css-color@3.2.0': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 10.4.3 + optional: true + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.13 + tslib: 2.8.1 + '@aws-crypto/sha256-browser@5.2.0': dependencies: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.974.2 + '@aws-sdk/types': 3.973.13 '@aws-sdk/util-locate-window': 3.965.8 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -2460,7 +3292,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.974.2 + '@aws-sdk/types': 3.973.13 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -2469,7 +3301,7 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.974.2 + '@aws-sdk/types': 3.973.13 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -2477,195 +3309,257 @@ snapshots: dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.976.0 - '@aws-sdk/credential-provider-node': 3.972.71 - '@aws-sdk/eventstream-handler-node': 3.972.29 - '@aws-sdk/middleware-eventstream': 3.972.24 - '@aws-sdk/middleware-websocket': 3.972.42 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/credential-provider-node': 3.972.58 + '@aws-sdk/eventstream-handler-node': 3.972.22 + '@aws-sdk/middleware-eventstream': 3.972.18 + '@aws-sdk/middleware-websocket': 3.972.31 '@aws-sdk/token-providers': 3.1048.0 - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/fetch-http-handler': 5.6.10 - '@smithy/node-http-handler': 4.9.10 - '@smithy/types': 4.16.1 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/node-http-handler': 4.8.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/core@3.976.0': + '@aws-sdk/core@3.974.23': dependencies: - '@aws-sdk/types': 3.974.2 - '@aws-sdk/xml-builder': 3.972.36 - '@aws/lambda-invoke-store': 0.3.0 - '@smithy/core': 3.29.8 - '@smithy/signature-v4': 5.6.9 - '@smithy/types': 4.16.1 + '@aws-sdk/types': 3.973.13 + '@aws-sdk/xml-builder': 3.972.31 + '@aws/lambda-invoke-store': 0.2.4 + '@smithy/core': 3.26.0 + '@smithy/signature-v4': 5.5.2 + '@smithy/types': 4.15.0 bowser: 2.14.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.972.60': + '@aws-sdk/credential-provider-env@3.972.49': dependencies: - '@aws-sdk/core': 3.976.0 - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.972.62': + '@aws-sdk/credential-provider-http@3.972.51': dependencies: - '@aws-sdk/core': 3.976.0 - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/fetch-http-handler': 5.6.10 - '@smithy/node-http-handler': 4.9.10 - '@smithy/types': 4.16.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/node-http-handler': 4.8.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.973.5': - dependencies: - '@aws-sdk/core': 3.976.0 - '@aws-sdk/credential-provider-env': 3.972.60 - '@aws-sdk/credential-provider-http': 3.972.62 - '@aws-sdk/credential-provider-login': 3.972.67 - '@aws-sdk/credential-provider-process': 3.972.60 - '@aws-sdk/credential-provider-sso': 3.973.4 - '@aws-sdk/credential-provider-web-identity': 3.972.66 - '@aws-sdk/nested-clients': 3.997.34 - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/credential-provider-imds': 4.4.13 - '@smithy/types': 4.16.1 + '@aws-sdk/credential-provider-ini@3.972.56': + dependencies: + '@aws-sdk/core': 3.974.23 + '@aws-sdk/credential-provider-env': 3.972.49 + '@aws-sdk/credential-provider-http': 3.972.51 + '@aws-sdk/credential-provider-login': 3.972.55 + '@aws-sdk/credential-provider-process': 3.972.49 + '@aws-sdk/credential-provider-sso': 3.972.55 + '@aws-sdk/credential-provider-web-identity': 3.972.55 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/credential-provider-imds': 4.4.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-login@3.972.67': + '@aws-sdk/credential-provider-login@3.972.55': dependencies: - '@aws-sdk/core': 3.976.0 - '@aws-sdk/nested-clients': 3.997.34 - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-node@3.972.71': - dependencies: - '@aws-sdk/credential-provider-env': 3.972.60 - '@aws-sdk/credential-provider-http': 3.972.62 - '@aws-sdk/credential-provider-ini': 3.973.5 - '@aws-sdk/credential-provider-process': 3.972.60 - '@aws-sdk/credential-provider-sso': 3.973.4 - '@aws-sdk/credential-provider-web-identity': 3.972.66 - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/credential-provider-imds': 4.4.13 - '@smithy/types': 4.16.1 + '@aws-sdk/credential-provider-node@3.972.58': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.49 + '@aws-sdk/credential-provider-http': 3.972.51 + '@aws-sdk/credential-provider-ini': 3.972.56 + '@aws-sdk/credential-provider-process': 3.972.49 + '@aws-sdk/credential-provider-sso': 3.972.55 + '@aws-sdk/credential-provider-web-identity': 3.972.55 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/credential-provider-imds': 4.4.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-process@3.972.60': + '@aws-sdk/credential-provider-process@3.972.49': dependencies: - '@aws-sdk/core': 3.976.0 - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.973.4': + '@aws-sdk/credential-provider-sso@3.972.55': dependencies: - '@aws-sdk/core': 3.976.0 - '@aws-sdk/nested-clients': 3.997.34 - '@aws-sdk/token-providers': 3.1092.0 - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/token-providers': 3.1074.0 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-web-identity@3.972.66': + '@aws-sdk/credential-provider-web-identity@3.972.55': dependencies: - '@aws-sdk/core': 3.976.0 - '@aws-sdk/nested-clients': 3.997.34 - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/eventstream-handler-node@3.972.29': + '@aws-sdk/eventstream-handler-node@3.972.22': dependencies: - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/middleware-eventstream@3.972.24': + '@aws-sdk/middleware-eventstream@3.972.18': dependencies: - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/middleware-websocket@3.972.42': + '@aws-sdk/middleware-websocket@3.972.31': dependencies: - '@aws-sdk/core': 3.976.0 - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/fetch-http-handler': 5.6.10 - '@smithy/signature-v4': 5.6.9 - '@smithy/types': 4.16.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/signature-v4': 5.5.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.997.34': + '@aws-sdk/nested-clients@3.997.23': dependencies: - '@aws-sdk/core': 3.976.0 - '@aws-sdk/signature-v4-multi-region': 3.996.41 - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/fetch-http-handler': 5.6.10 - '@smithy/node-http-handler': 4.9.10 - '@smithy/types': 4.16.1 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/signature-v4-multi-region': 3.996.35 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/fetch-http-handler': 5.5.2 + '@smithy/node-http-handler': 4.8.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.996.41': + '@aws-sdk/signature-v4-multi-region@3.996.35': dependencies: - '@aws-sdk/types': 3.974.2 - '@smithy/signature-v4': 5.6.9 - '@smithy/types': 4.16.1 + '@aws-sdk/types': 3.973.13 + '@smithy/signature-v4': 5.5.2 + '@smithy/types': 4.15.0 tslib: 2.8.1 '@aws-sdk/token-providers@3.1048.0': dependencies: - '@aws-sdk/core': 3.976.0 - '@aws-sdk/nested-clients': 3.997.34 - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/token-providers@3.1092.0': + '@aws-sdk/token-providers@3.1074.0': dependencies: - '@aws-sdk/core': 3.976.0 - '@aws-sdk/nested-clients': 3.997.34 - '@aws-sdk/types': 3.974.2 - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@aws-sdk/core': 3.974.23 + '@aws-sdk/nested-clients': 3.997.23 + '@aws-sdk/types': 3.973.13 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws-sdk/types@3.974.2': + '@aws-sdk/types@3.973.13': dependencies: - '@smithy/types': 4.16.1 + '@smithy/types': 4.15.0 tslib: 2.8.1 '@aws-sdk/util-locate-window@3.965.8': dependencies: tslib: 2.8.1 - '@aws-sdk/xml-builder@3.972.36': + '@aws-sdk/xml-builder@3.972.31': dependencies: - '@smithy/types': 4.16.1 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@aws/lambda-invoke-store@0.3.0': {} + '@aws/lambda-invoke-store@0.2.4': {} + + '@babel/runtime@7.29.2': {} + + '@biomejs/biome@2.2.4': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 2.2.4 + '@biomejs/cli-darwin-x64': 2.2.4 + '@biomejs/cli-linux-arm64': 2.2.4 + '@biomejs/cli-linux-arm64-musl': 2.2.4 + '@biomejs/cli-linux-x64': 2.2.4 + '@biomejs/cli-linux-x64-musl': 2.2.4 + '@biomejs/cli-win32-arm64': 2.2.4 + '@biomejs/cli-win32-x64': 2.2.4 + + '@biomejs/cli-darwin-arm64@2.2.4': + optional: true + + '@biomejs/cli-darwin-x64@2.2.4': + optional: true + + '@biomejs/cli-linux-arm64-musl@2.2.4': + optional: true + + '@biomejs/cli-linux-arm64@2.2.4': + optional: true + + '@biomejs/cli-linux-x64-musl@2.2.4': + optional: true + + '@biomejs/cli-linux-x64@2.2.4': + optional: true + + '@biomejs/cli-win32-arm64@2.2.4': + optional: true + + '@biomejs/cli-win32-x64@2.2.4': + optional: true + + '@csstools/color-helpers@5.1.0': + optional: true + + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + optional: true + + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/color-helpers': 5.1.0 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + optional: true + + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + optional: true - '@babel/runtime@7.28.4': {} + '@csstools/css-tokenizer@3.0.4': + optional: true - '@earendil-works/pi-agent-core@0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)': + '@earendil-works/pi-agent-core@0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3)': dependencies: - '@earendil-works/pi-ai': 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) + '@earendil-works/pi-ai': 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) '@earendil-works/pi-telemetry': 0.84.1 diff: 8.0.4 ignore: 7.0.5 @@ -2679,7 +3573,7 @@ snapshots: - ws - zod - '@earendil-works/pi-ai@0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)': + '@earendil-works/pi-ai@0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3)': dependencies: '@anthropic-ai/sdk': 0.91.1(zod@4.4.3) '@aws-sdk/client-bedrock-runtime': 3.1048.0 @@ -2690,7 +3584,7 @@ snapshots: '@smithy/node-http-handler': 4.7.3 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 - openai: 6.26.0(ws@8.21.1)(zod@4.4.3) + openai: 6.26.0(ws@8.21.0)(zod@4.4.3) partial-json: 0.1.7 typebox: 1.3.7 transitivePeerDependencies: @@ -2705,10 +3599,10 @@ snapshots: dependencies: '@earendil-works/pi-protocol': 0.84.1 - '@earendil-works/pi-coding-agent@0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)': + '@earendil-works/pi-coding-agent@0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3)': dependencies: - '@earendil-works/pi-agent-core': 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) - '@earendil-works/pi-ai': 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) + '@earendil-works/pi-agent-core': 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) + '@earendil-works/pi-ai': 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) '@earendil-works/pi-client': 0.84.1 '@earendil-works/pi-protocol': 0.84.1 '@earendil-works/pi-tui': 0.84.1 @@ -2749,106 +3643,246 @@ snapshots: get-east-asian-width: 1.6.0 marked: 18.0.5 - '@emnapi/core@1.11.1': - dependencies: - '@emnapi/wasi-threads': 1.2.2 - tslib: 2.8.1 + '@esbuild/aix-ppc64@0.27.2': optional: true - '@emnapi/runtime@1.11.1': - dependencies: - tslib: 2.8.1 + '@esbuild/aix-ppc64@0.27.7': optional: true - '@emnapi/wasi-threads@1.2.2': - dependencies: - tslib: 2.8.1 + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.27.2': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.27.2': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.27.2': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.27.2': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.27.2': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.27.2': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.27.2': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.27.2': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.27.2': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.27.2': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.27.2': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.27.2': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.27.2': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.27.2': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.27.2': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.27.2': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.27.2': optional: true - '@esbuild/aix-ppc64@0.27.1': + '@esbuild/netbsd-arm64@0.27.7': optional: true - '@esbuild/android-arm64@0.27.1': + '@esbuild/netbsd-arm64@0.28.1': optional: true - '@esbuild/android-arm@0.27.1': + '@esbuild/netbsd-x64@0.27.2': optional: true - '@esbuild/android-x64@0.27.1': + '@esbuild/netbsd-x64@0.27.7': optional: true - '@esbuild/darwin-arm64@0.27.1': + '@esbuild/netbsd-x64@0.28.1': optional: true - '@esbuild/darwin-x64@0.27.1': + '@esbuild/openbsd-arm64@0.27.2': optional: true - '@esbuild/freebsd-arm64@0.27.1': + '@esbuild/openbsd-arm64@0.27.7': optional: true - '@esbuild/freebsd-x64@0.27.1': + '@esbuild/openbsd-arm64@0.28.1': optional: true - '@esbuild/linux-arm64@0.27.1': + '@esbuild/openbsd-x64@0.27.2': optional: true - '@esbuild/linux-arm@0.27.1': + '@esbuild/openbsd-x64@0.27.7': optional: true - '@esbuild/linux-ia32@0.27.1': + '@esbuild/openbsd-x64@0.28.1': optional: true - '@esbuild/linux-loong64@0.27.1': + '@esbuild/openharmony-arm64@0.27.2': optional: true - '@esbuild/linux-mips64el@0.27.1': + '@esbuild/openharmony-arm64@0.27.7': optional: true - '@esbuild/linux-ppc64@0.27.1': + '@esbuild/openharmony-arm64@0.28.1': optional: true - '@esbuild/linux-riscv64@0.27.1': + '@esbuild/sunos-x64@0.27.2': optional: true - '@esbuild/linux-s390x@0.27.1': + '@esbuild/sunos-x64@0.27.7': optional: true - '@esbuild/linux-x64@0.27.1': + '@esbuild/sunos-x64@0.28.1': optional: true - '@esbuild/netbsd-arm64@0.27.1': + '@esbuild/win32-arm64@0.27.2': optional: true - '@esbuild/netbsd-x64@0.27.1': + '@esbuild/win32-arm64@0.27.7': optional: true - '@esbuild/openbsd-arm64@0.27.1': + '@esbuild/win32-arm64@0.28.1': optional: true - '@esbuild/openbsd-x64@0.27.1': + '@esbuild/win32-ia32@0.27.2': optional: true - '@esbuild/openharmony-arm64@0.27.1': + '@esbuild/win32-ia32@0.27.7': optional: true - '@esbuild/sunos-x64@0.27.1': + '@esbuild/win32-ia32@0.28.1': optional: true - '@esbuild/win32-arm64@0.27.1': + '@esbuild/win32-x64@0.27.2': optional: true - '@esbuild/win32-ia32@0.27.1': + '@esbuild/win32-x64@0.27.7': optional: true - '@esbuild/win32-x64@0.27.1': + '@esbuild/win32-x64@0.28.1': optional: true '@google/genai@1.52.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))': dependencies: - google-auth-library: 10.9.1 + google-auth-library: 10.9.0 p-retry: 4.6.2 protobufjs: 7.6.5 - ws: 8.21.1 + ws: 8.21.0 optionalDependencies: '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3) transitivePeerDependencies: @@ -2856,36 +3890,64 @@ snapshots: - supports-color - utf-8-validate - '@hono/node-server@1.19.13(hono@4.12.31)': + '@hono/node-server@1.19.13(hono@4.12.28)': + dependencies: + hono: 4.12.28 + + '@inquirer/ansi@1.0.2': {} + + '@inquirer/confirm@5.1.21(@types/node@22.20.0)': dependencies: - hono: 4.12.31 + '@inquirer/core': 10.3.2(@types/node@22.20.0) + '@inquirer/type': 3.0.10(@types/node@22.20.0) + optionalDependencies: + '@types/node': 22.20.0 + optional: true - '@inquirer/ansi@2.0.7': {} + '@inquirer/confirm@5.1.21(@types/node@25.2.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.2.0) + '@inquirer/type': 3.0.10(@types/node@25.2.0) + optionalDependencies: + '@types/node': 25.2.0 - '@inquirer/confirm@6.1.1(@types/node@24.10.1)': + '@inquirer/core@10.3.2(@types/node@22.20.0)': dependencies: - '@inquirer/core': 11.2.1(@types/node@24.10.1) - '@inquirer/type': 4.0.7(@types/node@24.10.1) + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.20.0) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 22.20.0 + optional: true - '@inquirer/core@11.2.1(@types/node@24.10.1)': + '@inquirer/core@10.3.2(@types/node@25.2.0)': dependencies: - '@inquirer/ansi': 2.0.7 - '@inquirer/figures': 2.0.7 - '@inquirer/type': 4.0.7(@types/node@24.10.1) + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.2.0) cli-width: 4.1.0 - fast-wrap-ansi: 0.2.2 - mute-stream: 3.0.0 + mute-stream: 2.0.0 signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 25.2.0 + + '@inquirer/figures@1.0.15': {} - '@inquirer/figures@2.0.7': {} + '@inquirer/type@3.0.10(@types/node@22.20.0)': + optionalDependencies: + '@types/node': 22.20.0 + optional: true - '@inquirer/type@4.0.7(@types/node@24.10.1)': + '@inquirer/type@3.0.10(@types/node@25.2.0)': optionalDependencies: - '@types/node': 24.10.1 + '@types/node': 25.2.0 '@isaacs/balanced-match@4.0.1': {} @@ -2893,10 +3955,6 @@ snapshots: dependencies: '@isaacs/balanced-match': 4.0.1 - '@isaacs/fs-minipass@4.0.1': - dependencies: - minipass: 7.1.3 - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -2904,6 +3962,12 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + optional: true + '@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/trace-mapping@0.3.31': @@ -2911,6 +3975,14 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@kwsites/file-exists@1.1.1': + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@kwsites/promise-deferred@1.1.1': {} + '@mariozechner/clipboard-darwin-arm64@0.3.9': optional: true @@ -2957,39 +4029,41 @@ snapshots: '@mistralai/mistralai@2.2.6(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/semantic-conventions': 1.43.0 - ws: 8.21.1 + '@opentelemetry/semantic-conventions': 1.41.1 + ws: 8.21.0 zod: 4.4.3 - zod-to-json-schema: 3.25.2(zod@4.4.3) + zod-to-json-schema: 3.25.1(zod@4.4.3) optionalDependencies: '@opentelemetry/api': 1.9.0 transitivePeerDependencies: - bufferutil - utf-8-validate + '@mixmark-io/domino@2.2.0': {} + '@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)': dependencies: - '@hono/node-server': 1.19.13(hono@4.12.31) - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) + '@hono/node-server': 1.19.13(hono@4.12.28) + ajv: 8.20.0 + ajv-formats: 3.0.1(ajv@8.20.0) content-type: 1.0.5 - cors: 2.8.5 + cors: 2.8.6 cross-spawn: 7.0.6 eventsource: 3.0.7 eventsource-parser: 3.0.6 express: 5.2.1 - express-rate-limit: 8.6.0(express@5.2.1) - hono: 4.12.31 - jose: 6.1.3 + express-rate-limit: 8.3.1(express@5.2.1) + hono: 4.12.28 + jose: 6.2.1 json-schema-typed: 8.0.2 pkce-challenge: 5.0.1 raw-body: 3.0.2 zod: 4.4.3 - zod-to-json-schema: 3.25.2(zod@4.4.3) + zod-to-json-schema: 3.25.1(zod@4.4.3) transitivePeerDependencies: - supports-color - '@mswjs/interceptors@0.41.9': + '@mswjs/interceptors@0.41.0': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -2998,17 +4072,8 @@ snapshots: outvariant: 1.4.3 strict-event-emitter: 0.5.1 - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@tybys/wasm-util': 0.10.3 - optional: true - '@open-draft/deferred-promise@2.2.0': {} - '@open-draft/deferred-promise@3.0.0': {} - '@open-draft/logger@0.3.0': dependencies: is-node-process: 1.2.0 @@ -3016,50 +4081,55 @@ snapshots: '@open-draft/until@2.1.0': {} - '@openai/codex@0.144.0': + '@openai/codex@0.154.0': optionalDependencies: - '@openai/codex-darwin-arm64': '@openai/codex@0.144.0-darwin-arm64' - '@openai/codex-darwin-x64': '@openai/codex@0.144.0-darwin-x64' - '@openai/codex-linux-arm64': '@openai/codex@0.144.0-linux-arm64' - '@openai/codex-linux-x64': '@openai/codex@0.144.0-linux-x64' - '@openai/codex-win32-arm64': '@openai/codex@0.144.0-win32-arm64' - '@openai/codex-win32-x64': '@openai/codex@0.144.0-win32-x64' - - '@openai/codex@0.144.0-darwin-arm64': + '@openai/codex-darwin-arm64': '@openai/codex@0.154.0-darwin-arm64' + '@openai/codex-darwin-x64': '@openai/codex@0.154.0-darwin-x64' + '@openai/codex-linux-arm64': '@openai/codex@0.154.0-linux-arm64' + '@openai/codex-linux-x64': '@openai/codex@0.154.0-linux-x64' + '@openai/codex-win32-arm64': '@openai/codex@0.154.0-win32-arm64' + '@openai/codex-win32-x64': '@openai/codex@0.154.0-win32-x64' + + '@openai/codex@0.154.0-darwin-arm64': optional: true - '@openai/codex@0.144.0-darwin-x64': + '@openai/codex@0.154.0-darwin-x64': optional: true - '@openai/codex@0.144.0-linux-arm64': + '@openai/codex@0.154.0-linux-arm64': optional: true - '@openai/codex@0.144.0-linux-x64': + '@openai/codex@0.154.0-linux-x64': optional: true - '@openai/codex@0.144.0-win32-arm64': + '@openai/codex@0.154.0-win32-arm64': optional: true - '@openai/codex@0.144.0-win32-x64': + '@openai/codex@0.154.0-win32-x64': optional: true '@opentelemetry/api-logs@0.208.0': dependencies: - '@opentelemetry/api': 1.9.1 + '@opentelemetry/api': 1.9.0 '@opentelemetry/api@1.9.0': {} '@opentelemetry/api@1.9.1': {} - '@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/semantic-conventions': 1.43.0 + '@opentelemetry/semantic-conventions': 1.39.0 - '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/semantic-conventions': 1.39.0 + + '@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/semantic-conventions': 1.43.0 + '@opentelemetry/semantic-conventions': 1.41.1 '@opentelemetry/exporter-logs-otlp-http@0.208.0(@opentelemetry/api@1.9.1)': dependencies: @@ -3096,17 +4166,23 @@ snapshots: '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.1) protobufjs: 7.6.5 - '@opentelemetry/resources@2.10.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 + '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.39.0 - '@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/resources@2.5.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 + '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.39.0 + + '@opentelemetry/resources@2.8.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.8.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.41.1 '@opentelemetry/sdk-logs@0.208.0(@opentelemetry/api@1.9.1)': dependencies: @@ -3121,31 +4197,26 @@ snapshots: '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.1) '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 - '@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.1) '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 + '@opentelemetry/semantic-conventions': 1.41.1 - '@opentelemetry/sdk-trace@2.10.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 + '@opentelemetry/core': 2.8.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.8.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.41.1 + + '@opentelemetry/semantic-conventions@1.39.0': {} - '@opentelemetry/semantic-conventions@1.43.0': {} + '@opentelemetry/semantic-conventions@1.41.1': {} - '@oxc-project/types@0.139.0': {} + '@polka/url@1.0.0-next.29': + optional: true '@protobufjs/aspromise@1.1.2': {} @@ -3167,140 +4238,105 @@ snapshots: '@protobufjs/utf8@1.1.2': {} - '@rolldown/binding-android-arm64@1.1.5': - optional: true - - '@rolldown/binding-darwin-arm64@1.1.5': - optional: true - - '@rolldown/binding-darwin-x64@1.1.5': - optional: true - - '@rolldown/binding-freebsd-x64@1.1.5': - optional: true - - '@rolldown/binding-linux-arm-gnueabihf@1.1.5': - optional: true - - '@rolldown/binding-linux-arm64-gnu@1.1.5': - optional: true - - '@rolldown/binding-linux-arm64-musl@1.1.5': - optional: true - - '@rolldown/binding-linux-ppc64-gnu@1.1.5': - optional: true - - '@rolldown/binding-linux-s390x-gnu@1.1.5': - optional: true - - '@rolldown/binding-linux-x64-gnu@1.1.5': - optional: true - - '@rolldown/binding-linux-x64-musl@1.1.5': + '@rollup/rollup-android-arm-eabi@4.59.0': optional: true - '@rolldown/binding-openharmony-arm64@1.1.5': + '@rollup/rollup-android-arm64@4.59.0': optional: true - '@rolldown/binding-wasm32-wasi@1.1.5': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@rollup/rollup-darwin-arm64@4.59.0': optional: true - '@rolldown/binding-win32-arm64-msvc@1.1.5': + '@rollup/rollup-darwin-x64@4.59.0': optional: true - '@rolldown/binding-win32-x64-msvc@1.1.5': + '@rollup/rollup-freebsd-arm64@4.59.0': optional: true - '@rolldown/pluginutils@1.0.1': {} - - '@rollup/rollup-android-arm-eabi@4.53.3': + '@rollup/rollup-freebsd-x64@4.59.0': optional: true - '@rollup/rollup-android-arm64@4.53.3': + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': optional: true - '@rollup/rollup-darwin-arm64@4.53.3': + '@rollup/rollup-linux-arm-musleabihf@4.59.0': optional: true - '@rollup/rollup-darwin-x64@4.53.3': + '@rollup/rollup-linux-arm64-gnu@4.59.0': optional: true - '@rollup/rollup-freebsd-arm64@4.53.3': + '@rollup/rollup-linux-arm64-musl@4.59.0': optional: true - '@rollup/rollup-freebsd-x64@4.53.3': + '@rollup/rollup-linux-loong64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + '@rollup/rollup-linux-loong64-musl@4.59.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.3': + '@rollup/rollup-linux-ppc64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.3': + '@rollup/rollup-linux-ppc64-musl@4.59.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.3': + '@rollup/rollup-linux-riscv64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.3': + '@rollup/rollup-linux-riscv64-musl@4.59.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.3': + '@rollup/rollup-linux-s390x-gnu@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.3': + '@rollup/rollup-linux-x64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.3': + '@rollup/rollup-linux-x64-musl@4.59.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.3': + '@rollup/rollup-openbsd-x64@4.59.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.3': + '@rollup/rollup-openharmony-arm64@4.59.0': optional: true - '@rollup/rollup-linux-x64-musl@4.53.3': + '@rollup/rollup-win32-arm64-msvc@4.59.0': optional: true - '@rollup/rollup-openharmony-arm64@4.53.3': + '@rollup/rollup-win32-ia32-msvc@4.59.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.3': + '@rollup/rollup-win32-x64-gnu@4.59.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.3': + '@rollup/rollup-win32-x64-msvc@4.59.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.3': - optional: true + '@silvia-odwyer/photon-node@0.3.4': {} - '@rollup/rollup-win32-x64-msvc@4.53.3': - optional: true + '@simple-git/args-pathspec@1.0.3': {} - '@silvia-odwyer/photon-node@0.3.4': {} + '@simple-git/argv-parser@1.1.1': + dependencies: + '@simple-git/args-pathspec': 1.0.3 - '@smithy/core@3.29.8': + '@smithy/core@3.26.0': dependencies: - '@smithy/types': 4.16.1 + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.4.13': + '@smithy/credential-provider-imds@4.4.2': dependencies: - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.6.10': + '@smithy/fetch-http-handler@5.5.2': dependencies: - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 '@smithy/is-array-buffer@2.2.0': @@ -3309,23 +4345,23 @@ snapshots: '@smithy/node-http-handler@4.7.3': dependencies: - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@smithy/node-http-handler@4.9.10': + '@smithy/node-http-handler@4.8.2': dependencies: - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@smithy/signature-v4@5.6.9': + '@smithy/signature-v4@5.5.2': dependencies: - '@smithy/core': 3.29.8 - '@smithy/types': 4.16.1 + '@smithy/core': 3.26.0 + '@smithy/types': 4.15.0 tslib: 2.8.1 - '@smithy/types@4.16.1': + '@smithy/types@4.15.0': dependencies: tslib: 2.8.1 @@ -3343,9 +4379,85 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@tybys/wasm-util@0.10.3': + '@swc/core-darwin-arm64@1.15.43': + optional: true + + '@swc/core-darwin-x64@1.15.43': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.15.43': + optional: true + + '@swc/core-linux-arm64-gnu@1.15.43': + optional: true + + '@swc/core-linux-arm64-musl@1.15.43': + optional: true + + '@swc/core-linux-ppc64-gnu@1.15.43': + optional: true + + '@swc/core-linux-s390x-gnu@1.15.43': + optional: true + + '@swc/core-linux-x64-gnu@1.15.43': + optional: true + + '@swc/core-linux-x64-musl@1.15.43': + optional: true + + '@swc/core-win32-arm64-msvc@1.15.43': + optional: true + + '@swc/core-win32-ia32-msvc@1.15.43': + optional: true + + '@swc/core-win32-x64-msvc@1.15.43': + optional: true + + '@swc/core@1.15.43': dependencies: - tslib: 2.8.1 + '@swc/counter': 0.1.3 + '@swc/types': 0.1.27 + optionalDependencies: + '@swc/core-darwin-arm64': 1.15.43 + '@swc/core-darwin-x64': 1.15.43 + '@swc/core-linux-arm-gnueabihf': 1.15.43 + '@swc/core-linux-arm64-gnu': 1.15.43 + '@swc/core-linux-arm64-musl': 1.15.43 + '@swc/core-linux-ppc64-gnu': 1.15.43 + '@swc/core-linux-s390x-gnu': 1.15.43 + '@swc/core-linux-x64-gnu': 1.15.43 + '@swc/core-linux-x64-musl': 1.15.43 + '@swc/core-win32-arm64-msvc': 1.15.43 + '@swc/core-win32-ia32-msvc': 1.15.43 + '@swc/core-win32-x64-msvc': 1.15.43 + optional: true + + '@swc/counter@0.1.3': + optional: true + + '@swc/types@0.1.27': + dependencies: + '@swc/counter': 0.1.3 + optional: true + + '@turbo/darwin-64@2.9.18': + optional: true + + '@turbo/darwin-arm64@2.9.18': + optional: true + + '@turbo/linux-64@2.9.18': + optional: true + + '@turbo/linux-arm64@2.9.18': + optional: true + + '@turbo/windows-64@2.9.18': + optional: true + + '@turbo/windows-arm64@2.9.18': optional: true '@types/bun@1.3.14': @@ -3364,66 +4476,97 @@ snapshots: '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 - '@types/node': 24.10.1 + '@types/node': 24.12.0 '@types/ms@2.1.0': {} - '@types/node@24.10.1': + '@types/node@22.20.0': + dependencies: + undici-types: 6.21.0 + + '@types/node@24.12.0': dependencies: undici-types: 7.16.0 - '@types/retry@0.12.0': {} + '@types/node@24.13.3': + dependencies: + undici-types: 7.18.2 + + '@types/node@25.2.0': + dependencies: + undici-types: 7.16.0 + optional: true - '@types/set-cookie-parser@2.4.10': + '@types/parse-path@7.1.0': dependencies: - '@types/node': 24.10.1 + parse-path: 7.1.0 + + '@types/retry@0.12.0': {} '@types/statuses@2.0.6': {} - '@types/tar@6.1.13': - dependencies: - '@types/node': 24.10.1 - minipass: 4.2.8 + '@types/turndown@5.0.6': {} - '@vitest/expect@4.1.10': + '@vitest/expect@4.1.8': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 + '@vitest/spy': 4.1.8 + '@vitest/utils': 4.1.8 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.10(msw@2.15.0(@types/node@24.10.1)(typescript@5.9.3))(vite@8.1.5(@types/node@24.10.1)(esbuild@0.27.1)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.8(msw@2.12.8(@types/node@22.20.0)(typescript@5.9.3))(vite@7.3.5(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0))': + dependencies: + '@vitest/spy': 4.1.8 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + msw: 2.12.8(@types/node@22.20.0)(typescript@5.9.3) + vite: 7.3.5(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0) + + '@vitest/mocker@4.1.8(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.10 + '@vitest/spy': 4.1.8 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.15.0(@types/node@24.10.1)(typescript@5.9.3) - vite: 8.1.5(@types/node@24.10.1)(esbuild@0.27.1)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.9.0) + msw: 2.12.8(@types/node@25.2.0)(typescript@5.9.3) + vite: 7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0) - '@vitest/pretty-format@4.1.10': + '@vitest/pretty-format@4.1.8': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.10': + '@vitest/runner@4.1.8': dependencies: - '@vitest/utils': 4.1.10 + '@vitest/utils': 4.1.8 pathe: 2.0.3 - '@vitest/snapshot@4.1.10': + '@vitest/snapshot@4.1.8': dependencies: - '@vitest/pretty-format': 4.1.10 - '@vitest/utils': 4.1.10 + '@vitest/pretty-format': 4.1.8 + '@vitest/utils': 4.1.8 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.10': {} + '@vitest/spy@4.1.8': {} + + '@vitest/ui@4.1.8(vitest@4.1.8)': + dependencies: + '@vitest/utils': 4.1.8 + fflate: 0.8.3 + flatted: 3.4.3 + pathe: 2.0.3 + sirv: 3.0.2 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.0 + vitest: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.2.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) + optional: true - '@vitest/utils@4.1.10': + '@vitest/utils@4.1.8': dependencies: - '@vitest/pretty-format': 4.1.10 + '@vitest/pretty-format': 4.1.8 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 @@ -3434,13 +4577,16 @@ snapshots: acorn@8.15.0: {} + acorn@8.17.0: + optional: true + agent-base@7.1.4: {} - ajv-formats@3.0.1(ajv@8.17.1): + ajv-formats@3.0.1(ajv@8.20.0): optionalDependencies: - ajv: 8.17.1 + ajv: 8.20.0 - ajv@8.17.1: + ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 fast-uri: 3.1.4 @@ -3463,13 +4609,13 @@ snapshots: bignumber.js@9.3.1: {} - body-parser@2.2.1: + body-parser@2.2.2: dependencies: bytes: 3.1.2 content-type: 1.0.5 debug: 4.4.3 http-errors: 2.0.1 - iconv-lite: 0.7.0 + iconv-lite: 0.7.2 on-finished: 2.4.1 qs: 6.15.3 raw-body: 3.0.2 @@ -3479,19 +4625,22 @@ snapshots: bowser@2.14.1: {} - brace-expansion@5.0.8: + brace-expansion@5.0.5: dependencies: balanced-match: 4.0.4 buffer-equal-constant-time@1.0.1: {} + buffer-from@1.1.2: + optional: true + bun-types@1.3.14: dependencies: - '@types/node': 24.10.1 + '@types/node': 24.12.0 - bundle-require@5.1.0(esbuild@0.27.1): + bundle-require@5.1.0(esbuild@0.27.2): dependencies: - esbuild: 0.27.1 + esbuild: 0.27.2 load-tsconfig: 0.2.5 bytes@3.1.2: {} @@ -3516,8 +4665,6 @@ snapshots: dependencies: readdirp: 4.1.2 - chownr@3.0.0: {} - cli-width@4.1.0: {} cliui@8.0.1: @@ -3534,6 +4681,9 @@ snapshots: commander@14.0.3: {} + commander@2.20.3: + optional: true + commander@4.1.1: {} confbox@0.1.8: {} @@ -3552,7 +4702,7 @@ snapshots: cookie@1.1.1: {} - cors@2.8.5: + cors@2.8.6: dependencies: object-assign: 4.1.1 vary: 1.1.2 @@ -3563,15 +4713,31 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + cssstyle@4.6.0: + dependencies: + '@asamuzakjp/css-color': 3.2.0 + rrweb-cssom: 0.8.0 + optional: true + data-uri-to-buffer@4.0.1: {} + data-urls@5.0.0: + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + optional: true + debug@4.4.3: dependencies: ms: 2.1.3 + decimal.js@10.6.0: + optional: true + depd@2.0.0: {} - detect-libc@2.1.2: {} + detect-libc@2.1.2: + optional: true diff@8.0.4: {} @@ -3591,44 +4757,106 @@ snapshots: encodeurl@2.0.0: {} + entities@6.0.1: + optional: true + es-define-property@1.0.1: {} es-errors@1.3.0: {} - es-module-lexer@2.3.1: {} + es-module-lexer@2.0.0: {} es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 - esbuild@0.27.1: + esbuild@0.27.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.1 - '@esbuild/android-arm': 0.27.1 - '@esbuild/android-arm64': 0.27.1 - '@esbuild/android-x64': 0.27.1 - '@esbuild/darwin-arm64': 0.27.1 - '@esbuild/darwin-x64': 0.27.1 - '@esbuild/freebsd-arm64': 0.27.1 - '@esbuild/freebsd-x64': 0.27.1 - '@esbuild/linux-arm': 0.27.1 - '@esbuild/linux-arm64': 0.27.1 - '@esbuild/linux-ia32': 0.27.1 - '@esbuild/linux-loong64': 0.27.1 - '@esbuild/linux-mips64el': 0.27.1 - '@esbuild/linux-ppc64': 0.27.1 - '@esbuild/linux-riscv64': 0.27.1 - '@esbuild/linux-s390x': 0.27.1 - '@esbuild/linux-x64': 0.27.1 - '@esbuild/netbsd-arm64': 0.27.1 - '@esbuild/netbsd-x64': 0.27.1 - '@esbuild/openbsd-arm64': 0.27.1 - '@esbuild/openbsd-x64': 0.27.1 - '@esbuild/openharmony-arm64': 0.27.1 - '@esbuild/sunos-x64': 0.27.1 - '@esbuild/win32-arm64': 0.27.1 - '@esbuild/win32-ia32': 0.27.1 - '@esbuild/win32-x64': 0.27.1 + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 + + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + optional: true escalade@3.2.0: {} @@ -3646,20 +4874,17 @@ snapshots: dependencies: eventsource-parser: 3.0.6 - expect-type@1.4.0: {} + expect-type@1.3.0: {} - express-rate-limit@8.6.0(express@5.2.1): + express-rate-limit@8.3.1(express@5.2.1): dependencies: - debug: 4.4.3 express: 5.2.1 - ip-address: 10.2.0 - transitivePeerDependencies: - - supports-color + ip-address: 10.1.0 express@5.2.1: dependencies: accepts: 2.0.0 - body-parser: 2.2.1 + body-parser: 2.2.2 content-disposition: 1.0.1 content-type: 1.0.5 cookie: 0.7.2 @@ -3681,8 +4906,8 @@ snapshots: qs: 6.15.3 range-parser: 1.2.1 router: 2.2.0 - send: 1.2.0 - serve-static: 2.2.0 + send: 1.2.1 + serve-static: 2.2.1 statuses: 2.0.2 type-is: 2.0.1 vary: 1.1.2 @@ -3695,18 +4920,8 @@ snapshots: fast-sha256@1.3.0: {} - fast-string-truncated-width@3.0.3: {} - - fast-string-width@3.0.2: - dependencies: - fast-string-truncated-width: 3.0.3 - fast-uri@3.1.4: {} - fast-wrap-ansi@0.2.2: - dependencies: - fast-string-width: 3.0.2 - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -3720,6 +4935,8 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 + fflate@0.8.2: {} + fflate@0.8.3: {} finalhandler@2.1.1: @@ -3737,7 +4954,10 @@ snapshots: dependencies: magic-string: 0.30.21 mlly: 1.8.0 - rollup: 4.53.3 + rollup: 4.59.0 + + flatted@3.4.3: + optional: true formdata-polyfill@4.0.10: dependencies: @@ -3752,7 +4972,7 @@ snapshots: function-bind@1.1.2: {} - gaxios@7.3.0: + gaxios@7.1.5: dependencies: extend: 3.0.2 https-proxy-agent: 7.0.6 @@ -3762,7 +4982,7 @@ snapshots: gcp-metadata@8.1.2: dependencies: - gaxios: 7.3.0 + gaxios: 7.1.5 google-logging-utils: 1.1.3 json-bigint: 1.0.0 transitivePeerDependencies: @@ -3782,7 +5002,7 @@ snapshots: get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.4 math-intrinsics: 1.1.0 get-proto@1.0.1: @@ -3790,9 +5010,14 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-tsconfig@4.13.0: + git-up@8.1.1: + dependencies: + is-ssh: 1.4.1 + parse-url: 9.2.0 + + git-url-parse@16.1.0: dependencies: - resolve-pkg-maps: 1.0.0 + git-up: 8.1.1 glob@13.0.6: dependencies: @@ -3800,11 +5025,11 @@ snapshots: minipass: 7.1.3 path-scurry: 2.0.2 - google-auth-library@10.9.1: + google-auth-library@10.9.0: dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 - gaxios: 7.3.0 + gaxios: 7.1.5 gcp-metadata: 8.1.2 google-logging-utils: 1.1.3 jws: 4.0.1 @@ -3817,28 +5042,30 @@ snapshots: graceful-fs@4.2.11: {} - graphql@16.14.2: {} + graphql@16.12.0: {} grok-mermaid@0.2.2: {} has-symbols@1.1.0: {} - hasown@2.0.2: + hasown@2.0.4: dependencies: function-bind: 1.1.2 - headers-polyfill@5.0.1: - dependencies: - '@types/set-cookie-parser': 2.4.10 - set-cookie-parser: 3.1.2 + headers-polyfill@4.0.3: {} highlight.js@10.7.3: {} - hono@4.12.31: {} + hono@4.12.28: {} hosted-git-info@9.0.3: dependencies: - lru-cache: 11.5.2 + lru-cache: 11.2.5 + + html-encoding-sniffer@4.0.0: + dependencies: + whatwg-encoding: 3.1.1 + optional: true http-errors@2.0.1: dependencies: @@ -3862,7 +5089,12 @@ snapshots: transitivePeerDependencies: - supports-color - iconv-lite@0.7.0: + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 @@ -3870,7 +5102,7 @@ snapshots: inherits@2.0.4: {} - ip-address@10.2.0: {} + ip-address@10.1.0: {} ipaddr.js@1.9.1: {} @@ -3878,23 +5110,58 @@ snapshots: is-node-process@1.2.0: {} + is-potential-custom-element-name@1.0.1: + optional: true + is-promise@4.0.0: {} + is-ssh@1.4.1: + dependencies: + protocols: 2.0.2 + isexe@2.0.0: {} jiti@2.7.0: {} - jose@6.1.3: {} + jose@6.2.1: {} joycon@3.1.1: {} + jsdom@26.1.0: + dependencies: + cssstyle: 4.6.0 + data-urls: 5.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.23 + parse5: 7.3.0 + rrweb-cssom: 0.8.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.1.2 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.21.0 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + optional: true + json-bigint@1.0.0: dependencies: bignumber.js: 9.3.1 json-schema-to-ts@3.1.1: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.29.2 ts-algebra: 2.0.0 json-schema-traverse@1.0.0: {} @@ -3912,7 +5179,7 @@ snapshots: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.7.3 + semver: 7.8.4 jwa@2.0.1: dependencies: @@ -3973,6 +5240,7 @@ snapshots: lightningcss-linux-x64-musl: 1.33.0 lightningcss-win32-arm64-msvc: 1.33.0 lightningcss-win32-x64-msvc: 1.33.0 + optional: true lilconfig@3.1.3: {} @@ -3996,7 +5264,10 @@ snapshots: long@5.3.2: {} - lru-cache@11.5.2: {} + lru-cache@10.4.3: + optional: true + + lru-cache@11.2.5: {} magic-string@0.30.21: dependencies: @@ -4016,57 +5287,80 @@ snapshots: dependencies: mime-db: 1.54.0 - minimatch@10.1.1: + minimatch@10.1.2: dependencies: '@isaacs/brace-expansion': 5.0.1 minimatch@10.2.5: dependencies: - brace-expansion: 5.0.8 - - minipass@4.2.8: {} + brace-expansion: 5.0.5 minipass@7.1.3: {} - minizlib@3.1.0: - dependencies: - minipass: 7.1.3 - mlly@1.8.0: dependencies: acorn: 8.15.0 pathe: 2.0.3 pkg-types: 1.3.1 - ufo: 1.6.1 + ufo: 1.6.3 + + mrmime@2.0.1: + optional: true ms@2.1.3: {} - msw@2.15.0(@types/node@24.10.1)(typescript@5.9.3): + msw@2.12.8(@types/node@22.20.0)(typescript@5.9.3): dependencies: - '@inquirer/confirm': 6.1.1(@types/node@24.10.1) - '@mswjs/interceptors': 0.41.9 - '@open-draft/deferred-promise': 3.0.0 + '@inquirer/confirm': 5.1.21(@types/node@22.20.0) + '@mswjs/interceptors': 0.41.0 + '@open-draft/deferred-promise': 2.2.0 '@types/statuses': 2.0.6 cookie: 1.1.1 - graphql: 16.14.2 - headers-polyfill: 5.0.1 + graphql: 16.12.0 + headers-polyfill: 4.0.3 is-node-process: 1.2.0 outvariant: 1.4.3 - path-to-regexp: 8.4.2 + path-to-regexp: 6.3.0 + picocolors: 1.1.1 + rettime: 0.10.1 + statuses: 2.0.2 + strict-event-emitter: 0.5.1 + tough-cookie: 6.0.0 + type-fest: 5.4.3 + until-async: 3.0.2 + yargs: 17.7.2 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@types/node' + optional: true + + msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3): + dependencies: + '@inquirer/confirm': 5.1.21(@types/node@25.2.0) + '@mswjs/interceptors': 0.41.0 + '@open-draft/deferred-promise': 2.2.0 + '@types/statuses': 2.0.6 + cookie: 1.1.1 + graphql: 16.12.0 + headers-polyfill: 4.0.3 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 picocolors: 1.1.1 - rettime: 0.11.11 + rettime: 0.10.1 statuses: 2.0.2 strict-event-emitter: 0.5.1 - tough-cookie: 6.0.2 - type-fest: 5.8.0 + tough-cookie: 6.0.0 + type-fest: 5.4.3 until-async: 3.0.2 - yargs: 17.7.3 + yargs: 17.7.2 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - '@types/node' - mute-stream@3.0.0: {} + mute-stream@2.0.0: {} mz@2.7.0: dependencies: @@ -4086,11 +5380,14 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 + nwsapi@2.2.23: + optional: true + object-assign@4.1.1: {} object-inspect@1.13.4: {} - obug@2.1.4: {} + obug@2.1.1: {} on-finished@2.4.1: dependencies: @@ -4100,9 +5397,9 @@ snapshots: dependencies: wrappy: 1.0.2 - openai@6.26.0(ws@8.21.1)(zod@4.4.3): + openai@6.26.0(ws@8.21.0)(zod@4.4.3): optionalDependencies: - ws: 8.21.1 + ws: 8.21.0 zod: 4.4.3 outvariant@1.4.3: {} @@ -4112,6 +5409,20 @@ snapshots: '@types/retry': 0.12.0 retry: 0.13.1 + parse-path@7.1.0: + dependencies: + protocols: 2.0.2 + + parse-url@9.2.0: + dependencies: + '@types/parse-path': 7.1.0 + parse-path: 7.1.0 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + optional: true + parseurl@1.3.3: {} partial-json@0.1.7: {} @@ -4120,9 +5431,11 @@ snapshots: path-scurry@2.0.2: dependencies: - lru-cache: 11.5.2 + lru-cache: 11.2.5 minipass: 7.1.3 + path-to-regexp@6.3.0: {} + path-to-regexp@8.4.2: {} pathe@2.0.3: {} @@ -4143,16 +5456,16 @@ snapshots: mlly: 1.8.0 pathe: 2.0.3 - postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.22)(tsx@4.21.0)(yaml@2.9.0): + postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.23)(tsx@4.22.4)(yaml@2.9.0): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.7.0 - postcss: 8.5.22 - tsx: 4.21.0 + postcss: 8.5.23 + tsx: 4.22.4 yaml: 2.9.0 - postcss@8.5.22: + postcss@8.5.23: dependencies: nanoid: 3.3.16 picocolors: 1.1.1 @@ -4175,14 +5488,19 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.2 - '@types/node': 24.10.1 + '@types/node': 24.13.3 long: 5.3.2 + protocols@2.0.2: {} + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 + punycode@2.3.1: + optional: true + qs@6.15.3: dependencies: es-define-property: 1.0.1 @@ -4194,7 +5512,7 @@ snapshots: dependencies: bytes: 3.1.2 http-errors: 2.0.1 - iconv-lite: 0.7.0 + iconv-lite: 0.7.2 unpipe: 1.0.0 readdirp@4.1.2: {} @@ -4205,61 +5523,41 @@ snapshots: resolve-from@5.0.0: {} - resolve-pkg-maps@1.0.0: {} - retry@0.12.0: {} retry@0.13.1: {} - rettime@0.11.11: {} + rettime@0.10.1: {} - rolldown@1.1.5: - dependencies: - '@oxc-project/types': 0.139.0 - '@rolldown/pluginutils': 1.0.1 - optionalDependencies: - '@rolldown/binding-android-arm64': 1.1.5 - '@rolldown/binding-darwin-arm64': 1.1.5 - '@rolldown/binding-darwin-x64': 1.1.5 - '@rolldown/binding-freebsd-x64': 1.1.5 - '@rolldown/binding-linux-arm-gnueabihf': 1.1.5 - '@rolldown/binding-linux-arm64-gnu': 1.1.5 - '@rolldown/binding-linux-arm64-musl': 1.1.5 - '@rolldown/binding-linux-ppc64-gnu': 1.1.5 - '@rolldown/binding-linux-s390x-gnu': 1.1.5 - '@rolldown/binding-linux-x64-gnu': 1.1.5 - '@rolldown/binding-linux-x64-musl': 1.1.5 - '@rolldown/binding-openharmony-arm64': 1.1.5 - '@rolldown/binding-wasm32-wasi': 1.1.5 - '@rolldown/binding-win32-arm64-msvc': 1.1.5 - '@rolldown/binding-win32-x64-msvc': 1.1.5 - - rollup@4.53.3: + rollup@4.59.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.3 - '@rollup/rollup-android-arm64': 4.53.3 - '@rollup/rollup-darwin-arm64': 4.53.3 - '@rollup/rollup-darwin-x64': 4.53.3 - '@rollup/rollup-freebsd-arm64': 4.53.3 - '@rollup/rollup-freebsd-x64': 4.53.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 - '@rollup/rollup-linux-arm-musleabihf': 4.53.3 - '@rollup/rollup-linux-arm64-gnu': 4.53.3 - '@rollup/rollup-linux-arm64-musl': 4.53.3 - '@rollup/rollup-linux-loong64-gnu': 4.53.3 - '@rollup/rollup-linux-ppc64-gnu': 4.53.3 - '@rollup/rollup-linux-riscv64-gnu': 4.53.3 - '@rollup/rollup-linux-riscv64-musl': 4.53.3 - '@rollup/rollup-linux-s390x-gnu': 4.53.3 - '@rollup/rollup-linux-x64-gnu': 4.53.3 - '@rollup/rollup-linux-x64-musl': 4.53.3 - '@rollup/rollup-openharmony-arm64': 4.53.3 - '@rollup/rollup-win32-arm64-msvc': 4.53.3 - '@rollup/rollup-win32-ia32-msvc': 4.53.3 - '@rollup/rollup-win32-x64-gnu': 4.53.3 - '@rollup/rollup-win32-x64-msvc': 4.53.3 + '@rollup/rollup-android-arm-eabi': 4.59.0 + '@rollup/rollup-android-arm64': 4.59.0 + '@rollup/rollup-darwin-arm64': 4.59.0 + '@rollup/rollup-darwin-x64': 4.59.0 + '@rollup/rollup-freebsd-arm64': 4.59.0 + '@rollup/rollup-freebsd-x64': 4.59.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 + '@rollup/rollup-linux-arm-musleabihf': 4.59.0 + '@rollup/rollup-linux-arm64-gnu': 4.59.0 + '@rollup/rollup-linux-arm64-musl': 4.59.0 + '@rollup/rollup-linux-loong64-gnu': 4.59.0 + '@rollup/rollup-linux-loong64-musl': 4.59.0 + '@rollup/rollup-linux-ppc64-gnu': 4.59.0 + '@rollup/rollup-linux-ppc64-musl': 4.59.0 + '@rollup/rollup-linux-riscv64-gnu': 4.59.0 + '@rollup/rollup-linux-riscv64-musl': 4.59.0 + '@rollup/rollup-linux-s390x-gnu': 4.59.0 + '@rollup/rollup-linux-x64-gnu': 4.59.0 + '@rollup/rollup-linux-x64-musl': 4.59.0 + '@rollup/rollup-openbsd-x64': 4.59.0 + '@rollup/rollup-openharmony-arm64': 4.59.0 + '@rollup/rollup-win32-arm64-msvc': 4.59.0 + '@rollup/rollup-win32-ia32-msvc': 4.59.0 + '@rollup/rollup-win32-x64-gnu': 4.59.0 + '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 router@2.2.0: @@ -4272,15 +5570,23 @@ snapshots: transitivePeerDependencies: - supports-color + rrweb-cssom@0.8.0: + optional: true + safe-buffer@5.2.1: {} safer-buffer@2.1.2: {} - semver@7.7.3: {} + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + optional: true semver@7.8.0: {} - send@1.2.0: + semver@7.8.4: {} + + send@1.2.1: dependencies: debug: 4.4.3 encodeurl: 2.0.0 @@ -4296,17 +5602,15 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@2.2.0: + serve-static@2.2.1: dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 1.2.0 + send: 1.2.1 transitivePeerDependencies: - supports-color - set-cookie-parser@3.1.2: {} - setprototypeof@1.2.0: {} shebang-command@2.0.0: @@ -4349,8 +5653,34 @@ snapshots: signal-exit@4.1.0: {} + simple-git@3.36.0: + dependencies: + '@kwsites/file-exists': 1.1.1 + '@kwsites/promise-deferred': 1.1.1 + '@simple-git/args-pathspec': 1.0.3 + '@simple-git/argv-parser': 1.1.1 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + optional: true + source-map-js@1.2.1: {} + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + optional: true + + source-map@0.6.1: + optional: true + source-map@0.7.6: {} stackback@0.0.2: {} @@ -4362,7 +5692,7 @@ snapshots: statuses@2.0.2: {} - std-env@4.2.0: {} + std-env@4.1.0: {} strict-event-emitter@0.5.1: {} @@ -4386,15 +5716,18 @@ snapshots: tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 + symbol-tree@3.2.4: + optional: true + tagged-tag@1.0.0: {} - tar@7.5.21: + terser@5.46.0: dependencies: - '@isaacs/fs-minipass': 4.0.1 - chownr: 3.0.0 - minipass: 7.1.3 - minizlib: 3.1.0 - yallist: 5.0.0 + '@jridgewell/source-map': 0.3.11 + acorn: 8.17.0 + commander: 2.20.3 + source-map-support: 0.5.21 + optional: true thenify-all@1.6.0: dependencies: @@ -4408,7 +5741,7 @@ snapshots: tinyexec@0.3.2: {} - tinyexec@1.2.4: {} + tinyexec@1.0.2: {} tinyglobby@0.2.15: dependencies: @@ -4422,47 +5755,71 @@ snapshots: tinyrainbow@3.1.0: {} - tldts-core@7.4.9: {} + tldts-core@6.1.86: + optional: true + + tldts-core@7.0.22: {} + + tldts@6.1.86: + dependencies: + tldts-core: 6.1.86 + optional: true - tldts@7.4.9: + tldts@7.0.22: dependencies: - tldts-core: 7.4.9 + tldts-core: 7.0.22 toidentifier@1.0.1: {} - tough-cookie@6.0.2: + totalist@3.0.1: + optional: true + + tough-cookie@5.1.2: + dependencies: + tldts: 6.1.86 + optional: true + + tough-cookie@6.0.0: + dependencies: + tldts: 7.0.22 + + tr46@5.1.1: dependencies: - tldts: 7.4.9 + punycode: 2.3.1 + optional: true tree-kill@1.2.2: {} + tree-sitter-cli@0.26.8: {} + ts-algebra@2.0.0: {} ts-interface-checker@0.1.13: {} tslib@2.8.1: {} - tsup@8.5.1(jiti@2.7.0)(postcss@8.5.22)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.9.0): + tsup@8.5.1(@swc/core@1.15.43)(jiti@2.7.0)(postcss@8.5.23)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.9.0): dependencies: - bundle-require: 5.1.0(esbuild@0.27.1) + bundle-require: 5.1.0(esbuild@0.27.2) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 debug: 4.4.3 - esbuild: 0.27.1 + esbuild: 0.27.2 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.22)(tsx@4.21.0)(yaml@2.9.0) + postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.23)(tsx@4.22.4)(yaml@2.9.0) resolve-from: 5.0.0 - rollup: 4.53.3 + rollup: 4.59.0 source-map: 0.7.6 sucrase: 3.35.1 tinyexec: 0.3.2 tinyglobby: 0.2.15 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.5.22 + '@swc/core': 1.15.43 + postcss: 8.5.23 typescript: 5.9.3 transitivePeerDependencies: - jiti @@ -4470,14 +5827,27 @@ snapshots: - tsx - yaml - tsx@4.21.0: + tsx@4.22.4: dependencies: - esbuild: 0.27.1 - get-tsconfig: 4.13.0 + esbuild: 0.28.1 optionalDependencies: fsevents: 2.3.3 + optional: true + + turbo@2.9.18: + optionalDependencies: + '@turbo/darwin-64': 2.9.18 + '@turbo/darwin-arm64': 2.9.18 + '@turbo/linux-64': 2.9.18 + '@turbo/linux-arm64': 2.9.18 + '@turbo/windows-64': 2.9.18 + '@turbo/windows-arm64': 2.9.18 - type-fest@5.8.0: + turndown@7.2.4: + dependencies: + '@mixmark-io/domino': 2.2.0 + + type-fest@5.4.3: dependencies: tagged-tag: 1.0.0 @@ -4491,10 +5861,14 @@ snapshots: typescript@5.9.3: {} - ufo@1.6.1: {} + ufo@1.6.3: {} + + undici-types@6.21.0: {} undici-types@7.16.0: {} + undici-types@7.18.2: {} + undici@8.9.0: {} unpipe@1.0.0: {} @@ -4505,51 +5879,126 @@ snapshots: vary@1.1.2: {} - vite@8.1.5(@types/node@24.10.1)(esbuild@0.27.1)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.9.0): + vite@7.3.5(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0): dependencies: + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + postcss: 8.5.23 + rollup: 4.59.0 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 22.20.0 + fsevents: 2.3.3 + jiti: 2.7.0 lightningcss: 1.33.0 + terser: 5.46.0 + tsx: 4.22.4 + yaml: 2.9.0 + + vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0): + dependencies: + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.5) picomatch: 4.0.5 - postcss: 8.5.22 - rolldown: 1.1.5 + postcss: 8.5.23 + rollup: 4.59.0 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 24.10.1 - esbuild: 0.27.1 + '@types/node': 25.2.0 fsevents: 2.3.3 jiti: 2.7.0 - tsx: 4.21.0 + lightningcss: 1.33.0 + terser: 5.46.0 + tsx: 4.22.4 yaml: 2.9.0 - vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.10.1)(msw@2.15.0(@types/node@24.10.1)(typescript@5.9.3))(vite@8.1.5(@types/node@24.10.1)(esbuild@0.27.1)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.9.0)): - dependencies: - '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(msw@2.15.0(@types/node@24.10.1)(typescript@5.9.3))(vite@8.1.5(@types/node@24.10.1)(esbuild@0.27.1)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.10 - '@vitest/runner': 4.1.10 - '@vitest/snapshot': 4.1.10 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - es-module-lexer: 2.3.1 - expect-type: 1.4.0 + vitest@4.1.8(@opentelemetry/api@1.9.1)(@types/node@22.20.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@22.20.0)(typescript@5.9.3))(vite@7.3.5(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)): + dependencies: + '@vitest/expect': 4.1.8 + '@vitest/mocker': 4.1.8(msw@2.12.8(@types/node@22.20.0)(typescript@5.9.3))(vite@7.3.5(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.8 + '@vitest/runner': 4.1.8 + '@vitest/snapshot': 4.1.8 + '@vitest/spy': 4.1.8 + '@vitest/utils': 4.1.8 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.1.0 + vite: 7.3.5(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@opentelemetry/api': 1.9.1 + '@types/node': 22.20.0 + '@vitest/ui': 4.1.8(vitest@4.1.8) + jsdom: 26.1.0 + transitivePeerDependencies: + - msw + + vitest@4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.2.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)): + dependencies: + '@vitest/expect': 4.1.8 + '@vitest/mocker': 4.1.8(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.8 + '@vitest/runner': 4.1.8 + '@vitest/snapshot': 4.1.8 + '@vitest/spy': 4.1.8 + '@vitest/utils': 4.1.8 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 magic-string: 0.30.21 - obug: 2.1.4 + obug: 2.1.1 pathe: 2.0.3 picomatch: 4.0.3 - std-env: 4.2.0 + std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 1.2.4 + tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.1.5(@types/node@24.10.1)(esbuild@0.27.1)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.9.0) + vite: 7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 - '@types/node': 24.10.1 + '@types/node': 25.2.0 + '@vitest/ui': 4.1.8(vitest@4.1.8) + jsdom: 26.1.0 transitivePeerDependencies: - msw + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + optional: true + web-streams-polyfill@3.3.3: {} + web-tree-sitter@0.24.7: {} + + webidl-conversions@7.0.0: + optional: true + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + optional: true + + whatwg-mimetype@4.0.0: + optional: true + + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 + optional: true + which@2.0.2: dependencies: isexe: 2.0.0 @@ -4559,6 +6008,12 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -4567,17 +6022,21 @@ snapshots: wrappy@1.0.2: {} - ws@8.21.1: {} + ws@8.21.0: {} - y18n@5.0.8: {} + xml-name-validator@5.0.0: + optional: true - yallist@5.0.0: {} + xmlchars@2.2.0: + optional: true + + y18n@5.0.8: {} yaml@2.9.0: {} yargs-parser@21.1.1: {} - yargs@17.7.3: + yargs@17.7.2: dependencies: cliui: 8.0.1 escalade: 3.2.0 @@ -4587,9 +6046,11 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yoctocolors-cjs@2.1.3: {} + yoga-wasm-web@0.3.3: {} - zod-to-json-schema@3.25.2(zod@4.4.3): + zod-to-json-schema@3.25.1(zod@4.4.3): dependencies: zod: 4.4.3 diff --git a/packages/agent/pnpm-workspace.yaml b/packages/agent/pnpm-workspace.yaml new file mode 100644 index 000000000000..7368ced4a75d --- /dev/null +++ b/packages/agent/pnpm-workspace.yaml @@ -0,0 +1,144 @@ +# The catalog and overrides mirror products/desktop/pnpm-workspace.yaml: the desktop app +# bundles these packages, so both workspaces must resolve the same versions. +packages: + - packages/* + +catalog: + '@hono/node-server': ^1.13.7 + '@hono/trpc-server': ^0.3.4 + '@earendil-works/pi-agent-core': 0.84.1 + '@earendil-works/pi-ai': 0.84.1 + '@earendil-works/pi-coding-agent': 0.84.1 + '@earendil-works/pi-tui': 0.84.1 + '@parcel/watcher': ^2.5.6 + '@phosphor-icons/react': ^2.1.10 + '@posthog/brand': 0.11.0 + '@posthog/quill': 0.3.0-beta.29 + '@radix-ui/themes': ^3.2.1 + '@tanstack/react-query': ^5.100.14 + '@tanstack/react-router': ^1.170.10 + '@tanstack/react-router-devtools': ^1.167.0 + '@tanstack/router-generator': ^1.167.17 + '@tanstack/router-plugin': ^1.168.13 + '@trpc/client': ^11.17.0 + '@trpc/server': ^11.17.0 + '@trpc/tanstack-react-query': ^11.17.0 + '@types/node': ^20.0.0 + '@types/react': ^19.2.15 + '@types/react-dom': ^19.2.3 + hono: ^4.6.14 + inversify: ^7.10.6 + react: 19.2.6 + react-dom: 19.2.6 + reflect-metadata: ^0.2.2 + superjson: ^2.2.2 + tsup: ^8.5.1 + typescript: ^5.5.0 + +ignoredBuiltDependencies: + # koffi's loader uses the prebuilt @koromix/koffi-- package, never the install-script build + - koffi + - msw + - protobufjs + +minimumReleaseAge: 10080 + +minimumReleaseAgeExclude: + - '@agentclientprotocol/sdk' + - '@anthropic-ai/claude-agent-sdk' + - '@anthropic-ai/claude-agent-sdk-darwin-arm64' + - '@anthropic-ai/claude-agent-sdk-darwin-x64' + - '@anthropic-ai/claude-agent-sdk-linux-arm64' + - '@anthropic-ai/claude-agent-sdk-linux-arm64-musl' + - '@anthropic-ai/claude-agent-sdk-linux-x64' + - '@anthropic-ai/claude-agent-sdk-linux-x64-musl' + - '@anthropic-ai/claude-agent-sdk-win32-arm64' + - '@anthropic-ai/claude-agent-sdk-win32-x64' + - '@anthropic-ai/sdk' + - '@earendil-works/pi-agent-core' + - '@earendil-works/pi-ai' + - '@earendil-works/pi-coding-agent' + - '@earendil-works/pi-tui' + - '@pierre/diffs' + - '@pierre/theming' + - '@posthog/quill' + - '@posthog/quill-charts' + - '@posthog/quill-tokens' + - '@tanstack/devtools-core' + - '@tanstack/history' + - '@tanstack/react-router' + - '@tanstack/react-router-devtools' + - '@tanstack/react-store' + - '@tanstack/react-virtual' + - '@tanstack/router-core' + - '@tanstack/router-devtools-core' + - '@tanstack/router-generator' + - '@tanstack/router-plugin' + - '@tanstack/router-utils' + - '@tanstack/store' + - '@tanstack/virtual-core' + - '@tanstack/virtual-file-routes' + +overrides: + # node-abi predates Electron 42; ^3.92.0 is the first release that knows its ABI + # (146), needed when rebuilding native modules against Electron 42. + node-abi: ^3.92.0 + # Dedupe the zod 4.x line to one version so cross-package schema types stay + # nameable (TS2742). Scoped to 4.x; 3.x consumers are untouched. + 'zod@^4.0.0': 4.4.3 + # Keep one React across the monorepo so shared packages resolve one runtime. + react: 19.2.6 + react-dom: 19.2.6 + react-test-renderer: 19.2.6 + # Dedupe @types/react so shared UI Ref types unify across apps (a second copy + # makes nominally-distinct Ref types and breaks ref props in packages/ui). + '@types/react': ^19.2.15 + '@types/react-dom': ^19.2.3 + # quill 0.3.0-beta.14 ships a broken `@base-ui/react: catalog:` dependency (the + # catalog protocol leaked into the published package and can't resolve for an + # external dep); pin it to a real version so installs of quill succeed. + '@posthog/quill>@base-ui/react': ^1.3.0 + # node-gyp 12 downloads Node headers via undici (^6.25.0). undici through 7.27.2 + # crashes intermittently with `assert(!this.paused)` in the H1 parser's finish() + # when the socket ends while the body stream is paused, which happens when a + # native module compiles from source under backpressure (e.g. node-pty in CI). + # undici 8.4.1 dropped that assertion and handles the paused case gracefully; + # node-gyp only uses stable public exports (fetch/Agent), so 8.x is safe. + 'node-gyp>undici': 8.5.0 + # Swap vite for the rolldown-based fork for faster dev boot times (#3027). + vite: npm:rolldown-vite@7.3.1 + # Security: force patched versions for advisory-flagged packages (each pin is over the + # 7-day minimumReleaseAge and clears the package's advisories). Drop a pin once the + # dependents require a patched version on their own. + protobufjs: 7.6.5 + axios: 1.18.1 + hono: 4.12.28 + '@xmldom/xmldom': 0.8.13 + node-forge: 1.4.0 + simple-git: 3.36.0 + # Additional HIGH transitive fixes (low-risk patch/minor bumps within range). + drizzle-orm: 0.45.2 + fast-uri: 3.1.4 + '@hono/node-server': 1.19.13 + lodash: 4.18.0 + serialize-javascript: 7.0.5 + '@electron/get>undici': 7.28.0 + rollup: 4.59.0 + 'brace-expansion@1': 1.1.16 + 'brace-expansion@2': 2.1.2 + 'ws@7': 7.5.11 + 'ws@8': 8.21.0 + 'path-to-regexp@8': 8.4.2 + qs: 6.15.3 + smol-toml: 1.6.1 + +onlyBuiltDependencies: + - '@parcel/watcher' + - '@posthog/cli' + - better-sqlite3 + - core-js + - electron + - electron-winstaller + - esbuild + - node-pty + - tree-sitter-cli diff --git a/packages/agent/scripts/rimraf.mjs b/packages/agent/scripts/rimraf.mjs new file mode 100644 index 000000000000..82e83f931175 --- /dev/null +++ b/packages/agent/scripts/rimraf.mjs @@ -0,0 +1,5 @@ +import { rmSync } from "node:fs"; + +for (const dir of process.argv.slice(2)) { + rmSync(dir, { recursive: true, force: true }); +} diff --git a/products/desktop/scripts/sync-benjamin.mts b/packages/agent/scripts/sync-benjamin.mts similarity index 100% rename from products/desktop/scripts/sync-benjamin.mts rename to packages/agent/scripts/sync-benjamin.mts diff --git a/packages/agent/turbo.json b/packages/agent/turbo.json new file mode 100644 index 000000000000..3a9e48325221 --- /dev/null +++ b/packages/agent/turbo.json @@ -0,0 +1,26 @@ +{ + "$schema": "https://turbo.build/schema.json", + "tasks": { + "build": { + "dependsOn": ["^build"], + "env": ["SKIP_PRODUCT_ENGINEER_SKILLS_DOWNLOAD"], + "outputs": ["dist/**"] + }, + "typecheck": { + "dependsOn": ["^build"] + }, + "lint": {}, + "test": { + "dependsOn": ["^build"] + }, + "test:e2e": { + "dependsOn": ["^build"], + "cache": false + }, + "dev": { + "dependsOn": ["^build"], + "cache": false, + "persistent": true + } + } +} diff --git a/packages/agent/vitest.config.base.ts b/packages/agent/vitest.config.base.ts new file mode 100644 index 000000000000..de8684a38a7b --- /dev/null +++ b/packages/agent/vitest.config.base.ts @@ -0,0 +1,19 @@ +// Shared Vitest test options for Trunk Flaky Tests uploads. Imported and spread +// into each package's `test` block so the junit reporter and retry policy stay +// defined in one place. See the upload steps in the monorepo root's +// .github/workflows/desktop-test.yml. +// +// `outputFile` is relative, so each config writes ./junit.xml next to itself; +// CI globs apps/*/junit.xml and packages/*/junit.xml. The explicit type keeps +// the reporter tuple assignable across the Vitest 2.x and 4.x versions in use. +export const trunkTestOptions: { + retry: number; + reporters: (string | [string, Record])[]; +} = { + // Disable retries so flaky-test detection sees raw pass/fail results. + retry: 0, + reporters: [ + "default", + ["junit", { outputFile: "./junit.xml", addFileAttribute: true }], + ], +}; diff --git a/posthog/object_tags/kinds.py b/posthog/object_tags/kinds.py index 089048a02edb..7f98b300e24b 100644 --- a/posthog/object_tags/kinds.py +++ b/posthog/object_tags/kinds.py @@ -12,7 +12,7 @@ the regenerated files: - ``products/desktop/packages/core/src/inbox/objectKinds.generated.ts`` -- ``products/desktop/packages/agent-contracts/src/objectTagKinds.generated.ts`` +- ``packages/agent/packages/agent-contracts/src/objectTagKinds.generated.ts`` - ``frontend/src/lib/components/AgentObjectTags/objectKinds.generated.ts`` Python consumers import this module directly. diff --git a/posthog/object_tags/projection.py b/posthog/object_tags/projection.py index e753d164a77c..9c752812b0b5 100755 --- a/posthog/object_tags/projection.py +++ b/posthog/object_tags/projection.py @@ -98,6 +98,6 @@ def render() -> dict[str, str]: registry = render_registry_ts() return { "products/desktop/packages/core/src/inbox/objectKinds.generated.ts": registry, - "products/desktop/packages/agent-contracts/src/objectTagKinds.generated.ts": render_prompt_kinds_ts(), + "packages/agent/packages/agent-contracts/src/objectTagKinds.generated.ts": render_prompt_kinds_ts(), "frontend/src/lib/components/AgentObjectTags/objectKinds.generated.ts": registry, } diff --git a/products/desktop/.gitignore b/products/desktop/.gitignore index e111d90241c3..e36fac71d813 100644 --- a/products/desktop/.gitignore +++ b/products/desktop/.gitignore @@ -3,6 +3,7 @@ node_modules/ .pnpm-store/ # Build outputs +.agent-workspace-stamp dist/ release/ out/ diff --git a/products/desktop/.vscode/tasks.json b/products/desktop/.vscode/tasks.json index 92e359ce4dea..a7217715793b 100644 --- a/products/desktop/.vscode/tasks.json +++ b/products/desktop/.vscode/tasks.json @@ -14,7 +14,7 @@ { "label": "start-agent-watch", "type": "shell", - "command": "pnpm --filter agent dev", + "command": "pnpm --dir ../../packages/agent --filter agent dev", "isBackground": true, "problemMatcher": { "pattern": { diff --git a/products/desktop/AGENTS.md b/products/desktop/AGENTS.md index c2b5dfd8b350..028866779f8d 100644 --- a/products/desktop/AGENTS.md +++ b/products/desktop/AGENTS.md @@ -35,6 +35,10 @@ Principle: logic is portable; hosts are thin. | `@posthog/electron-trpc` | tRPC-over-Electron-IPC transport. | Feature code | | `@posthog/git`, `@posthog/enricher`, `@posthog/agent` | Reusable domain implementation packages. | Host-specific code | +`@posthog/agent`, `@posthog/agent-contracts`, `@posthog/enricher`, `@posthog/git` and `@posthog/harness` live in their own workspace at `packages/agent` in the repo root, because cloud sandboxes boot the agent without the desktop app. +This workspace links them by path, so turbo cannot see their files: `pnpm build`, `pnpm typecheck` and `pnpm test` build that workspace first and write `.agent-workspace-stamp`, which turbo hashes. +After changing that workspace, run `pnpm build:agent` before calling `turbo` directly, or turbo serves stale cached results. + Hosts: - `apps/code`: Electron desktop host. @@ -212,8 +216,9 @@ await boot(container); - `pnpm bootstrap:cloud-task`: link dependencies from the prebaked pnpm store without running unrelated app install hooks, then build the packages required before scoped typechecks in cloud tasks. - `pnpm bootstrap:cloud-task:wait`: in a cloud task, the backend already started `bootstrap:cloud-task` in the background. Run this before any other `pnpm` command here, so a second install does not race it. Exit code 2 means nothing was started, so run `pnpm bootstrap:cloud-task` yourself. - `pnpm dev`: run agent watch and desktop app. +- `pnpm build:agent`: install if needed and build the agent workspace at `packages/agent`, then refresh the turbo stamp. - `pnpm build`: build all packages. -- `pnpm typecheck`: typecheck all packages. +- `pnpm typecheck`: typecheck all packages, including the agent workspace. - `pnpm lint`: run Biome lint and autofix. - `pnpm format`: run Biome format. - `pnpm test`: run unit tests. diff --git a/products/desktop/apps/code/.storybook/main.ts b/products/desktop/apps/code/.storybook/main.ts index ce9cc4764b41..a7d76ff2d977 100644 --- a/products/desktop/apps/code/.storybook/main.ts +++ b/products/desktop/apps/code/.storybook/main.ts @@ -83,35 +83,35 @@ const config: StorybookConfig = { find: "@posthog/agent/adapters/claude/permissions/permission-options", replacement: path.resolve( __dirname, - "../../../packages/agent/dist/adapters/claude/permissions/permission-options.js", + "../../../../../packages/agent/packages/agent/dist/adapters/claude/permissions/permission-options.js", ), }, { find: "@posthog/agent/adapters/claude/conversion/tool-use-to-acp", replacement: path.resolve( __dirname, - "../../../packages/agent/dist/adapters/claude/conversion/tool-use-to-acp.js", + "../../../../../packages/agent/packages/agent/dist/adapters/claude/conversion/tool-use-to-acp.js", ), }, { find: "@posthog/agent/adapters/claude/questions/utils", replacement: path.resolve( __dirname, - "../../../packages/agent/dist/adapters/claude/questions/utils.js", + "../../../../../packages/agent/packages/agent/dist/adapters/claude/questions/utils.js", ), }, { find: "@posthog/agent/adapters/reasoning-effort", replacement: path.resolve( __dirname, - "../../../packages/agent/dist/adapters/reasoning-effort.js", + "../../../../../packages/agent/packages/agent/dist/adapters/reasoning-effort.js", ), }, { find: "@posthog/agent/gateway-models", replacement: path.resolve( __dirname, - "../../../packages/agent/dist/gateway-models.js", + "../../../../../packages/agent/packages/agent/dist/gateway-models.js", ), }, { diff --git a/products/desktop/apps/code/package.json b/products/desktop/apps/code/package.json index a0e0df2a81c6..aa881161e7be 100644 --- a/products/desktop/apps/code/package.json +++ b/products/desktop/apps/code/package.json @@ -89,13 +89,13 @@ "@parcel/watcher": "^2.5.6", "@phosphor-icons/react": "^2.1.10", "@pierre/diffs": "^1.2.10", - "@posthog/agent": "workspace:*", + "@posthog/agent": "link:../../../../packages/agent/packages/agent", "@posthog/api-client": "workspace:*", "@posthog/core": "workspace:*", "@posthog/di": "workspace:*", "@posthog/electron-trpc": "workspace:*", - "@posthog/enricher": "workspace:*", - "@posthog/git": "workspace:*", + "@posthog/enricher": "link:../../../../packages/agent/packages/enricher", + "@posthog/git": "link:../../../../packages/agent/packages/git", "@posthog/hedgehog-mode": "^0.0.53", "@posthog/host-router": "workspace:*", "@posthog/host-trpc": "workspace:*", diff --git a/products/desktop/apps/code/scripts/build-linux-docker.sh b/products/desktop/apps/code/scripts/build-linux-docker.sh index 7e275f24e225..56c2f949eb7b 100755 --- a/products/desktop/apps/code/scripts/build-linux-docker.sh +++ b/products/desktop/apps/code/scripts/build-linux-docker.sh @@ -50,11 +50,10 @@ HOST_COMMIT="$(git -C "$REPO_ROOT" rev-parse --short HEAD 2>/dev/null || echo un # Stream the repo source (no node_modules / build artifacts) into the container # so node_modules lives on the container's overlayfs, not a slow FUSE bind mount. # Only the output dir is bind-mounted so artifacts come back to the host. -cd "$REPO_ROOT" +cd "$REPO_ROOT/../.." # COPYFILE_DISABLE stops bsdtar from embedding macOS extended attrs as ._ files. COPYFILE_DISABLE=1 tar -cf - \ - --exclude='./.git' \ - --exclude='./.pnpm-store' \ + --exclude='.pnpm-store' \ --exclude='node_modules' \ --exclude='.turbo' \ --exclude='.vite' \ @@ -63,7 +62,7 @@ COPYFILE_DISABLE=1 tar -cf - \ --exclude='playwright-results' \ --exclude='._*' \ --exclude='.DS_Store' \ - . | exec docker run --rm -i \ + products/desktop packages/agent | exec docker run --rm -i \ --platform "$DOCKER_PLATFORM" \ --name build-linux \ -e CI=true \ @@ -85,13 +84,12 @@ COPYFILE_DISABLE=1 tar -cf - \ git config --global --add safe.directory /work # Postinstall scripts call `git rev-parse` — give them a repo to find. git init -q && git add -A && git -c user.email=x@x -c user.name=x commit -q -m init + cd /work/products/desktop pnpm install --frozen-lockfile + node scripts/build-agent-workspace.mjs pnpm --filter @posthog/electron-trpc build pnpm --filter @posthog/platform build - pnpm --filter @posthog/shared... build - pnpm --filter @posthog/git build - pnpm --filter @posthog/enricher build - pnpm --filter @posthog/agent build + pnpm --filter @posthog/shared build cd apps/code pnpm exec electron-vite build if [ -n "${MAKE_TARGETS:-}" ]; then diff --git a/products/desktop/apps/code/vite-main-plugins.mts b/products/desktop/apps/code/vite-main-plugins.mts index 9023ba54c110..53dd6694f9c7 100644 --- a/products/desktop/apps/code/vite-main-plugins.mts +++ b/products/desktop/apps/code/vite-main-plugins.mts @@ -26,7 +26,7 @@ import { claudeExecutableCandidates as sdkClaudeExecutableCandidates, targetArch, targetPlatform, -} from "../../packages/agent/build/native-binary.mjs"; +} from "../../../../packages/agent/packages/agent/build/native-binary.mjs"; export function getGitCommit(): string { if (process.env.BUILD_COMMIT) return process.env.BUILD_COMMIT; @@ -173,7 +173,10 @@ export function copyPiRpcHost(): Plugin { __dirname, "../../node_modules/@posthog/agent/dist/pi/rpc-host.js", ), - join(__dirname, "../../packages/agent/dist/pi/rpc-host.js"), + join( + __dirname, + "../../../../packages/agent/packages/agent/dist/pi/rpc-host.js", + ), ]; const source = candidates.find((candidate) => existsSync(candidate)); if (!source) { @@ -262,7 +265,11 @@ export function copyClaudeExecutable(): Plugin { "../../node_modules/@posthog/agent/dist/claude-cli", binName, ), - join(__dirname, "../../packages/agent/dist/claude-cli", binName), + join( + __dirname, + "../../../../packages/agent/packages/agent/dist/claude-cli", + binName, + ), ...sdkClaudeExecutableCandidates(join(__dirname, "node_modules")), ...sdkClaudeExecutableCandidates(join(__dirname, "../../node_modules")), ]; @@ -630,7 +637,10 @@ export function copyEnricherGrammars(): Plugin { const candidates = [ join(__dirname, "node_modules/@posthog/enricher/grammars"), join(__dirname, "../../node_modules/@posthog/enricher/grammars"), - join(__dirname, "../../packages/enricher/grammars"), + join( + __dirname, + "../../../../packages/agent/packages/enricher/grammars", + ), ]; const sourceDir = candidates.find((p) => existsSync(p)); diff --git a/products/desktop/apps/code/vite.main.config.mts b/products/desktop/apps/code/vite.main.config.mts index 6d52ac569b6e..dbd50c7c7bfa 100644 --- a/products/desktop/apps/code/vite.main.config.mts +++ b/products/desktop/apps/code/vite.main.config.mts @@ -27,7 +27,7 @@ import { claudeExecutableCandidates as sdkClaudeExecutableCandidates, targetArch, targetPlatform, -} from "../../packages/agent/build/native-binary.mjs"; +} from "../../../../packages/agent/packages/agent/build/native-binary.mjs"; import { createForceDevModeDefine, createPosthogPlugin, @@ -189,7 +189,11 @@ function copyClaudeExecutable(): Plugin { "../../node_modules/@posthog/agent/dist/claude-cli", binName, ), - join(__dirname, "../../packages/agent/dist/claude-cli", binName), + join( + __dirname, + "../../../../packages/agent/packages/agent/dist/claude-cli", + binName, + ), ...sdkClaudeExecutableCandidates(join(__dirname, "node_modules")), ...sdkClaudeExecutableCandidates(join(__dirname, "../../node_modules")), ]; @@ -552,7 +556,10 @@ function copyEnricherGrammars(): Plugin { const candidates = [ join(__dirname, "node_modules/@posthog/enricher/grammars"), join(__dirname, "../../node_modules/@posthog/enricher/grammars"), - join(__dirname, "../../packages/enricher/grammars"), + join( + __dirname, + "../../../../packages/agent/packages/enricher/grammars", + ), ]; const sourceDir = candidates.find((p) => existsSync(p)); diff --git a/products/desktop/apps/code/vite.shared.mts b/products/desktop/apps/code/vite.shared.mts index 03920c0473c7..560012bf4b9d 100644 --- a/products/desktop/apps/code/vite.shared.mts +++ b/products/desktop/apps/code/vite.shared.mts @@ -60,23 +60,29 @@ export const workspaceAliases: Alias[] = [ find: /^@posthog\/agent-contracts\/(.+)$/, replacement: path.resolve( __dirname, - "../../packages/agent-contracts/src/$1", + "../../../../packages/agent/packages/agent-contracts/src/$1", ), }, { find: /^@posthog\/agent-contracts$/, replacement: path.resolve( __dirname, - "../../packages/agent-contracts/src/index.ts", + "../../../../packages/agent/packages/agent-contracts/src/index.ts", ), }, { find: /^@posthog\/agent\/(.+)$/, - replacement: path.resolve(__dirname, "../../packages/agent/src/$1.ts"), + replacement: path.resolve( + __dirname, + "../../../../packages/agent/packages/agent/src/$1.ts", + ), }, { find: "@posthog/agent", - replacement: path.resolve(__dirname, "../../packages/agent/src/index.ts"), + replacement: path.resolve( + __dirname, + "../../../../packages/agent/packages/agent/src/index.ts", + ), }, { find: /^@posthog\/shared\/(.+)$/, @@ -90,7 +96,7 @@ export const workspaceAliases: Alias[] = [ find: "@posthog/enricher", replacement: path.resolve( __dirname, - "../../packages/enricher/src/index.ts", + "../../../../packages/agent/packages/enricher/src/index.ts", ), }, { @@ -148,7 +154,10 @@ export const mainAliases: Alias[] = [ }, { find: /^@posthog\/git\/(.+)$/, - replacement: path.resolve(__dirname, "../../packages/git/src/$1"), + replacement: path.resolve( + __dirname, + "../../../../packages/agent/packages/git/src/$1", + ), }, ...workspaceAliases, ]; diff --git a/products/desktop/apps/mobile/metro.config.js b/products/desktop/apps/mobile/metro.config.js index 0a828a4df55c..f50070c98b71 100644 --- a/products/desktop/apps/mobile/metro.config.js +++ b/products/desktop/apps/mobile/metro.config.js @@ -4,11 +4,15 @@ const path = require("node:path"); const projectRoot = __dirname; const monorepoRoot = path.resolve(projectRoot, "../.."); +const agentContractsRoot = path.resolve( + monorepoRoot, + "../../packages/agent/packages/agent-contracts", +); const config = getDefaultConfig(projectRoot); -// Watch monorepo root for changes -config.watchFolders = [monorepoRoot]; +// Metro only bundles files under a watched folder, so agent-contracts is listed too. +config.watchFolders = [monorepoRoot, agentContractsRoot]; // Let Metro find modules in both locations config.resolver.nodeModulesPaths = [ @@ -49,10 +53,7 @@ nativeWindConfig.resolver = { // imports like `@posthog/shared/domain-types`. const SOURCE_RESOLVED_PACKAGES = { "@posthog/shared": path.resolve(monorepoRoot, "packages/shared/src"), - "@posthog/agent-contracts": path.resolve( - monorepoRoot, - "packages/agent-contracts/src", - ), + "@posthog/agent-contracts": path.resolve(agentContractsRoot, "src"), }; const upstreamResolveRequest = nativeWindConfig.resolver.resolveRequest; diff --git a/products/desktop/apps/web/package.json b/products/desktop/apps/web/package.json index 85eacc428c79..78efa4aedf81 100644 --- a/products/desktop/apps/web/package.json +++ b/products/desktop/apps/web/package.json @@ -15,10 +15,10 @@ "@agentclientprotocol/sdk": "0.22.1", "@inversifyjs/strongly-typed": "2.2.0", "@pierre/diffs": "^1.2.10", - "@posthog/agent": "workspace:*", + "@posthog/agent": "link:../../../../packages/agent/packages/agent", "@posthog/core": "workspace:*", "@posthog/di": "workspace:*", - "@posthog/harness": "workspace:*", + "@posthog/harness": "link:../../../../packages/agent/packages/harness", "@posthog/host-router": "workspace:*", "@posthog/host-trpc": "workspace:*", "@posthog/platform": "workspace:*", diff --git a/products/desktop/apps/web/vite.aliases.ts b/products/desktop/apps/web/vite.aliases.ts index cc361f937a23..0624013f6f4e 100644 --- a/products/desktop/apps/web/vite.aliases.ts +++ b/products/desktop/apps/web/vite.aliases.ts @@ -3,14 +3,16 @@ import { fileURLToPath } from "node:url"; const dir = path.dirname(fileURLToPath(import.meta.url)); const src = (name: string) => path.resolve(dir, `../../packages/${name}/src`); +const agentWorkspaceSrc = (name: string) => + path.resolve(dir, `../../../../packages/agent/packages/${name}/src`); // Mirror apps/code's vite.shared.mts: resolve @posthog// to package // src, since the packages' array-fallback `exports` don't resolve under Rollup. // Shared by vite.config.ts (build/dev) and vitest.config.ts (tests) so the two // can't drift. -const subpath = (name: string) => ({ +const subpath = (name: string, resolveSrc = src) => ({ find: new RegExp(`^@posthog/${name}/(.+)$`), - replacement: `${src(name)}/$1`, + replacement: `${resolveSrc(name)}/$1`, }); export const posthogSrcAliases = [ @@ -18,13 +20,13 @@ export const posthogSrcAliases = [ subpath("ui"), subpath("core"), subpath("shared"), - subpath("agent-contracts"), + subpath("agent-contracts", agentWorkspaceSrc), subpath("host-router"), subpath("host-trpc"), subpath("platform"), subpath("workspace-client"), subpath("api-client"), - subpath("agent"), - subpath("enricher"), - subpath("git"), + subpath("agent", agentWorkspaceSrc), + subpath("enricher", agentWorkspaceSrc), + subpath("git", agentWorkspaceSrc), ]; diff --git a/products/desktop/biome.jsonc b/products/desktop/biome.jsonc index 955101ae1a4c..27d792a871cf 100644 --- a/products/desktop/biome.jsonc +++ b/products/desktop/biome.jsonc @@ -126,10 +126,7 @@ // Object-tag kind registry generated from posthog/object_tags/kinds.py; the // renderer's byte-stable output is what `hogli build:projections --check` // compares against, so no formatter may touch it. - "includes": [ - "packages/core/src/inbox/objectKinds.generated.ts", - "packages/agent-contracts/src/objectTagKinds.generated.ts" - ], + "includes": ["packages/core/src/inbox/objectKinds.generated.ts"], "formatter": { "enabled": false } @@ -149,12 +146,8 @@ } }, { - // Disallow console.* in Code and agent source code - use logger instead - "includes": [ - "apps/code/src/**/*.ts", - "apps/code/src/**/*.tsx", - "packages/agent/src/**/*.ts" - ], + // Disallow console.* in Code source code - use logger instead + "includes": ["apps/code/src/**/*.ts", "apps/code/src/**/*.tsx"], "linter": { "rules": { "suspicious": { @@ -166,7 +159,6 @@ { // Logger implementations intentionally wrap console "includes": [ - "packages/agent/src/utils/logger.ts", "apps/code/src/main/lib/logger.ts", "apps/code/src/renderer/lib/logger.ts" ], @@ -280,51 +272,6 @@ } } }, - { - "includes": [ - "packages/agent/**/*.ts", - "packages/enricher/**/*.ts", - "packages/git/**/*.ts", - "packages/harness/**/*.ts" - ], - "linter": { - "rules": { - "style": { - "noRestrictedImports": { - "level": "error", - "options": { - "patterns": [ - { - "group": ["@posthog/shared", "@posthog/shared/*"], - "message": "The agent runtime must not depend on desktop code. Import from @posthog/agent-contracts." - } - ] - } - } - } - } - } - }, - { - "includes": ["packages/agent-contracts/**/*.ts"], - "linter": { - "rules": { - "style": { - "noRestrictedImports": { - "level": "error", - "options": { - "patterns": [ - { - "group": ["@posthog/*"], - "message": "agent-contracts is a leaf shared with the agent runtime. It imports no internal package." - } - ] - } - } - } - } - } - }, { "includes": [ "packages/platform/src/**/*.ts", diff --git a/products/desktop/docs/CLOUD-MCP-IMPORT.md b/products/desktop/docs/CLOUD-MCP-IMPORT.md index 98d8185637f9..12d1bc44ffda 100644 --- a/products/desktop/docs/CLOUD-MCP-IMPORT.md +++ b/products/desktop/docs/CLOUD-MCP-IMPORT.md @@ -12,11 +12,11 @@ A local task run gets all of the user's MCP servers: the PostHog MCP plus `packages/workspace-server/src/services/agent/auth-adapter.ts`), and — for the Claude adapter — the user's own servers from `~/.claude.json` (`loadUserClaudeJsonMcpServers` in -`packages/agent/src/adapters/claude/session/mcp-config.ts`). +`packages/agent/packages/agent/src/adapters/claude/session/mcp-config.ts`). A cloud run's sandbox only gets what the backend bakes into the agent server's `--mcpServers` flag at spawn (`remoteMcpServerSchema` in -`packages/agent/src/server/schemas.ts`: `http`/`sse` + `url` + `headers`). The +`packages/agent/packages/agent/src/server/schemas.ts`: `http`/`sse` + `url` + `headers`). The sandbox never reads `~/.claude.json`, so tasks that need the user's own MCP servers (Grafana, Sentry, internal tools, ...) force the user back to local runs. @@ -135,10 +135,10 @@ of importables when the cap bites, since they have no other transport. Headers are captured at launch. For servers whose tokens expire mid-run, the rotation mechanism already exists on the sandbox side: the `refresh_session` command (`refreshSessionParamsSchema`, -`packages/agent/src/server/schemas.ts`) pushes a fresh `mcpServers` list into +`packages/agent/packages/agent/src/server/schemas.ts`) pushes a fresh `mcpServers` list into a running session, and the Claude adapter tears down and rebuilds the query with the new list (`refreshSession` in -`packages/agent/src/adapters/claude/claude-agent.ts`). +`packages/agent/packages/agent/src/adapters/claude/claude-agent.ts`). What's missing is the client half — today the desktop never sends `refresh_session` for cloud runs (`sendCommandInput` in diff --git a/products/desktop/docs/CLOUD-MCP-RELAY.md b/products/desktop/docs/CLOUD-MCP-RELAY.md index 5125e7c51171..ed18cb878166 100644 --- a/products/desktop/docs/CLOUD-MCP-RELAY.md +++ b/products/desktop/docs/CLOUD-MCP-RELAY.md @@ -5,7 +5,7 @@ Status: **implemented** (same PR as the import work), behind the same Follows [CLOUD-MCP-IMPORT.md](./CLOUD-MCP-IMPORT.md) (which handles the easy case: url-based servers on public hosts). Sandbox side: `McpRelayServer` -(`packages/agent/src/server/mcp-relay-server.ts`). Desktop execution: +(`packages/agent/packages/agent/src/server/mcp-relay-server.ts`). Desktop execution: `McpRelayService` (`packages/workspace-server/src/services/mcp-relay/`). Client coordination: `CloudTaskService.handleMcpRelayRequest` (`packages/core/src/cloud-task/cloud-task.ts`). Django broker: PR #68954. @@ -35,7 +35,7 @@ executes each request against the real server and returns the result. ## Prior art: the question relay The exact shape already exists for permission requests / questions -(`packages/agent/src/server/agent-server.ts`): +(`packages/agent/packages/agent/src/server/agent-server.ts`): - Sandbox → client: a `permission_request` **event** with a `requestId = crypto.randomUUID()` correlation id, broadcast over both the @@ -68,7 +68,7 @@ sandbox desktop └──────────────────────────────┘ ``` -### Sandbox side (`packages/agent/src/server/`) +### Sandbox side (`packages/agent/packages/agent/src/server/`) A new `McpRelayServer` starts one loopback HTTP MCP endpoint per relay-designated server @@ -150,7 +150,7 @@ A new `McpRelayService`: ### Schemas -Zod, in `packages/agent/src/server/schemas.ts` (sandbox) and +Zod, in `packages/agent/packages/agent/src/server/schemas.ts` (sandbox) and `packages/core/src/cloud-task/schemas.ts` (client): ```ts diff --git a/products/desktop/docs/LOCAL-DEVELOPMENT.md b/products/desktop/docs/LOCAL-DEVELOPMENT.md index 0a26cff2c52d..42b443f3faed 100644 --- a/products/desktop/docs/LOCAL-DEVELOPMENT.md +++ b/products/desktop/docs/LOCAL-DEVELOPMENT.md @@ -74,11 +74,11 @@ The desktop app bundles Codex 0.154.0 and Claude Code 2.1.280 from Claude Agent Codex 0.154.0 includes GPT-6-Astra support. Updating a separately installed CLI does not update the app's bundled agents. -When changing Codex versions, update both `packages/agent/package.json` and `apps/code/scripts/download-binaries.mjs` so Codex and its code-mode host stay on the same release. +When changing Codex versions, update both `packages/agent/packages/agent/package.json` (agent workspace, from the repo root) and `apps/code/scripts/download-binaries.mjs` so Codex and its code-mode host stay on the same release. The downloader skips existing binaries, so remove `apps/code/resources/codex-acp/codex` and `apps/code/resources/codex-acp/codex-code-mode-host` before running it again after a version change (use the `.exe` filenames on Windows). -For Claude Code, keep the Claude Agent SDK versions in `packages/agent/package.json` and `packages/workspace-server/package.json` aligned and regenerate the desktop lockfile. +For Claude Code, keep the Claude Agent SDK versions in `packages/agent/packages/agent/package.json` (agent workspace, from the repo root) and `packages/workspace-server/package.json` aligned and regenerate the desktop lockfile. -The agent bundles `@posthog/harness` through `noExternal` in `packages/agent/tsup.config.ts` and copies its runtime assets during the build. +The agent bundles `@posthog/harness` through `noExternal` in `packages/agent/packages/agent/tsup.config.ts` and copies its runtime assets during the build. Keep it in the agent's `devDependencies`, alongside the other bundled workspace packages. Adding it to production dependencies makes Electron packaging expand the harness dependency tree repeatedly and fail with `Invalid string length`. diff --git a/products/desktop/docs/README.md b/products/desktop/docs/README.md index b7368a68f17f..226214330dca 100644 --- a/products/desktop/docs/README.md +++ b/products/desktop/docs/README.md @@ -48,5 +48,5 @@ These documents capture design intent at a point in time. Check the current code - [Electron desktop app](../apps/code/README.md) - [Mobile app](../apps/mobile/README.md) - [Web app](../apps/web/README.md) -- [Agent framework](../packages/agent/README.md) -- [Harness](../packages/harness/README.md) +- [Agent framework](../../../packages/agent/packages/agent/README.md) +- [Harness](../../../packages/agent/packages/harness/README.md) diff --git a/products/desktop/knip.json b/products/desktop/knip.json index 9f979176b7d2..306210f37313 100644 --- a/products/desktop/knip.json +++ b/products/desktop/knip.json @@ -37,22 +37,6 @@ "@posthog/enricher" ] }, - "packages/agent": { - "project": ["src/**/*.ts"], - "ignore": ["src/templates/**"], - "ignoreDependencies": [ - "yoga-wasm-web", - "@vitest/coverage-v8", - "@openai/codex" - ], - "includeEntryExports": false, - "entry": ["src/**/*.bench.ts"] - }, - "packages/agent-contracts": { - "entry": ["src/**/*.test.ts"], - "project": ["src/**/*.ts"], - "includeEntryExports": false - }, "packages/api-client": { "entry": ["src/**/*.test.ts"], "project": ["src/**/*.{ts,tsx}"], @@ -77,17 +61,6 @@ ], "project": ["src/**/*.ts"] }, - "packages/enricher": { - "entry": ["src/**/*.test.ts", "scripts/*.cjs"], - "project": ["src/**/*.ts"], - "ignoreDependencies": ["tree-sitter-cli"], - "includeEntryExports": true - }, - "packages/git": { - "entry": ["src/*.ts", "src/**/*.test.ts"], - "project": ["src/**/*.ts"], - "includeEntryExports": true - }, "packages/host-router": { "project": ["src/**/*.{ts,tsx}"], "includeEntryExports": true diff --git a/products/desktop/mprocs.yaml b/products/desktop/mprocs.yaml index 83caba5f234f..aaf8be36c790 100644 --- a/products/desktop/mprocs.yaml +++ b/products/desktop/mprocs.yaml @@ -12,12 +12,12 @@ procs: layer: Application agent: - shell: 'node scripts/pnpm-run.mjs --filter agent run dev' + shell: 'node scripts/pnpm-run.mjs --dir ../../packages/agent --filter agent run dev' groups: layer: Packages git: - shell: 'node scripts/pnpm-run.mjs --filter @posthog/git run dev' + shell: 'node scripts/pnpm-run.mjs --dir ../../packages/agent --filter @posthog/git run dev' groups: layer: Packages @@ -27,7 +27,7 @@ procs: layer: Packages enricher: - shell: 'node scripts/pnpm-run.mjs --filter @posthog/enricher run dev' + shell: 'node scripts/pnpm-run.mjs --dir ../../packages/agent --filter @posthog/enricher run dev' groups: layer: Packages diff --git a/products/desktop/package.json b/products/desktop/package.json index 072b608b1113..3e4eff31fc61 100644 --- a/products/desktop/package.json +++ b/products/desktop/package.json @@ -16,14 +16,15 @@ "dev:app": "pnpm build:deps && bash scripts/ensure-phrocs.sh && bin/phrocs --config mprocs.yaml", "dev:mprocs": "node scripts/dev-with-skills.mjs pnpm dev:app:mprocs", "dev:app:mprocs": "pnpm build:deps && mprocs", - "dev:agent": "pnpm --filter agent dev", - "dev:git": "pnpm --filter @posthog/git dev", + "dev:agent": "pnpm --dir ../../packages/agent --filter agent dev", + "dev:git": "pnpm --dir ../../packages/agent --filter @posthog/git dev", "dev:code": "node scripts/dev-with-skills.mjs pnpm --filter code start", "app:cdp": "node scripts/electron-cdp.mjs", - "build": "turbo build", - "build:deps": "turbo build --filter=@posthog/code^...", - "package": "turbo build && pnpm --filter code package", - "test": "turbo test --concurrency=2", + "build:agent": "node scripts/build-agent-workspace.mjs", + "build": "pnpm build:agent && turbo build", + "build:deps": "pnpm build:agent && turbo build --filter=@posthog/code^...", + "package": "pnpm build && pnpm --filter code package", + "test": "pnpm build:agent && pnpm --dir ../../packages/agent test && turbo test --concurrency=2", "test:bun": "turbo test --filter=@posthog/core --filter=@posthog/cli", "test:vitest": "pnpm --filter code --filter @posthog/electron-trpc test", "test:e2e": "pnpm --filter code test:e2e", @@ -32,13 +33,12 @@ "test:e2e:web:ui": "pnpm --filter @posthog/web test:e2e:ui", "rebuild:sqlite-node": "node scripts/rebuild-better-sqlite3-node.mjs", "rebuild:sqlite-electron": "node scripts/rebuild-better-sqlite3-electron.mjs", - "typecheck": "turbo typecheck", + "typecheck": "pnpm build:agent && pnpm --dir ../../packages/agent typecheck && turbo typecheck", "boundaries": "node scripts/check-host-boundaries.mjs", "lint": "biome check --write --unsafe", "format": "biome format --write", "clean": "pnpm -r clean", "knip": "knip", - "benjamin:sync": "node scripts/sync-benjamin.mts", "skills:pull": "node scripts/pull-skills.mjs", "hosthog:build": "pnpm install --frozen-lockfile --ignore-scripts --filter @posthog/web... && SKIP_PRODUCT_ENGINEER_SKILLS_DOWNLOAD=1 pnpm exec turbo build --filter=@posthog/web && ln -sfn apps/web/dist dist" }, diff --git a/products/desktop/packages/core/package.json b/products/desktop/packages/core/package.json index cc34bbd7bcc7..d0b4dea1a15f 100644 --- a/products/desktop/packages/core/package.json +++ b/products/desktop/packages/core/package.json @@ -19,7 +19,7 @@ "@modelcontextprotocol/ext-apps": "^1.1.2", "@modelcontextprotocol/sdk": "^1.12.1", "@pierre/diffs": "^1.2.10", - "@posthog/agent": "workspace:*", + "@posthog/agent": "link:../../../../packages/agent/packages/agent", "@posthog/api-client": "workspace:*", "@posthog/di": "workspace:*", "@posthog/platform": "workspace:*", diff --git a/products/desktop/packages/host-router/package.json b/products/desktop/packages/host-router/package.json index 957499cc2d1e..bbf20ff9e816 100644 --- a/products/desktop/packages/host-router/package.json +++ b/products/desktop/packages/host-router/package.json @@ -16,7 +16,7 @@ }, "dependencies": { "@agentclientprotocol/sdk": "0.22.1", - "@posthog/agent": "workspace:*", + "@posthog/agent": "link:../../../../packages/agent/packages/agent", "@posthog/core": "workspace:*", "@posthog/host-trpc": "workspace:*", "@posthog/platform": "workspace:*", diff --git a/products/desktop/packages/owners.yaml b/products/desktop/packages/owners.yaml deleted file mode 100644 index 071cf104d327..000000000000 --- a/products/desktop/packages/owners.yaml +++ /dev/null @@ -1,5 +0,0 @@ -version: 1 -owners: [] -rules: - - match: '/agent/' - owners: team-agent-infrastructure diff --git a/products/desktop/packages/shared/package.json b/products/desktop/packages/shared/package.json index b0acbfd21e93..49b02d62b183 100644 --- a/products/desktop/packages/shared/package.json +++ b/products/desktop/packages/shared/package.json @@ -81,7 +81,7 @@ "clean": "node ../../scripts/rimraf.mjs dist .turbo" }, "dependencies": { - "@posthog/agent-contracts": "workspace:*", + "@posthog/agent-contracts": "link:../../../../packages/agent/packages/agent-contracts", "@posthog/brand": "catalog:", "zod": "^4.1.12" }, diff --git a/products/desktop/packages/ui/package.json b/products/desktop/packages/ui/package.json index 3465b864c82a..e7f5ce00a89b 100644 --- a/products/desktop/packages/ui/package.json +++ b/products/desktop/packages/ui/package.json @@ -52,11 +52,11 @@ "@modelcontextprotocol/ext-apps": "^1.1.2", "@modelcontextprotocol/sdk": "^1.12.1", "@pierre/diffs": "^1.2.10", - "@posthog/agent": "workspace:*", + "@posthog/agent": "link:../../../../packages/agent/packages/agent", "@posthog/api-client": "workspace:*", "@posthog/core": "workspace:*", "@posthog/di": "workspace:*", - "@posthog/git": "workspace:*", + "@posthog/git": "link:../../../../packages/agent/packages/git", "@posthog/host-router": "workspace:*", "@posthog/platform": "workspace:*", "@posthog/quill-charts": "0.3.0-beta.29", diff --git a/products/desktop/packages/ui/src/features/inbox/AGENTS.md b/products/desktop/packages/ui/src/features/inbox/AGENTS.md index 73beac26f29d..c8541e552d7c 100644 --- a/products/desktop/packages/ui/src/features/inbox/AGENTS.md +++ b/products/desktop/packages/ui/src/features/inbox/AGENTS.md @@ -191,7 +191,7 @@ The Inbox reads from PostHog Cloud's Self-driving backend, currently implemented - `GET /api/projects/{teamId}/signals/reports/{id}/artefacts/`: structured report artefacts. - `GET /api/projects/{teamId}/signals/reports/{id}/tasks/`: tasks linked to a report. -The shared renderer type for the report is `SignalReport` in `packages/agent-contracts/src/domain-types.ts`. If the backend serializer changes, update that type and the client methods in `packages/api-client/src/posthog-client.ts` together. +The shared renderer type for the report is `SignalReport` in `packages/agent/packages/agent-contracts/src/domain-types.ts`. If the backend serializer changes, update that type and the client methods in `packages/api-client/src/posthog-client.ts` together. Report charts: `SignalReport.charts` carries scout-authored chart definitions (`chart_id`, `title`, `query`, `caption?`, `size?`). The desktop app renders them natively in the detail views: `packages/core/src/inbox/reportCharts.ts` classifies the stored query (runnable HogQL/trends vs saved-insight vs link-out fallback), `PostHogAPIClient.runQuery` executes runnable sources against `/api/projects/{teamId}/query/`, and `components/detail/ReportChartCard.tsx` draws the result with `@posthog/quill-charts`. Query kinds the app can't draw degrade to a card that links out to PostHog. Summary prose references charts as `[label](chart:)` links; `SignalReportSummaryMarkdown` turns those into in-page jumps to the chart card (plain text on list rows). diff --git a/products/desktop/packages/workspace-server/package.json b/products/desktop/packages/workspace-server/package.json index 63faf341f015..f0db6b1dba29 100644 --- a/products/desktop/packages/workspace-server/package.json +++ b/products/desktop/packages/workspace-server/package.json @@ -25,11 +25,11 @@ "@hono/trpc-server": "catalog:", "@modelcontextprotocol/sdk": "^1.29.0", "@parcel/watcher": "catalog:", - "@posthog/agent": "workspace:*", + "@posthog/agent": "link:../../../../packages/agent/packages/agent", "@posthog/di": "workspace:*", - "@posthog/enricher": "workspace:*", - "@posthog/git": "workspace:*", - "@posthog/harness": "workspace:*", + "@posthog/enricher": "link:../../../../packages/agent/packages/enricher", + "@posthog/git": "link:../../../../packages/agent/packages/git", + "@posthog/harness": "link:../../../../packages/agent/packages/harness", "@posthog/platform": "workspace:*", "@posthog/shared": "workspace:*", "@trpc/server": "catalog:", diff --git a/products/desktop/pnpm-lock.yaml b/products/desktop/pnpm-lock.yaml index dca0280e8522..32007ca0ddfe 100644 --- a/products/desktop/pnpm-lock.yaml +++ b/products/desktop/pnpm-lock.yaml @@ -175,8 +175,8 @@ importers: specifier: ^1.2.10 version: 1.2.10(@shikijs/themes@3.23.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@posthog/agent': - specifier: workspace:* - version: link:../../packages/agent + specifier: link:../../../../packages/agent/packages/agent + version: link:../../../../packages/agent/packages/agent '@posthog/api-client': specifier: workspace:* version: link:../../packages/api-client @@ -190,11 +190,11 @@ importers: specifier: workspace:* version: link:../../packages/electron-trpc '@posthog/enricher': - specifier: workspace:* - version: link:../../packages/enricher + specifier: link:../../../../packages/agent/packages/enricher + version: link:../../../../packages/agent/packages/enricher '@posthog/git': - specifier: workspace:* - version: link:../../packages/git + specifier: link:../../../../packages/agent/packages/git + version: link:../../../../packages/agent/packages/git '@posthog/hedgehog-mode': specifier: ^0.0.53 version: 0.0.53(prop-types@15.8.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -802,8 +802,8 @@ importers: specifier: ^1.2.10 version: 1.2.10(@shikijs/themes@3.23.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@posthog/agent': - specifier: workspace:* - version: link:../../packages/agent + specifier: link:../../../../packages/agent/packages/agent + version: link:../../../../packages/agent/packages/agent '@posthog/core': specifier: workspace:* version: link:../../packages/core @@ -811,8 +811,8 @@ importers: specifier: workspace:* version: link:../../packages/di '@posthog/harness': - specifier: workspace:* - version: link:../../packages/harness + specifier: link:../../../../packages/agent/packages/harness + version: link:../../../../packages/agent/packages/harness '@posthog/host-router': specifier: workspace:* version: link:../../packages/host-router @@ -893,134 +893,6 @@ importers: specifier: npm:rolldown-vite@7.3.1 version: rolldown-vite@7.3.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(@types/node@25.2.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0) - packages/agent: - dependencies: - '@agentclientprotocol/sdk': - specifier: 1.1.0 - version: 1.1.0(zod@4.4.3) - '@anthropic-ai/claude-agent-sdk': - specifier: 0.3.280 - version: 0.3.280(@anthropic-ai/sdk@0.109.0(zod@4.4.3))(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(zod@4.4.3) - '@anthropic-ai/sdk': - specifier: 0.109.0 - version: 0.109.0(zod@4.4.3) - '@earendil-works/pi-agent-core': - specifier: 'catalog:' - version: 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) - '@earendil-works/pi-ai': - specifier: 'catalog:' - version: 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) - '@earendil-works/pi-coding-agent': - specifier: 'catalog:' - version: 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) - '@hono/node-server': - specifier: 1.19.13 - version: 1.19.13(hono@4.12.28) - '@modelcontextprotocol/sdk': - specifier: 1.29.0 - version: 1.29.0(zod@4.4.3) - '@openai/codex': - specifier: 0.154.0 - version: 0.154.0 - '@opentelemetry/api': - specifier: ^1.9.1 - version: 1.9.1 - '@opentelemetry/api-logs': - specifier: ^0.208.0 - version: 0.208.0 - '@opentelemetry/exporter-logs-otlp-http': - specifier: ^0.208.0 - version: 0.208.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-trace-otlp-http': - specifier: ^0.208.0 - version: 0.208.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': - specifier: ^2.0.0 - version: 2.5.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-logs': - specifier: ^0.208.0 - version: 0.208.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace-base': - specifier: ^2.8.0 - version: 2.8.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': - specifier: ^1.28.0 - version: 1.39.0 - '@types/jsonwebtoken': - specifier: ^9.0.10 - version: 9.0.10 - commander: - specifier: ^14.0.2 - version: 14.0.3 - fflate: - specifier: ^0.8.2 - version: 0.8.2 - hono: - specifier: 4.12.28 - version: 4.12.28 - jsonwebtoken: - specifier: ^9.0.2 - version: 9.0.3 - lru-cache: - specifier: ^11.1.0 - version: 11.2.5 - minimatch: - specifier: ^10.0.3 - version: 10.1.2 - uuid: - specifier: 13.0.0 - version: 13.0.0 - yoga-wasm-web: - specifier: ^0.3.3 - version: 0.3.3 - zod: - specifier: 4.4.3 - version: 4.4.3 - devDependencies: - '@posthog/agent-contracts': - specifier: workspace:* - version: link:../agent-contracts - '@posthog/git': - specifier: workspace:* - version: link:../git - '@posthog/harness': - specifier: workspace:* - version: link:../harness - '@types/bun': - specifier: 1.3.14 - version: 1.3.14 - msw: - specifier: ^2.12.7 - version: 2.12.8(@types/node@25.2.0)(typescript@5.9.3) - tsup: - specifier: ^8.5.1 - version: 8.5.1(@swc/core@1.15.43)(jiti@2.7.0)(postcss@8.5.23)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.9.0) - typescript: - specifier: ^5.5.0 - version: 5.9.3 - vitest: - specifier: ^4.1.8 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.2.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) - - packages/agent-contracts: - dependencies: - zod: - specifier: 4.4.3 - version: 4.4.3 - devDependencies: - '@agentclientprotocol/sdk': - specifier: 0.19.0 - version: 0.19.0(zod@4.4.3) - tsup: - specifier: ^8.5.1 - version: 8.5.1(@swc/core@1.15.43)(jiti@2.7.0)(postcss@8.5.23)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.9.0) - typescript: - specifier: ^5.5.0 - version: 5.9.3 - vitest: - specifier: ^4.1.8 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.2.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) - packages/api-client: dependencies: '@posthog/shared': @@ -1055,8 +927,8 @@ importers: specifier: ^1.2.10 version: 1.2.10(@shikijs/themes@3.23.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@posthog/agent': - specifier: workspace:* - version: link:../agent + specifier: link:../../../../packages/agent/packages/agent + version: link:../../../../packages/agent/packages/agent '@posthog/api-client': specifier: workspace:* version: link:../api-client @@ -1162,110 +1034,14 @@ importers: specifier: 4.4.3 version: 4.4.3 - packages/enricher: - dependencies: - '@posthog/agent-contracts': - specifier: workspace:* - version: link:../agent-contracts - web-tree-sitter: - specifier: ^0.24.7 - version: 0.24.7 - devDependencies: - tree-sitter-cli: - specifier: ^0.26.6 - version: 0.26.8 - tsup: - specifier: ^8.5.1 - version: 8.5.1(@swc/core@1.15.43)(jiti@2.7.0)(postcss@8.5.23)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.9.0) - typescript: - specifier: ^5.5.0 - version: 5.9.3 - vitest: - specifier: ^4.1.8 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.2.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) - - packages/git: - dependencies: - '@posthog/agent-contracts': - specifier: workspace:* - version: link:../agent-contracts - git-url-parse: - specifier: ^16.1.0 - version: 16.1.0 - simple-git: - specifier: 3.36.0 - version: 3.36.0 - devDependencies: - typescript: - specifier: ^5.5.0 - version: 5.9.3 - vitest: - specifier: ^4.1.8 - version: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.2.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) - - packages/harness: - dependencies: - '@earendil-works/pi-ai': - specifier: 'catalog:' - version: 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) - '@earendil-works/pi-coding-agent': - specifier: 'catalog:' - version: 0.84.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3) - '@earendil-works/pi-tui': - specifier: 'catalog:' - version: 0.84.1 - '@modelcontextprotocol/sdk': - specifier: ^1.29.0 - version: 1.29.0(zod@4.4.3) - '@posthog/agent-contracts': - specifier: workspace:* - version: link:../agent-contracts - '@posthog/enricher': - specifier: workspace:* - version: link:../enricher - '@posthog/git': - specifier: workspace:* - version: link:../git - fflate: - specifier: ^0.8.2 - version: 0.8.3 - lru-cache: - specifier: ^11.1.0 - version: 11.2.5 - turndown: - specifier: ^7.2.4 - version: 7.2.4 - typebox: - specifier: 1.3.7 - version: 1.3.7 - zod: - specifier: 4.4.3 - version: 4.4.3 - devDependencies: - '@types/node': - specifier: ^22.0.0 - version: 22.20.0 - '@types/turndown': - specifier: ^5.0.6 - version: 5.0.6 - tsup: - specifier: ^8.5.1 - version: 8.5.1(@swc/core@1.15.43)(jiti@2.7.0)(postcss@8.5.23)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.9.0) - typescript: - specifier: ^5.5.0 - version: 5.9.3 - vitest: - specifier: ^4.1.8 - version: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@22.20.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@22.20.0)(typescript@5.9.3))(vite@7.3.5(@types/node@22.20.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) - packages/host-router: dependencies: '@agentclientprotocol/sdk': specifier: 0.22.1 version: 0.22.1(zod@4.4.3) '@posthog/agent': - specifier: workspace:* - version: link:../agent + specifier: link:../../../../packages/agent/packages/agent + version: link:../../../../packages/agent/packages/agent '@posthog/core': specifier: workspace:* version: link:../core @@ -1347,8 +1123,8 @@ importers: packages/shared: dependencies: '@posthog/agent-contracts': - specifier: workspace:* - version: link:../agent-contracts + specifier: link:../../../../packages/agent/packages/agent-contracts + version: link:../../../../packages/agent/packages/agent-contracts '@posthog/brand': specifier: 'catalog:' version: 0.11.0(react@19.2.6) @@ -1477,8 +1253,8 @@ importers: specifier: ^1.2.10 version: 1.2.10(@shikijs/themes@3.23.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@posthog/agent': - specifier: workspace:* - version: link:../agent + specifier: link:../../../../packages/agent/packages/agent + version: link:../../../../packages/agent/packages/agent '@posthog/api-client': specifier: workspace:* version: link:../api-client @@ -1489,8 +1265,8 @@ importers: specifier: workspace:* version: link:../di '@posthog/git': - specifier: workspace:* - version: link:../git + specifier: link:../../../../packages/agent/packages/git + version: link:../../../../packages/agent/packages/git '@posthog/host-router': specifier: workspace:* version: link:../host-router @@ -1788,20 +1564,20 @@ importers: specifier: 'catalog:' version: 2.5.6 '@posthog/agent': - specifier: workspace:* - version: link:../agent + specifier: link:../../../../packages/agent/packages/agent + version: link:../../../../packages/agent/packages/agent '@posthog/di': specifier: workspace:* version: link:../di '@posthog/enricher': - specifier: workspace:* - version: link:../enricher + specifier: link:../../../../packages/agent/packages/enricher + version: link:../../../../packages/agent/packages/enricher '@posthog/git': - specifier: workspace:* - version: link:../git + specifier: link:../../../../packages/agent/packages/git + version: link:../../../../packages/agent/packages/git '@posthog/harness': - specifier: workspace:* - version: link:../harness + specifier: link:../../../../packages/agent/packages/harness + version: link:../../../../packages/agent/packages/harness '@posthog/platform': specifier: workspace:* version: link:../platform diff --git a/products/desktop/scripts/build-agent-workspace.mjs b/products/desktop/scripts/build-agent-workspace.mjs new file mode 100644 index 000000000000..9e6bc5bbc78e --- /dev/null +++ b/products/desktop/scripts/build-agent-workspace.mjs @@ -0,0 +1,38 @@ +import { execSync } from "node:child_process"; +import { createHash } from "node:crypto"; +import { existsSync, readdirSync, readFileSync, writeFileSync } from "node:fs"; +import { dirname, join, relative, resolve, sep } from "node:path"; +import { fileURLToPath } from "node:url"; + +// Desktop links the agent workspace by path, so turbo cannot hash its files. The stamp +// is a turbo global dependency that changes whenever the agent workspace does. +const desktopRoot = resolve(dirname(fileURLToPath(import.meta.url)), ".."); +const agentWorkspace = resolve(desktopRoot, "../../packages/agent"); +const stampFile = join(desktopRoot, ".agent-workspace-stamp"); +const SKIPPED = new Set(["node_modules", "dist", ".turbo", "junit.xml"]); + +function run(command) { + execSync(command, { cwd: agentWorkspace, stdio: "inherit" }); +} + +function sourceFiles(dir, out = []) { + for (const entry of readdirSync(dir, { withFileTypes: true })) { + if (SKIPPED.has(entry.name)) continue; + const full = join(dir, entry.name); + if (entry.isDirectory()) sourceFiles(full, out); + else if (entry.isFile()) out.push(full); + } + return out; +} + +if (!existsSync(join(agentWorkspace, "node_modules"))) { + run("pnpm install --frozen-lockfile"); +} +run("pnpm build"); + +const hash = createHash("sha256"); +for (const file of sourceFiles(agentWorkspace).sort()) { + hash.update(relative(agentWorkspace, file).split(sep).join("/")); + hash.update(readFileSync(file)); +} +writeFileSync(stampFile, `${hash.digest("hex")}\n`); diff --git a/products/desktop/turbo.json b/products/desktop/turbo.json index d52813a9974f..02b9f4dafc4d 100644 --- a/products/desktop/turbo.json +++ b/products/desktop/turbo.json @@ -1,5 +1,6 @@ { "$schema": "https://turbo.build/schema.json", + "globalDependencies": [".agent-workspace-stamp"], "tasks": { "build": { "dependsOn": ["^build"], diff --git a/products/signals/backend/scout_harness/prompt.py b/products/signals/backend/scout_harness/prompt.py index 1ec0896e1e54..a50dc98bfa29 100644 --- a/products/signals/backend/scout_harness/prompt.py +++ b/products/signals/backend/scout_harness/prompt.py @@ -1160,7 +1160,7 @@ def _mcp_tool_prefix_name(name: str) -> str: """The `` spelling in a runtime's `mcp____` keys. Mirrors `sanitizeMcpServerName` in the desktop agent adapters - (`products/desktop/packages/agent/src/adapters/claude/mcp/tool-metadata.ts`), which both + (`packages/agent/packages/agent/src/adapters/claude/mcp/tool-metadata.ts`), which both runtimes key MCP servers by. Display names are free text ("Datadog (EU)", "Linear (Jane Doe)"), so printing one raw in the example would hand the scout a prefix that cannot exist and steer it into the "didn't mount" verdict below. diff --git a/products/skills/backend/marketplace/README.md b/products/skills/backend/marketplace/README.md index 0cc1cbc55631..0be11ac9aa3f 100644 --- a/products/skills/backend/marketplace/README.md +++ b/products/skills/backend/marketplace/README.md @@ -44,7 +44,7 @@ unit-testable against the real `git` binary without booting the app The tasks worker calls it when it builds a run's processing context and writes the entries into `TaskRun.state["store_skills"]` (`products/tasks/backend/logic/services/store_skills.py`); the sandbox agent renders one pointer `SKILL.md` per entry into `~/.claude/skills` and `~/.agents/skills` - (`products/desktop/packages/agent/src/server/store-skills.ts`), skipping any name a bundled skill + (`packages/agent/packages/agent/src/server/store-skills.ts`), skipping any name a bundled skill already uses. The stub file the agent writes must stay in step with `render_skill_stub_md`. The list is the acting user's, so the worker writes it again when that user changes after the session started (a warm run activated by its first message, a shared Slack task whose next diff --git a/products/tasks/backend/logic/services/custom_prompt_internals.py b/products/tasks/backend/logic/services/custom_prompt_internals.py index fbe04685f9e6..1dacc14d0a35 100644 --- a/products/tasks/backend/logic/services/custom_prompt_internals.py +++ b/products/tasks/backend/logic/services/custom_prompt_internals.py @@ -218,7 +218,7 @@ def __init__(self, message: str, *, total_lines: int, printed_lines: int): # Mirrored from RETRYABLE_UPSTREAM_ERROR_CLASSIFICATIONS in -# products/desktop/packages/agent/src/adapters/error-classification.ts, which is the source of +# packages/agent/packages/agent/src/adapters/error-classification.ts, which is the source of # truth. A category added there must be added here too, or a retryable failure reads as permanent. UPSTREAM_RETRYABLE_ERROR_CATEGORIES = frozenset( { diff --git a/products/tasks/backend/logic/services/docker_sandbox.py b/products/tasks/backend/logic/services/docker_sandbox.py index 0bed1019654b..cde6f0e127ba 100644 --- a/products/tasks/backend/logic/services/docker_sandbox.py +++ b/products/tasks/backend/logic/services/docker_sandbox.py @@ -265,7 +265,6 @@ def _get_local_posthog_code_root() -> str | None: os.path.join(monorepo_root, "package.json"), os.path.join(monorepo_root, "pnpm-workspace.yaml"), os.path.join(monorepo_root, "pnpm-lock.yaml"), - os.path.join(monorepo_root, "patches"), os.path.join(monorepo_root, "scripts", "rimraf.mjs"), *[ os.path.join(monorepo_root, "packages", package_name, "package.json") @@ -349,7 +348,6 @@ def _build_local_image(monorepo_root: str) -> None: for file_name in (".npmrc", "package.json", "pnpm-lock.yaml", "pnpm-workspace.yaml"): shutil.copy2(os.path.join(monorepo_root, file_name), workspace_path) - shutil.copytree(os.path.join(monorepo_root, "patches"), os.path.join(workspace_path, "patches")) shutil.copy2(os.path.join(monorepo_root, "scripts", "rimraf.mjs"), scripts_path) for package_name in ("agent", "harness", "agent-contracts", "git", "enricher"): diff --git a/products/tasks/backend/logic/services/test_docker_sandbox.py b/products/tasks/backend/logic/services/test_docker_sandbox.py index d7ac6e7e609e..dfd0dc80d1db 100644 --- a/products/tasks/backend/logic/services/test_docker_sandbox.py +++ b/products/tasks/backend/logic/services/test_docker_sandbox.py @@ -255,7 +255,6 @@ def test_transform_url_for_docker(self, input_url, expected_url): def test_get_local_posthog_code_root(self, tmp_path, monkeypatch): for file_name in (".npmrc", "package.json", "pnpm-workspace.yaml", "pnpm-lock.yaml"): (tmp_path / file_name).touch() - (tmp_path / "patches").mkdir() (tmp_path / "scripts").mkdir() (tmp_path / "scripts" / "rimraf.mjs").touch() for package_name in ("agent", "harness", "agent-contracts", "git", "enricher"): @@ -272,7 +271,6 @@ def test_build_local_image_copies_minimal_workspace_into_docker_context(self, tm for file_name in (".npmrc", "package.json", "pnpm-workspace.yaml", "pnpm-lock.yaml"): monorepo_path.mkdir(exist_ok=True) (monorepo_path / file_name).touch() - (monorepo_path / "patches").mkdir() (monorepo_path / "scripts").mkdir() (monorepo_path / "scripts" / "rimraf.mjs").touch() for package_name in ("agent", "harness", "agent-contracts", "git", "enricher"): diff --git a/products/tasks/backend/sandbox/images/Dockerfile.sandbox-local b/products/tasks/backend/sandbox/images/Dockerfile.sandbox-local index eec79f665613..eabf291a6f31 100644 --- a/products/tasks/backend/sandbox/images/Dockerfile.sandbox-local +++ b/products/tasks/backend/sandbox/images/Dockerfile.sandbox-local @@ -2,12 +2,11 @@ # Dockerfile for local agent development - builds on top of sandbox-base # This image should be rebuilt when the local agent package changes -# Set LOCAL_POSTHOG_CODE_MONOREPO_ROOT to the path to the PostHog Desktop monorepo to use this in DockerSandbox +# Set LOCAL_POSTHOG_CODE_MONOREPO_ROOT to the agent workspace (packages/agent) to use this in DockerSandbox FROM posthog-sandbox-base COPY local-workspace/.npmrc local-workspace/package.json local-workspace/pnpm-lock.yaml local-workspace/pnpm-workspace.yaml /local-workspace/ -COPY local-workspace/patches /local-workspace/patches COPY local-workspace/packages/agent/package.json /local-workspace/packages/agent/package.json COPY local-workspace/packages/enricher/package.json /local-workspace/packages/enricher/package.json COPY local-workspace/packages/git/package.json /local-workspace/packages/git/package.json diff --git a/products/tasks/backend/temporal/process_task/ai_gateway_token.py b/products/tasks/backend/temporal/process_task/ai_gateway_token.py index 5ca543d246d4..7a5b1f8d8753 100644 --- a/products/tasks/backend/temporal/process_task/ai_gateway_token.py +++ b/products/tasks/backend/temporal/process_task/ai_gateway_token.py @@ -3,7 +3,7 @@ Routed runs authenticate with a short-lived `phe_` token minted here from the worker's gateway credential: pinned product and on-behalf-of team, per-run spend cap, one internal wallet. Minting is best-effort and the matching must agree with `resolveGatewayTarget` in -products/desktop/packages/agent/src/utils/gateway.ts; the agent routes to the Go gateway +packages/agent/packages/agent/src/utils/gateway.ts; the agent routes to the Go gateway only when the product is allowlisted AND a token is present, so a mint failure or matcher disagreement degrades the run to the Python gateway rather than failing it. """ @@ -32,7 +32,7 @@ labelnames=["result"], ) -# Mirrors resolveGatewayProduct in products/desktop/packages/agent/src/utils/gateway.ts. +# Mirrors resolveGatewayProduct in packages/agent/packages/agent/src/utils/gateway.ts. _ORIGIN_TO_GATEWAY_PRODUCT: dict[str, str] = { "loop": "posthog_code", "onboarding": "onboarding", diff --git a/products/tasks/backend/temporal/process_task/tests/test_ai_gateway_token.py b/products/tasks/backend/temporal/process_task/tests/test_ai_gateway_token.py index 663c720535cf..b4222c5c9fd8 100644 --- a/products/tasks/backend/temporal/process_task/tests/test_ai_gateway_token.py +++ b/products/tasks/backend/temporal/process_task/tests/test_ai_gateway_token.py @@ -40,7 +40,7 @@ class TestResolveSandboxAiProduct: """Must agree with resolveAiProduct/resolveGatewayProduct in - products/desktop/packages/agent/src/utils/gateway.ts — a disagreement makes a + packages/agent/packages/agent/src/utils/gateway.ts — a disagreement makes a routed run mint no token (degrades to Python) or mint an unused token.""" @pytest.mark.parametrize( @@ -91,7 +91,7 @@ class TestSharedRoutingContract: TypeScript resolver and this Python mirror cannot drift while staying green.""" _CASES = json.loads( - (Path(__file__).parents[6] / "products/desktop/packages/agent/src/utils/gateway-routing-cases.json").read_text() + (Path(__file__).parents[6] / "packages/agent/packages/agent/src/utils/gateway-routing-cases.json").read_text() ) @pytest.mark.parametrize( diff --git a/products/tasks/scripts/model_catalog_projection.py b/products/tasks/scripts/model_catalog_projection.py index b7ae9fe90a10..b21ffc64690f 100755 --- a/products/tasks/scripts/model_catalog_projection.py +++ b/products/tasks/scripts/model_catalog_projection.py @@ -20,7 +20,7 @@ target formatter would rewrap fails the build instead of drifting silently. Only data is generated. The lookup built on it lives in -``products/desktop/packages/agent-contracts/src/model-catalog.ts`` and, for Python, in the source +``packages/agent/packages/agent-contracts/src/model-catalog.ts`` and, for Python, in the source module itself — behavior stays hand-written and tested, while the table that actually changes has one home. @@ -37,7 +37,7 @@ CATALOG_PY = Path(__file__).resolve().parents[1] / "backend" / "model_catalog.py" WEB_OUTPUT = "products/tasks/frontend/modelCatalog.generated.ts" -DESKTOP_OUTPUT = "products/desktop/packages/agent-contracts/src/model-catalog.generated.ts" +DESKTOP_OUTPUT = "packages/agent/packages/agent-contracts/src/model-catalog.generated.ts" HEADER = """// AUTO-GENERATED by products/tasks/scripts/model_catalog_projection.py from // products/tasks/backend/model_catalog.py. diff --git a/tools/hogli-commands/hogli_commands/ci_preflight.py b/tools/hogli-commands/hogli_commands/ci_preflight.py index de197b6e9990..6b5a97bb5715 100644 --- a/tools/hogli-commands/hogli_commands/ci_preflight.py +++ b/tools/hogli-commands/hogli_commands/ci_preflight.py @@ -53,7 +53,7 @@ from hogli_commands.projections import all_outputs as projection_outputs from hogli_commands.size_lint import SCOPE as SIZE_SCOPE -Requirement = Literal["node", "desktop-node", "stack", "clickhouse", "python-env"] +Requirement = Literal["node", "desktop-node", "agent-node", "stack", "clickhouse", "python-env"] @dataclass @@ -178,6 +178,19 @@ def measures(self) -> bool: fix=["pnpm", "--dir", "products/desktop", "exec", "biome", "check", "--write", "."], requires=("desktop-node",), ), + DiffCheck( + key="agent-biome", + label="agent workspace lint/format (Biome, what desktop-quality CI runs)", + triggers=[ + "packages/agent/*.ts", + "packages/agent/*.mts", + "packages/agent/*.json", + "packages/agent/*.jsonc", + ], + verify=["pnpm", "--dir", "packages/agent", "exec", "biome", "ci", "."], + fix=["pnpm", "--dir", "packages/agent", "exec", "biome", "check", "--write", "."], + requires=("agent-node",), + ), DiffCheck( key="type-check", label="Python type checking (mypy)", @@ -348,6 +361,9 @@ def _capability_met(req: Requirement) -> bool: if req == "desktop-node": # products/desktop is a nested standalone workspace with its own install. return (REPO_ROOT / "products" / "desktop" / "node_modules" / ".pnpm").exists() + if req == "agent-node": + # packages/agent is a nested standalone workspace with its own install. + return (REPO_ROOT / "packages" / "agent" / "node_modules" / ".pnpm").exists() if req == "python-env": return _project_python_ready() if req == "stack": @@ -369,9 +385,7 @@ def _unmet(chk: DiffCheck) -> list[Requirement]: def _pnpm_workspace_root(file_path: str) -> str: """Repo-relative root of the pnpm workspace owning *file_path* ("." for the root - workspace): the nearest ancestor directory with a pnpm-workspace.yaml. The lockfile - is not a workspace marker on purpose — products/desktop/packages/agent carries a - publish-only pnpm-lock.yaml but belongs to the desktop workspace.""" + workspace): the nearest ancestor directory with a pnpm-workspace.yaml.""" current = (REPO_ROOT / file_path).parent.resolve() root = REPO_ROOT.resolve() while current != root and root in current.parents: diff --git a/tools/hogli-commands/hogli_commands/projections.py b/tools/hogli-commands/hogli_commands/projections.py index 1fcb7537cd9e..768a6fd929d5 100644 --- a/tools/hogli-commands/hogli_commands/projections.py +++ b/tools/hogli-commands/hogli_commands/projections.py @@ -61,7 +61,7 @@ def triggers(self) -> tuple[str, ...]: inputs=("posthog/object_tags/*",), outputs=( "products/desktop/packages/core/src/inbox/objectKinds.generated.ts", - "products/desktop/packages/agent-contracts/src/objectTagKinds.generated.ts", + "packages/agent/packages/agent-contracts/src/objectTagKinds.generated.ts", "frontend/src/lib/components/AgentObjectTags/objectKinds.generated.ts", ), ), @@ -71,7 +71,7 @@ def triggers(self) -> tuple[str, ...]: inputs=("products/tasks/backend/model_catalog.py",), outputs=( "products/tasks/frontend/modelCatalog.generated.ts", - "products/desktop/packages/agent-contracts/src/model-catalog.generated.ts", + "packages/agent/packages/agent-contracts/src/model-catalog.generated.ts", ), ), Projection( diff --git a/tools/hogli-commands/hogli_commands/test_runner.py b/tools/hogli-commands/hogli_commands/test_runner.py index f45b7a887902..bd7db18ecff6 100644 --- a/tools/hogli-commands/hogli_commands/test_runner.py +++ b/tools/hogli-commands/hogli_commands/test_runner.py @@ -24,6 +24,8 @@ _PYTHON_ROOTS = ("posthog/", "ee/", "products/", "common/", "dags/", "tools/", "services/") _DESKTOP_ROOT = "products/desktop" +_AGENT_WORKSPACE_ROOT = "packages/agent" +_NESTED_VITEST_ROOTS = (_DESKTOP_ROOT, _AGENT_WORKSPACE_ROOT) def _is_test_file(path: str, rs_cfg_test: set[str] | None = None) -> bool: @@ -436,21 +438,29 @@ def _detect_go_test(file_only: str) -> TestRunConfig: ) +def _nested_vitest_root(path: str) -> str | None: + for workspace_root in _NESTED_VITEST_ROOTS: + if path == workspace_root or path.startswith(workspace_root + "/"): + return workspace_root + return None + + def _detect_desktop_vitest(path: str, node_id: str | None = None) -> TestRunConfig: - """Detect Vitest configuration for the desktop nested workspace. + """Detect Vitest configuration for a nested standalone workspace. - products/desktop is a standalone pnpm workspace whose packages test with - Vitest; the root Jest config ignores the whole tree, so run vitest from the - nearest desktop package (its own config and deps). For the workspace root - itself, defer to desktop's `pnpm test` (turbo), which is what desktop CI runs. + products/desktop and packages/agent are standalone pnpm workspaces whose packages + test with Vitest; the root Jest config does not collect them, so run vitest from the + nearest package (its own config and deps). For a workspace root itself, defer to its + `pnpm test` (turbo), which is what desktop CI runs. """ + workspace_root = _nested_vitest_root(path) or _DESKTOP_ROOT package_json = _find_nearest(path, "package.json") pkg_dir = str(package_json.parent.relative_to(REPO_ROOT)) if package_json else None - if pkg_dir is None or pkg_dir in (_DESKTOP_ROOT, "products", "."): + if pkg_dir is None or pkg_dir in (workspace_root, "products", "packages", "."): return TestRunConfig( test_type="vitest", - command=["pnpm", "--dir", _DESKTOP_ROOT, "test"], - description="Desktop tests via turbo (nested workspace)", + command=["pnpm", "--dir", workspace_root, "test"], + description=f"{workspace_root} tests via turbo (nested workspace)", ) rel = str(PurePosixPath(path).relative_to(pkg_dir)) @@ -463,7 +473,7 @@ def _detect_desktop_vitest(path: str, node_id: str | None = None) -> TestRunConf return TestRunConfig( test_type="vitest", command=command, - description=f"Desktop Vitest (in {pkg_dir})", + description=f"Vitest (in {pkg_dir})", ) @@ -475,7 +485,7 @@ def _detect_jest_test(file_only: str, file_path: str, node_id: str | None = None rely on. The product's own package.json has no jest config, so route them to @posthog/frontend; jest treats the path as a testPathPattern and matches it there. """ - if file_only.startswith(_DESKTOP_ROOT + "/"): + if _nested_vitest_root(file_only): return _detect_desktop_vitest(file_only, node_id) if file_only.startswith("products/"): pkg_name: str | None = "@posthog/frontend" @@ -508,9 +518,9 @@ def _detect_directory(dir_path: str) -> TestRunConfig: if _find_nearest(dir_path, "Cargo.toml"): return _detect_rust_test(dir_path) - # Desktop nested workspace: Vitest, not the root turbo/pytest/Jest routing + # Nested standalone workspaces: Vitest, not the root turbo/pytest/Jest routing normalized = dir_path.rstrip("/") - if normalized == _DESKTOP_ROOT or normalized.startswith(_DESKTOP_ROOT + "/"): + if _nested_vitest_root(normalized): return _detect_desktop_vitest(normalized) # Product root: use Turbo pipeline (only for top-level product dirs) diff --git a/tools/hogli-commands/hogli_commands/tests/test_ci_preflight.py b/tools/hogli-commands/hogli_commands/tests/test_ci_preflight.py index 960168f2326b..5b065f9a9029 100644 --- a/tools/hogli-commands/hogli_commands/tests/test_ci_preflight.py +++ b/tools/hogli-commands/hogli_commands/tests/test_ci_preflight.py @@ -257,8 +257,8 @@ class TestWorkspaceScopedLockfile: ("products/desktop/package.json", "products/desktop"), ("products/desktop/pnpm-lock.yaml", "products/desktop"), ("products/desktop/packages/core/package.json", "products/desktop"), - # agent has a publish-only pnpm-lock.yaml but is a desktop workspace member - ("products/desktop/packages/agent/package.json", "products/desktop"), + ("packages/agent/package.json", "packages/agent"), + ("packages/agent/packages/agent/package.json", "packages/agent"), ("tools/hedgebox-dummy/package.json", "tools/hedgebox-dummy"), ], ) diff --git a/tools/hogli-commands/hogli_commands/tests/test_test_runner.py b/tools/hogli-commands/hogli_commands/tests/test_test_runner.py index 566978943102..26095ffb577d 100644 --- a/tools/hogli-commands/hogli_commands/tests/test_test_runner.py +++ b/tools/hogli-commands/hogli_commands/tests/test_test_runner.py @@ -103,6 +103,11 @@ def test_product_frontend_jest_routes_to_frontend(self, file_path: str) -> None: "products/desktop/packages/ui", "src/shell/logCapture.test.ts", ), + ( + "packages/agent/packages/agent/src/utils/gateway.test.ts", + "packages/agent/packages/agent", + "src/utils/gateway.test.ts", + ), ] ) def test_desktop_test_file_routes_to_package_vitest(self, file_path: str, pkg_dir: str, rel: str) -> None: @@ -137,6 +142,8 @@ def test_desktop_node_id_adds_test_name_filter(self) -> None: ), ("products/desktop", ["pnpm", "--dir", "products/desktop", "test"]), ("products/desktop/packages", ["pnpm", "--dir", "products/desktop", "test"]), + ("packages/agent", ["pnpm", "--dir", "packages/agent", "test"]), + ("packages/agent/packages", ["pnpm", "--dir", "packages/agent", "test"]), ] ) def test_desktop_directories_route_to_vitest_or_turbo(self, dir_path: str, expected_command: list[str]) -> None: From d58efcd82ecde9ba98ed1692ba1d1526153f2519 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Mon, 21 Sep 2026 17:16:19 -0700 Subject: [PATCH 02/12] Fix Electron build and address review findings --- .../agent/src/adapters/claude/conversion/sdk-to-acp.ts | 2 +- packages/agent/pnpm-workspace.yaml | 3 +++ products/desktop/scripts/build-agent-workspace.mjs | 6 ++---- products/skills/backend/marketplace/README.md | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/agent/packages/agent/src/adapters/claude/conversion/sdk-to-acp.ts b/packages/agent/packages/agent/src/adapters/claude/conversion/sdk-to-acp.ts index 513347ad0d71..ba446d86e36d 100644 --- a/packages/agent/packages/agent/src/adapters/claude/conversion/sdk-to-acp.ts +++ b/packages/agent/packages/agent/src/adapters/claude/conversion/sdk-to-acp.ts @@ -22,7 +22,7 @@ import type { BetaRawContentBlockDelta, } from "@anthropic-ai/sdk/resources/beta.mjs"; import { IMPORTED_USER_PROMPT_META_KEY } from "@posthog/agent-contracts"; -import { POSTHOG_NOTIFICATIONS } from "@/acp-extensions"; +import { POSTHOG_NOTIFICATIONS } from "../../../acp-extensions"; import { image, text } from "../../../utils/acp-content"; import { unreachable } from "../../../utils/common"; import type { Logger } from "../../../utils/logger"; diff --git a/packages/agent/pnpm-workspace.yaml b/packages/agent/pnpm-workspace.yaml index 7368ced4a75d..7acfec9aab59 100644 --- a/packages/agent/pnpm-workspace.yaml +++ b/packages/agent/pnpm-workspace.yaml @@ -3,6 +3,9 @@ packages: - packages/* +blockExoticSubdeps: true +trustPolicy: no-downgrade + catalog: '@hono/node-server': ^1.13.7 '@hono/trpc-server': ^0.3.4 diff --git a/products/desktop/scripts/build-agent-workspace.mjs b/products/desktop/scripts/build-agent-workspace.mjs index 9e6bc5bbc78e..e93744e2762d 100644 --- a/products/desktop/scripts/build-agent-workspace.mjs +++ b/products/desktop/scripts/build-agent-workspace.mjs @@ -1,6 +1,6 @@ import { execSync } from "node:child_process"; import { createHash } from "node:crypto"; -import { existsSync, readdirSync, readFileSync, writeFileSync } from "node:fs"; +import { readdirSync, readFileSync, writeFileSync } from "node:fs"; import { dirname, join, relative, resolve, sep } from "node:path"; import { fileURLToPath } from "node:url"; @@ -25,9 +25,7 @@ function sourceFiles(dir, out = []) { return out; } -if (!existsSync(join(agentWorkspace, "node_modules"))) { - run("pnpm install --frozen-lockfile"); -} +run("pnpm install --frozen-lockfile"); run("pnpm build"); const hash = createHash("sha256"); diff --git a/products/skills/backend/marketplace/README.md b/products/skills/backend/marketplace/README.md index 0be11ac9aa3f..b7b306f275f6 100644 --- a/products/skills/backend/marketplace/README.md +++ b/products/skills/backend/marketplace/README.md @@ -44,7 +44,7 @@ unit-testable against the real `git` binary without booting the app The tasks worker calls it when it builds a run's processing context and writes the entries into `TaskRun.state["store_skills"]` (`products/tasks/backend/logic/services/store_skills.py`); the sandbox agent renders one pointer `SKILL.md` per entry into `~/.claude/skills` and `~/.agents/skills` - (`packages/agent/packages/agent/src/server/store-skills.ts`), skipping any name a bundled skill + (`packages/agent/packages/harness/src/extensions/skills-store/store-skills.ts`), skipping any name a bundled skill already uses. The stub file the agent writes must stay in step with `render_skill_stub_md`. The list is the acting user's, so the worker writes it again when that user changes after the session started (a warm run activated by its first message, a shared Slack task whose next From 71ea22519a36cf63f47b9a0f34e21ad66fdb6b49 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Mon, 21 Sep 2026 17:49:08 -0700 Subject: [PATCH 03/12] Fix agent e2e codex path and add contracts leaf rule --- packages/agent/biome.jsonc | 20 ++++++++++++++++++++ packages/agent/packages/agent/e2e/config.ts | 6 +++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/agent/biome.jsonc b/packages/agent/biome.jsonc index f4416bafc391..e5ef627c2f90 100644 --- a/packages/agent/biome.jsonc +++ b/packages/agent/biome.jsonc @@ -86,6 +86,26 @@ } } } + }, + { + "includes": ["packages/agent-contracts/**/*.ts"], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "patterns": [ + { + "group": ["@posthog/*"], + "message": "agent-contracts is a leaf shared with every host. It imports no internal package." + } + ] + } + } + } + } + } } ] } diff --git a/packages/agent/packages/agent/e2e/config.ts b/packages/agent/packages/agent/e2e/config.ts index 4df94bc061fe..ac4f375b43dd 100644 --- a/packages/agent/packages/agent/e2e/config.ts +++ b/packages/agent/packages/agent/e2e/config.ts @@ -17,12 +17,16 @@ const GATEWAY_URL = process.env.POSTHOG_CODE_E2E_GATEWAY_URL || "http://localhost:3308/ci"; const TOKEN = process.env.POSTHOG_CODE_E2E_GATEWAY_PERSONAL_API_KEY ?? ""; -// This checkout's bundled codex binaries, relative to packages/agent/e2e. +// The desktop app downloads the codex binaries; it lives in the sibling desktop workspace. const CODEX_RESOURCES_DIR = join( __dirname, "..", "..", "..", + "..", + "..", + "products", + "desktop", "apps", "code", "resources", From 21f76f920d07c6023f1e97de69ce552566fb3450 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Mon, 21 Sep 2026 18:16:38 -0700 Subject: [PATCH 04/12] Point OAuth docs at the agent workspace --- products/desktop/apps/web/README.md | 2 +- products/desktop/docs/LOCAL-DEVELOPMENT.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/products/desktop/apps/web/README.md b/products/desktop/apps/web/README.md index 20507c4ec2e8..a820fec323a9 100644 --- a/products/desktop/apps/web/README.md +++ b/products/desktop/apps/web/README.md @@ -98,7 +98,7 @@ gated to non-dev (production) builds (`capture_exceptions` in ### OAuth redirect URI registration — required for sign-in The web host reuses the Code ("Array") OAuth application client ids -(`packages/agent-contracts/src/oauth.ts`). Each region stores its app's `redirect_uris` +(`packages/agent/packages/agent-contracts/src/oauth.ts`). Each region stores its app's `redirect_uris` as database rows (Django admin → OAuth applications), and they must include: - `https:///callback` for the deployed host. `http` is rejected for diff --git a/products/desktop/docs/LOCAL-DEVELOPMENT.md b/products/desktop/docs/LOCAL-DEVELOPMENT.md index 42b443f3faed..4b4d983c6bab 100644 --- a/products/desktop/docs/LOCAL-DEVELOPMENT.md +++ b/products/desktop/docs/LOCAL-DEVELOPMENT.md @@ -48,7 +48,7 @@ This creates an OAuth application with: - **Algorithm**: `RS256` 4. Save -> **Important**: The client ID must be exactly `DC5uRLVbGI02YQ82grxgnK6Qn12SXWpCqdPb60oZ`. The value is defined in `packages/agent-contracts/src/oauth.ts`. +> **Important**: The client ID must be exactly `DC5uRLVbGI02YQ82grxgnK6Qn12SXWpCqdPb60oZ`. The value is defined in `packages/agent/packages/agent-contracts/src/oauth.ts`. ### 2. Configure RSA keys in PostHog @@ -261,7 +261,7 @@ The OAuth application in your local PostHog must have the client ID `DC5uRLVbGI0 ### "OAuth error: invalid_scope" or "Couldn't check Desktop access" -PostHog Desktop requests an explicit scope list (`OAUTH_SCOPES` in `packages/agent-contracts/src/oauth.ts`), +PostHog Desktop requests an explicit scope list (`OAUTH_SCOPES` in `packages/agent/packages/agent-contracts/src/oauth.ts`), which includes the privileged scope `llm_gateway:read`. `/authorize` never rejects a request over scopes: it clamps the request to the application's scope ceiling (`OAuthApplication.scopes`) and grants whatever falls inside From 9e926a87d82e039990ba2d560f27c72bc441805f Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Mon, 21 Sep 2026 19:32:28 -0700 Subject: [PATCH 05/12] Retrigger CI after duplicate run cancellation From 7322ada47729eeaa30e17d4022257d4b7c1e6ca1 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Tue, 22 Sep 2026 08:13:32 -0700 Subject: [PATCH 06/12] Point agent README at the workspace harness path --- packages/agent/packages/agent/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/agent/packages/agent/README.md b/packages/agent/packages/agent/README.md index ccd65b58e8de..e30440168151 100644 --- a/packages/agent/packages/agent/README.md +++ b/packages/agent/packages/agent/README.md @@ -281,7 +281,7 @@ ACP defines standard methods like `session/prompt`, `session/update`, and `sessi Releases are automatic. There is no manual version bump: `package.json` stays at `0.0.0-dev` and the release workflow sets the version from the tag. -1. A merge to `master` that changes a file in this package or `products/desktop/packages/harness` runs `.github/workflows/desktop-agent-tag.yml`. +1. A merge to `master` that changes a file in this package or `packages/agent/packages/harness` runs `.github/workflows/desktop-agent-tag.yml`. 2. It pushes the tag `agent-vX.Y.Z`. `Z` counts commits that change either package since the base tag `agent-vX.Y.0`. A commit that changes both packages counts once. 3. The tag push runs `.github/workflows/desktop-agent-release.yml`, which builds, tests and publishes to npm with provenance, then opens a pull request that bumps the agent pin in `Dockerfile.sandbox-base`. Merging that pull request builds and ships the sandbox images. From e040f13cbd756713caa2ca763f535095bd836bd3 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Tue, 22 Sep 2026 20:09:25 -0700 Subject: [PATCH 07/12] Point the agent version bump at the workspace paths --- .github/workflows/update-sandbox-agent-version.yml | 7 ++++++- products/desktop/docs/UPDATES.md | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-sandbox-agent-version.yml b/.github/workflows/update-sandbox-agent-version.yml index 0b94bb97ad61..2549c1b93128 100644 --- a/.github/workflows/update-sandbox-agent-version.yml +++ b/.github/workflows/update-sandbox-agent-version.yml @@ -43,7 +43,12 @@ jobs: DOCKERFILE: products/tasks/backend/sandbox/images/Dockerfile.sandbox-base BRANCH_PREFIX: chore/bump-sandbox-agent-version- SLACK_CHANNEL: 'C0C3FBES5ST' - AGENT_PATHS: products/desktop/packages/agent products/desktop/packages/enricher products/desktop/packages/git products/desktop/packages/harness products/desktop/packages/shared + # Old locations stay so a tag range that spans the move still lists its commits. + AGENT_PATHS: >- + packages/agent/packages/agent packages/agent/packages/agent-contracts + packages/agent/packages/enricher packages/agent/packages/git packages/agent/packages/harness + products/desktop/packages/agent products/desktop/packages/enricher + products/desktop/packages/git products/desktop/packages/harness products/desktop/packages/shared steps: - name: Guard - only run on master diff --git a/products/desktop/docs/UPDATES.md b/products/desktop/docs/UPDATES.md index 79605243eca9..b9d600efbd5b 100644 --- a/products/desktop/docs/UPDATES.md +++ b/products/desktop/docs/UPDATES.md @@ -67,7 +67,7 @@ Only a repository admin can push a base tag. ## Agent package releases -Agent releases are separate from desktop app releases. Changes to `products/desktop/packages/agent` or `products/desktop/packages/harness` on `master` trigger an agent release. +Agent releases are separate from desktop app releases. Changes to `packages/agent/packages/agent` or `packages/agent/packages/harness` on `master` trigger an agent release. The patch version counts commits that change either package since the agent base tag. A commit that changes both packages counts once. See the [agent release process](../packages/agent/README.md#releasing) for the tag and publish steps. From 9eb56ecd46509df75c9a2cf80c6225902f917d46 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Tue, 22 Sep 2026 20:44:18 -0700 Subject: [PATCH 08/12] Point the scout harness contract test at the workspace --- products/signals/backend/test/test_scout_harness.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/products/signals/backend/test/test_scout_harness.py b/products/signals/backend/test/test_scout_harness.py index 3d203e2043c2..e6ab0c6e63c7 100644 --- a/products/signals/backend/test/test_scout_harness.py +++ b/products/signals/backend/test/test_scout_harness.py @@ -544,7 +544,7 @@ def test_close_out_asks_for_the_run_row_summary_on_every_channel( class TestCloseOutSummaryToolContract(SimpleTestCase): - _HARNESS_ROOT = Path(__file__).parents[3] / "desktop/packages/harness/src/extensions" + _HARNESS_ROOT = Path(__file__).parents[4] / "packages/agent/packages/harness/src/extensions" def test_prompt_names_the_tool_the_harness_registers(self) -> None: # The prompt hardcodes the qualified tool id the scout calls. The harness owns both halves From 9c1bd220e7649342e03d86514344a7a8044b49e4 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Wed, 23 Sep 2026 15:32:29 -0700 Subject: [PATCH 09/12] Carry agent SDK bump into workspace lockfile --- packages/agent/pnpm-lock.yaml | 74 +++++++++++++++++------------------ 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/packages/agent/pnpm-lock.yaml b/packages/agent/pnpm-lock.yaml index 095feb219f2a..ac1e94467c4e 100644 --- a/packages/agent/pnpm-lock.yaml +++ b/packages/agent/pnpm-lock.yaml @@ -68,8 +68,8 @@ importers: specifier: 1.1.0 version: 1.1.0(zod@4.4.3) '@anthropic-ai/claude-agent-sdk': - specifier: 0.3.270 - version: 0.3.270(@anthropic-ai/sdk@0.109.0(zod@4.4.3))(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(zod@4.4.3) + specifier: 0.3.280 + version: 0.3.280(@anthropic-ai/sdk@0.109.0(zod@4.4.3))(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(zod@4.4.3) '@anthropic-ai/sdk': specifier: 0.109.0 version: 0.109.0(zod@4.4.3) @@ -298,52 +298,52 @@ packages: peerDependencies: zod: 4.4.3 - '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.270': - resolution: {integrity: sha512-nk7BP+i559rheYz9DIwAfevd4DulQXP0mXPP+MeO2fGuIGFmzhE/c0JRm9YswXv5HdaYJvSzjGIB7dVA01NehA==} + '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.280': + resolution: {integrity: sha512-Yws14X5g5hgDtF565Tld/+dILAhH9QZpundjKMyO3dFasq9miXZlhU0NwXqwTO2xP0jDjJ54zduIiJwkcfcvGw==} cpu: [arm64] os: [darwin] - '@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.270': - resolution: {integrity: sha512-89Uql8Oalm52ojdZZeNLU24LKrU+WG9QR7d6YP9ly4aY0YvQUJDaTosbDkijQngUETbPBFdKuVp6fNM8x0Zt3Q==} + '@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.280': + resolution: {integrity: sha512-B1eLx/oZ5RL1c3a13nQ4cRUksWyhGcVNS5vbCHnOVu4Pz+dH0moZ+iY8VaE6FvikVAQwFEW6VDU00b6m3tYdsQ==} cpu: [x64] os: [darwin] - '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.270': - resolution: {integrity: sha512-2BlLk2MAohWG2h43RKcjCA4ooMfBxzKf4yyYfOVv1DtYr8zPU876MHCT1VXB2BaemjKA0pdYJJBzH6pncwx6MQ==} + '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.280': + resolution: {integrity: sha512-uDh+Ggjb36l+jcVgaYxSziGHmBSSR3clqvGlQ0Bgc1v5dLF4igwqZ6ZPW/hS9dArG27fislIOetH1waEgIr+GA==} cpu: [arm64] os: [linux] libc: [musl] - '@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.270': - resolution: {integrity: sha512-iHPYqwetyeO4tZPzXyKZz0hUh2fLpwu/+biGTxxynikG3XrYknovZ/znGDA3TxjSFurqHf5IIDA+SOjh9OPs0A==} + '@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.280': + resolution: {integrity: sha512-6s96OIvBHT2817hCFLIZ421JBpQnvrmZucpjlWsyCODKmwGsSxiEhlWqK2h5Q7lwS6F7bzeAhqjGvC7FzDl9Rw==} cpu: [arm64] os: [linux] libc: [glibc] - '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.270': - resolution: {integrity: sha512-mzH3lnbzrbDGrTf75jLEmkbvkKRLLgmjLaWvf3QuUsgcw+aU69aOY0mW33oOrsuq5zg330uI3B4e68f4LbxNIA==} + '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.280': + resolution: {integrity: sha512-IVbIgvi5C0sdLg/p9hpiVvAQ/ikvTKwOOEy5C1aT7w8XLqBgfpJbzzVuk06df1Q0HlILUmf63EKPmq48lbxtqA==} cpu: [x64] os: [linux] libc: [musl] - '@anthropic-ai/claude-agent-sdk-linux-x64@0.3.270': - resolution: {integrity: sha512-ADaqz2viyAd0GUxdupYLX/K0YJb46xckNpEeWxyLK/9+26b/R5stbaGDyL29fIzyq1ymnNUOaCgEWEemgX0kEA==} + '@anthropic-ai/claude-agent-sdk-linux-x64@0.3.280': + resolution: {integrity: sha512-vpPyxYLy+zNc7LwQDWsZf0GZtTYa0PJLxzuv2vK9iV2dG+hrbRNTl35NSKKRR9rMj6RpKz0i2NLyVQ+D4mREgw==} cpu: [x64] os: [linux] libc: [glibc] - '@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.270': - resolution: {integrity: sha512-Pexeu26cLZByhs6VlrawNYAEu+QE2YptvwNkXsmpLRm7Q/C/M0N/BZBmuUcikXrQQ9cuVzSjuuTTpZt64mvtLA==} + '@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.280': + resolution: {integrity: sha512-heTflHwciJF+Hrf7v0J53QBzD+9mxN9gt2VVmEJAN0+ejbPcOcqnGGZHvyc9aZUuGh5INN0ECaiL4Fn1X2vXQQ==} cpu: [arm64] os: [win32] - '@anthropic-ai/claude-agent-sdk-win32-x64@0.3.270': - resolution: {integrity: sha512-9UyfFcUYsyUZqSe/xX9nIJ1Og6i8FxhlQ35BDi79Ik5He87XFxEIGUvJuMcl7Mq2e3panyhekELFE+9H79xKdw==} + '@anthropic-ai/claude-agent-sdk-win32-x64@0.3.280': + resolution: {integrity: sha512-N+Y1zJb19nx0oPTvzkl/E3ng9AtWGW+K4hySmSHCgYSsgIwfs1YzDj/F5eHDMrxgklTuzFp76TvL3S75z5ge+g==} cpu: [x64] os: [win32] - '@anthropic-ai/claude-agent-sdk@0.3.270': - resolution: {integrity: sha512-sSfcm5Nhb+WHeBCxqeHRRQMUKPmFTL+zgv5xcRUVaFMLttfNEbn3IZJE+fLJJmy4h3J8zdc5sXdSa1JxyB8ppQ==} + '@anthropic-ai/claude-agent-sdk@0.3.280': + resolution: {integrity: sha512-aIQSTKcCJcOgi125GAGQaNZUYgxbEBQwV2Ac+Utp0+gGUjIEWjTqz4B8kXr9XjkcCTYiRUMTDsXPAUfIcBDjnw==} engines: {node: '>=18.0.0'} peerDependencies: '@anthropic-ai/sdk': '>=0.93.0' @@ -3212,44 +3212,44 @@ snapshots: dependencies: zod: 4.4.3 - '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.270': + '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.280': optional: true - '@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.270': + '@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.280': optional: true - '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.270': + '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.280': optional: true - '@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.270': + '@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.280': optional: true - '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.270': + '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.280': optional: true - '@anthropic-ai/claude-agent-sdk-linux-x64@0.3.270': + '@anthropic-ai/claude-agent-sdk-linux-x64@0.3.280': optional: true - '@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.270': + '@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.280': optional: true - '@anthropic-ai/claude-agent-sdk-win32-x64@0.3.270': + '@anthropic-ai/claude-agent-sdk-win32-x64@0.3.280': optional: true - '@anthropic-ai/claude-agent-sdk@0.3.270(@anthropic-ai/sdk@0.109.0(zod@4.4.3))(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(zod@4.4.3)': + '@anthropic-ai/claude-agent-sdk@0.3.280(@anthropic-ai/sdk@0.109.0(zod@4.4.3))(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(zod@4.4.3)': dependencies: '@anthropic-ai/sdk': 0.109.0(zod@4.4.3) '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3) zod: 4.4.3 optionalDependencies: - '@anthropic-ai/claude-agent-sdk-darwin-arm64': 0.3.270 - '@anthropic-ai/claude-agent-sdk-darwin-x64': 0.3.270 - '@anthropic-ai/claude-agent-sdk-linux-arm64': 0.3.270 - '@anthropic-ai/claude-agent-sdk-linux-arm64-musl': 0.3.270 - '@anthropic-ai/claude-agent-sdk-linux-x64': 0.3.270 - '@anthropic-ai/claude-agent-sdk-linux-x64-musl': 0.3.270 - '@anthropic-ai/claude-agent-sdk-win32-arm64': 0.3.270 - '@anthropic-ai/claude-agent-sdk-win32-x64': 0.3.270 + '@anthropic-ai/claude-agent-sdk-darwin-arm64': 0.3.280 + '@anthropic-ai/claude-agent-sdk-darwin-x64': 0.3.280 + '@anthropic-ai/claude-agent-sdk-linux-arm64': 0.3.280 + '@anthropic-ai/claude-agent-sdk-linux-arm64-musl': 0.3.280 + '@anthropic-ai/claude-agent-sdk-linux-x64': 0.3.280 + '@anthropic-ai/claude-agent-sdk-linux-x64-musl': 0.3.280 + '@anthropic-ai/claude-agent-sdk-win32-arm64': 0.3.280 + '@anthropic-ai/claude-agent-sdk-win32-x64': 0.3.280 '@anthropic-ai/sdk@0.109.0(zod@4.4.3)': dependencies: From c9f673f94f8e5e645008daf05b31935eb6b585b9 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Wed, 23 Sep 2026 16:04:57 -0700 Subject: [PATCH 10/12] Point review_hog doc at the agent workspace --- products/review_hog/ARCHITECTURE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/products/review_hog/ARCHITECTURE.md b/products/review_hog/ARCHITECTURE.md index 7c875c6f7c92..0da229d5637f 100644 --- a/products/review_hog/ARCHITECTURE.md +++ b/products/review_hog/ARCHITECTURE.md @@ -500,7 +500,7 @@ reasoning_effort}]` → `get_task_processing_context` reads it back → `start_a `build_agent_runtime_env_prefix` (`logic/services/sandbox.py`) emits `POSTHOG_CODE_{RUNTIME_ADAPTER,PROVIDER,MODEL,REASONING_EFFORT}` env prefixed onto the agent launch command. -**`@posthog/agent` — where they are consumed + applied** (`products/desktop/packages/agent` in this repo). The sandbox +**`@posthog/agent` — where they are consumed + applied** (`packages/agent/packages/agent` in this repo). The sandbox image (`products/tasks/backend/sandbox/images/Dockerfile.sandbox-base`) installs the _published_ package by default, so an agent-side fix reaches reviews only once it is published and the image rebuilt; set `LOCAL_POSTHOG_CODE_MONOREPO_ROOT` to build the local package into the image instead. From c8fb8c34683faf6073809676925fc6e07639bf53 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Mon, 28 Sep 2026 14:13:00 -0700 Subject: [PATCH 11/12] Point new release steps at the workspace paths --- .github/workflows/desktop-agent-release.yml | 2 +- .../update-sandbox-agent-version.yml | 20 +++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/.github/workflows/desktop-agent-release.yml b/.github/workflows/desktop-agent-release.yml index 803e94e3f70f..28ce711ace8a 100644 --- a/.github/workflows/desktop-agent-release.yml +++ b/.github/workflows/desktop-agent-release.yml @@ -70,7 +70,7 @@ jobs: - name: Pack the release tarball id: pack - working-directory: products/desktop/packages/agent + working-directory: packages/agent/packages/agent env: AGENT_VERSION: ${{ steps.version.outputs.version }} run: | diff --git a/.github/workflows/update-sandbox-agent-version.yml b/.github/workflows/update-sandbox-agent-version.yml index 2549c1b93128..03aea97c9ead 100644 --- a/.github/workflows/update-sandbox-agent-version.yml +++ b/.github/workflows/update-sandbox-agent-version.yml @@ -213,12 +213,24 @@ jobs: echo "### Dependency changes" echo deps_ok=true + read_at_tag() { + local tag="$1" + shift + local path content + for path in "$@"; do + if content=$(gh api "repos/${REPO}/contents/${path}?ref=${tag}" --jq '.content' 2>/dev/null); then + printf '%s' "$content" | base64 -d + return 0 + fi + done + return 1 + } for tag in "$from_tag" "$to_tag"; do - catalog=$(gh api "repos/${REPO}/contents/products/desktop/pnpm-workspace.yaml?ref=${tag}" --jq '.content' 2>/dev/null \ - | base64 -d | yq -o=json '{"default": (.catalog // {}), "named": (.catalogs // {})}' 2>/dev/null \ + catalog=$(read_at_tag "$tag" packages/agent/pnpm-workspace.yaml products/desktop/pnpm-workspace.yaml \ + | yq -o=json '{"default": (.catalog // {}), "named": (.catalogs // {})}' 2>/dev/null \ || echo '{"default": {}, "named": {}}') - if ! (set -o pipefail; gh api "repos/${REPO}/contents/products/desktop/packages/agent/package.json?ref=${tag}" --jq '.content' 2>/dev/null \ - | base64 -d | jq -r --argjson catalog "$catalog" ' + if ! (set -o pipefail; read_at_tag "$tag" packages/agent/packages/agent/package.json products/desktop/packages/agent/package.json \ + | jq -r --argjson catalog "$catalog" ' .dependencies // {} | to_entries[] | .value as $spec | (if $spec == "catalog:" or $spec == "catalog:default" then ($catalog.default[.key] // $spec) elif ($spec | startswith("catalog:")) then ($catalog.named[$spec[8:]][.key] // $spec) From abb733e1ef0eba7f8ef29beb8e1d2b5e78430705 Mon Sep 17 00:00:00 2001 From: Charles Vien Date: Tue, 29 Sep 2026 21:52:02 -0700 Subject: [PATCH 12/12] Point inbox docs at the workspace contracts --- .agents/skills/adding-inbox-sources/SKILL.md | 2 +- products/signals/backend/views.py | 4 ++-- products/signals/frontend/inbox/utils/dismissalReasons.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.agents/skills/adding-inbox-sources/SKILL.md b/.agents/skills/adding-inbox-sources/SKILL.md index f8327327a16d..f6226a7a24ed 100644 --- a/.agents/skills/adding-inbox-sources/SKILL.md +++ b/.agents/skills/adding-inbox-sources/SKILL.md @@ -108,7 +108,7 @@ source-list-relevant is a place you must add the new product. The canonical list ### Type gates (every source) -1. `packages/agent-contracts/src/inbox-types.ts` — add `"jira"` to the `SourceProduct` union. +1. `packages/agent/packages/agent-contracts/src/inbox-types.ts` — add `"jira"` to the `SourceProduct` union. 2. `packages/api-client/src/posthog-client.ts` — add to `SignalSourceConfig.source_product` union; add a new `source_type` value only if the record type isn't already `issue`/`ticket`. ### Live UI path (every source) diff --git a/products/signals/backend/views.py b/products/signals/backend/views.py index 6f2133fc5e23..9003da972645 100644 --- a/products/signals/backend/views.py +++ b/products/signals/backend/views.py @@ -605,8 +605,8 @@ def create(self, request: Request, *args, **kwargs) -> Response: SIGNAL_REPORT_SUMMARY_MAX_LENGTH = 10_000 # Canonical dismissal reason codes, mirrored from the inbox UI source of truth at -# products/signals/frontend/inbox/utils/dismissalReasons.ts (itself a port of desktop's -# packages/agent-contracts/src/dismissal-reasons.ts). Constraining the API to these values keeps +# products/signals/frontend/inbox/utils/dismissalReasons.ts (itself a port of +# packages/agent/packages/agent-contracts/src/dismissal-reasons.ts). Constraining the API to these values keeps # agent-supplied reasons rendering as labelled chips in the inbox instead of raw, # unrecognised codes. Keep the values (and order) in sync with that file. SIGNAL_REPORT_DISMISSAL_REASON_CHOICES = [ diff --git a/products/signals/frontend/inbox/utils/dismissalReasons.ts b/products/signals/frontend/inbox/utils/dismissalReasons.ts index fbe11bf0d247..0c330b447ca5 100644 --- a/products/signals/frontend/inbox/utils/dismissalReasons.ts +++ b/products/signals/frontend/inbox/utils/dismissalReasons.ts @@ -1,4 +1,4 @@ -// Port of desktop `packages/agent-contracts/src/dismissal-reasons.ts`. Canonical reason codes recorded when a +// Port of `packages/agent/packages/agent-contracts/src/dismissal-reasons.ts`. Canonical reason codes recorded when a // report is dismissed or resolved. Values are persisted on dismissal artefacts by the backend `state` // action – add or reorder options here only, and keep the values in sync with desktop and with // `SIGNAL_REPORT_DISMISSAL_REASON_CHOICES` in `products/signals/backend/views.py`.