@alwaysmeticulous/cli 2.326.1 → 2.328.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/commonjs-dependencies.spec.d.ts +2 -0
- package/dist/__tests__/commonjs-dependencies.spec.d.ts.map +1 -0
- package/dist/__tests__/commonjs-dependencies.spec.js +82 -0
- package/dist/__tests__/commonjs-dependencies.spec.js.map +1 -0
- package/dist/command-utils/__tests__/parse-rewrites.spec.js +2 -2
- package/dist/command-utils/__tests__/parse-rewrites.spec.js.map +1 -1
- package/dist/command-utils/__tests__/warn-regex-rewrites.spec.js +2 -2
- package/dist/command-utils/__tests__/warn-regex-rewrites.spec.js.map +1 -1
- package/dist/command-utils/common-options.js +2 -2
- package/dist/command-utils/common-options.js.map +1 -1
- package/dist/command-utils/detect-upload-mode.js +2 -2
- package/dist/command-utils/detect-upload-mode.js.map +1 -1
- package/dist/command-utils/detect-upload-mode.spec.js +2 -2
- package/dist/command-utils/detect-upload-mode.spec.js.map +1 -1
- package/dist/command-utils/download-session.utils.js +2 -2
- package/dist/command-utils/download-session.utils.js.map +1 -1
- package/dist/command-utils/json-args.js +2 -2
- package/dist/command-utils/json-args.js.map +1 -1
- package/dist/command-utils/json-args.spec.js +2 -2
- package/dist/command-utils/json-args.spec.js.map +1 -1
- package/dist/command-utils/parse-container-env.js +2 -2
- package/dist/command-utils/parse-container-env.js.map +1 -1
- package/dist/command-utils/parse-rewrites.js +2 -2
- package/dist/command-utils/parse-rewrites.js.map +1 -1
- package/dist/command-utils/print-json.js +2 -2
- package/dist/command-utils/print-json.js.map +1 -1
- package/dist/command-utils/sentry.utils.js +2 -2
- package/dist/command-utils/sentry.utils.js.map +1 -1
- package/dist/command-utils/warn-regex-rewrites.js +2 -2
- package/dist/command-utils/warn-regex-rewrites.js.map +1 -1
- package/dist/commands/agent/agent-review-writes.command.spec.js +2 -2
- package/dist/commands/agent/agent-review-writes.command.spec.js.map +1 -1
- package/dist/commands/agent/build-git-options.js +2 -2
- package/dist/commands/agent/build-git-options.js.map +1 -1
- package/dist/commands/agent/build-git-options.spec.js +2 -2
- package/dist/commands/agent/build-git-options.spec.js.map +1 -1
- package/dist/commands/agent/coverage-columns.util.js +2 -2
- package/dist/commands/agent/coverage-columns.util.js.map +1 -1
- package/dist/commands/agent/create-diff-comment.command.js +2 -2
- package/dist/commands/agent/create-diff-comment.command.js.map +1 -1
- package/dist/commands/agent/diff-comment-write.utils.js +2 -2
- package/dist/commands/agent/diff-comment-write.utils.js.map +1 -1
- package/dist/commands/agent/diff-comments.command.js +2 -2
- package/dist/commands/agent/diff-comments.command.js.map +1 -1
- package/dist/commands/agent/diff-comments.command.spec.js +2 -2
- package/dist/commands/agent/diff-comments.command.spec.js.map +1 -1
- package/dist/commands/agent/ignore-diff.command.js +2 -2
- package/dist/commands/agent/ignore-diff.command.js.map +1 -1
- package/dist/commands/agent/index.js +2 -2
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/js-coverage-diff.command.js +2 -2
- package/dist/commands/agent/js-coverage-diff.command.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.handler.spec.js +2 -2
- package/dist/commands/agent/js-coverage.command.handler.spec.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.js +2 -2
- package/dist/commands/agent/js-coverage.command.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.spec.js +2 -2
- package/dist/commands/agent/js-coverage.command.spec.js.map +1 -1
- package/dist/commands/agent/reject-diff.command.js +2 -2
- package/dist/commands/agent/reject-diff.command.js.map +1 -1
- package/dist/commands/agent/reject-diff.command.spec.js +2 -2
- package/dist/commands/agent/reject-diff.command.spec.js.map +1 -1
- package/dist/commands/agent/reply-to-diff-comment.command.js +2 -2
- package/dist/commands/agent/reply-to-diff-comment.command.js.map +1 -1
- package/dist/commands/agent/screenshot-dom-diff.command.js +2 -2
- package/dist/commands/agent/screenshot-dom-diff.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image-files.command.js +2 -2
- package/dist/commands/agent/screenshot-image-files.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image.command.js +2 -2
- package/dist/commands/agent/screenshot-image.command.js.map +1 -1
- package/dist/commands/agent/sessions.command.js +2 -2
- package/dist/commands/agent/sessions.command.js.map +1 -1
- package/dist/commands/agent/sessions.command.spec.js +2 -2
- package/dist/commands/agent/sessions.command.spec.js.map +1 -1
- package/dist/commands/agent/submit-feedback.command.js +2 -2
- package/dist/commands/agent/submit-feedback.command.js.map +1 -1
- package/dist/commands/agent/test-run-check.command.js +2 -2
- package/dist/commands/agent/test-run-check.command.js.map +1 -1
- package/dist/commands/agent/test-run-check.command.spec.js +2 -2
- package/dist/commands/agent/test-run-check.command.spec.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.js +2 -2
- package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.spec.js +2 -2
- package/dist/commands/agent/test-run-diffs.command.spec.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.js +2 -2
- package/dist/commands/agent/test-run-diffs.utils.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.spec.js +2 -2
- package/dist/commands/agent/test-run-diffs.utils.spec.js.map +1 -1
- package/dist/commands/agent/test-run-for-commit.command.js +2 -2
- package/dist/commands/agent/test-run-for-commit.command.js.map +1 -1
- package/dist/commands/agent/timeline.command.js +2 -2
- package/dist/commands/agent/timeline.command.js.map +1 -1
- package/dist/commands/agent/timeline.command.spec.js +2 -2
- package/dist/commands/agent/timeline.command.spec.js.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.js +2 -2
- package/dist/commands/agent/trigger-test-run.command.js.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.spec.js +2 -2
- package/dist/commands/agent/trigger-test-run.command.spec.js.map +1 -1
- package/dist/commands/agent/upload-build.command.js +2 -2
- package/dist/commands/agent/upload-build.command.js.map +1 -1
- package/dist/commands/all-commands.d.ts.map +1 -1
- package/dist/commands/all-commands.js +8 -6
- package/dist/commands/all-commands.js.map +1 -1
- package/dist/commands/auth/__tests__/get-project.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/get-project.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/list-projects.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/list-projects.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/login.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/login.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/logout.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/logout.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/set-project.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/set-project.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/whoami.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/whoami.command.spec.js.map +1 -1
- package/dist/commands/auth/get-project.command.js +2 -2
- package/dist/commands/auth/get-project.command.js.map +1 -1
- package/dist/commands/auth/index.js +2 -2
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/auth/list-projects.command.js +2 -2
- package/dist/commands/auth/list-projects.command.js.map +1 -1
- package/dist/commands/auth/login.command.js +2 -2
- package/dist/commands/auth/login.command.js.map +1 -1
- package/dist/commands/auth/logout.command.js +2 -2
- package/dist/commands/auth/logout.command.js.map +1 -1
- package/dist/commands/auth/set-project.command.js +2 -2
- package/dist/commands/auth/set-project.command.js.map +1 -1
- package/dist/commands/auth/whoami.command.js +2 -2
- package/dist/commands/auth/whoami.command.js.map +1 -1
- package/dist/commands/ci/__tests__/label-commit.utils.spec.js +2 -2
- package/dist/commands/ci/__tests__/label-commit.utils.spec.js.map +1 -1
- package/dist/commands/ci/__tests__/session-filter.utils.spec.js +2 -2
- package/dist/commands/ci/__tests__/session-filter.utils.spec.js.map +1 -1
- package/dist/commands/ci/agent-test.command.d.ts +2 -0
- package/dist/commands/ci/agent-test.command.d.ts.map +1 -1
- package/dist/commands/ci/agent-test.command.js +28 -3
- package/dist/commands/ci/agent-test.command.js.map +1 -1
- package/dist/commands/ci/agent-test.command.spec.d.ts +2 -0
- package/dist/commands/ci/agent-test.command.spec.d.ts.map +1 -0
- package/dist/commands/ci/agent-test.command.spec.js +133 -0
- package/dist/commands/ci/agent-test.command.spec.js.map +1 -0
- package/dist/commands/ci/deprecated-trigger-options.js +2 -2
- package/dist/commands/ci/deprecated-trigger-options.js.map +1 -1
- package/dist/commands/ci/index.js +2 -2
- package/dist/commands/ci/index.js.map +1 -1
- package/dist/commands/ci/label-commit.command.js +2 -2
- package/dist/commands/ci/label-commit.command.js.map +1 -1
- package/dist/commands/ci/label-commit.core.js +2 -2
- package/dist/commands/ci/label-commit.core.js.map +1 -1
- package/dist/commands/ci/label-commit.types.js +2 -2
- package/dist/commands/ci/label-commit.types.js.map +1 -1
- package/dist/commands/ci/label-commit.utils.js +2 -2
- package/dist/commands/ci/label-commit.utils.js.map +1 -1
- package/dist/commands/ci/prepare.command.js +2 -2
- package/dist/commands/ci/prepare.command.js.map +1 -1
- package/dist/commands/ci/resolve-git-options.js +2 -2
- package/dist/commands/ci/resolve-git-options.js.map +1 -1
- package/dist/commands/ci/run-local.command.js +2 -2
- package/dist/commands/ci/run-local.command.js.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js +2 -2
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js +2 -2
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js +2 -2
- package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js.map +1 -1
- package/dist/commands/ci/run.command.js +2 -2
- package/dist/commands/ci/run.command.js.map +1 -1
- package/dist/commands/ci/session-filter.utils.js +2 -2
- package/dist/commands/ci/session-filter.utils.js.map +1 -1
- package/dist/commands/ci/start-tunnel.command.js +2 -2
- package/dist/commands/ci/start-tunnel.command.js.map +1 -1
- package/dist/commands/ci/trigger-test-run.core.js +2 -2
- package/dist/commands/ci/trigger-test-run.core.js.map +1 -1
- package/dist/commands/ci/trigger-test-run.types.js +2 -2
- package/dist/commands/ci/trigger-test-run.types.js.map +1 -1
- package/dist/commands/ci/upload-asset-chunk.command.js +2 -2
- package/dist/commands/ci/upload-asset-chunk.command.js.map +1 -1
- package/dist/commands/ci/upload-assets.command.js +2 -2
- package/dist/commands/ci/upload-assets.command.js.map +1 -1
- package/dist/commands/ci/upload-container.command.js +2 -2
- package/dist/commands/ci/upload-container.command.js.map +1 -1
- package/dist/commands/crawl.command.js +2 -2
- package/dist/commands/crawl.command.js.map +1 -1
- package/dist/commands/debug/clean-workspaces.js +2 -2
- package/dist/commands/debug/clean-workspaces.js.map +1 -1
- package/dist/commands/debug/index.js +2 -2
- package/dist/commands/debug/index.js.map +1 -1
- package/dist/commands/debug/present-workspace.js +2 -2
- package/dist/commands/debug/present-workspace.js.map +1 -1
- package/dist/commands/debug/project-worktree.js +2 -2
- package/dist/commands/debug/project-worktree.js.map +1 -1
- package/dist/commands/deprecated-aliases.js +2 -2
- package/dist/commands/deprecated-aliases.js.map +1 -1
- package/dist/commands/download/index.js +2 -2
- package/dist/commands/download/index.js.map +1 -1
- package/dist/commands/download/replay.command.js +2 -2
- package/dist/commands/download/replay.command.js.map +1 -1
- package/dist/commands/download/session.command.js +2 -2
- package/dist/commands/download/session.command.js.map +1 -1
- package/dist/commands/download/test-run.command.js +2 -2
- package/dist/commands/download/test-run.command.js.map +1 -1
- package/dist/commands/local/get-edited-files.utils.js +2 -2
- package/dist/commands/local/get-edited-files.utils.js.map +1 -1
- package/dist/commands/local/get-edited-files.utils.spec.js +2 -2
- package/dist/commands/local/get-edited-files.utils.spec.js.map +1 -1
- package/dist/commands/local/index.js +2 -2
- package/dist/commands/local/index.js.map +1 -1
- package/dist/commands/local/relevant-sessions.command.js +2 -2
- package/dist/commands/local/relevant-sessions.command.js.map +1 -1
- package/dist/commands/onboard/__tests__/build-context.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/build-context.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/build-context.spec.js +179 -0
- package/dist/commands/onboard/__tests__/build-context.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/check-vcs-link.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/check-vcs-link.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/check-vcs-link.spec.js +164 -0
- package/dist/commands/onboard/__tests__/check-vcs-link.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/codex-mcp.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/codex-mcp.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/codex-mcp.spec.js +73 -0
- package/dist/commands/onboard/__tests__/codex-mcp.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/detect-framework.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/detect-framework.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/detect-framework.spec.js +277 -0
- package/dist/commands/onboard/__tests__/detect-framework.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/git-repo-info.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/git-repo-info.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/git-repo-info.spec.js +109 -0
- package/dist/commands/onboard/__tests__/git-repo-info.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/inline-doc-constants.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/inline-doc-constants.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/inline-doc-constants.spec.js +157 -0
- package/dist/commands/onboard/__tests__/inline-doc-constants.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/install-skills.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/install-skills.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/install-skills.spec.js +158 -0
- package/dist/commands/onboard/__tests__/install-skills.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/materialize-workspace.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/materialize-workspace.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/materialize-workspace.spec.js +116 -0
- package/dist/commands/onboard/__tests__/materialize-workspace.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/resolve-app.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/resolve-app.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/resolve-app.spec.js +166 -0
- package/dist/commands/onboard/__tests__/resolve-app.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/safe-repo-fs.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/safe-repo-fs.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/safe-repo-fs.spec.js +137 -0
- package/dist/commands/onboard/__tests__/safe-repo-fs.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.js +286 -0
- package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.js.map +1 -0
- package/dist/commands/onboard/build-context.d.ts +16 -0
- package/dist/commands/onboard/build-context.d.ts.map +1 -0
- package/dist/commands/onboard/build-context.js +104 -0
- package/dist/commands/onboard/build-context.js.map +1 -0
- package/dist/commands/onboard/check-vcs-link.d.ts +14 -0
- package/dist/commands/onboard/check-vcs-link.d.ts.map +1 -0
- package/dist/commands/onboard/check-vcs-link.js +111 -0
- package/dist/commands/onboard/check-vcs-link.js.map +1 -0
- package/dist/commands/onboard/codex-mcp.d.ts +24 -0
- package/dist/commands/onboard/codex-mcp.d.ts.map +1 -0
- package/dist/commands/onboard/codex-mcp.js +302 -0
- package/dist/commands/onboard/codex-mcp.js.map +1 -0
- package/dist/commands/onboard/customer-agents.d.ts +9 -0
- package/dist/commands/onboard/customer-agents.d.ts.map +1 -0
- package/dist/commands/onboard/customer-agents.js +19 -0
- package/dist/commands/onboard/customer-agents.js.map +1 -0
- package/dist/commands/onboard/customer-agents.json +17 -0
- package/dist/commands/onboard/customer-docs.d.ts +21 -0
- package/dist/commands/onboard/customer-docs.d.ts.map +1 -0
- package/dist/commands/onboard/customer-docs.js +31 -0
- package/dist/commands/onboard/customer-docs.js.map +1 -0
- package/dist/commands/onboard/customer-docs.json +35 -0
- package/dist/commands/onboard/detect-framework.d.ts +26 -0
- package/dist/commands/onboard/detect-framework.d.ts.map +1 -0
- package/dist/commands/onboard/detect-framework.js +305 -0
- package/dist/commands/onboard/detect-framework.js.map +1 -0
- package/dist/commands/onboard/discover-apps.d.ts +21 -0
- package/dist/commands/onboard/discover-apps.d.ts.map +1 -0
- package/dist/commands/onboard/discover-apps.js +318 -0
- package/dist/commands/onboard/discover-apps.js.map +1 -0
- package/dist/commands/onboard/docs-urls.d.ts +11 -0
- package/dist/commands/onboard/docs-urls.d.ts.map +1 -0
- package/dist/commands/onboard/docs-urls.js +17 -0
- package/dist/commands/onboard/docs-urls.js.map +1 -0
- package/dist/commands/onboard/git-repo-info.d.ts +15 -0
- package/dist/commands/onboard/git-repo-info.d.ts.map +1 -0
- package/dist/commands/onboard/git-repo-info.js +84 -0
- package/dist/commands/onboard/git-repo-info.js.map +1 -0
- package/dist/commands/onboard/index.d.ts +18 -0
- package/dist/commands/onboard/index.d.ts.map +1 -0
- package/dist/commands/onboard/index.js +164 -0
- package/dist/commands/onboard/index.js.map +1 -0
- package/dist/commands/onboard/inline-doc-constants.d.ts +21 -0
- package/dist/commands/onboard/inline-doc-constants.d.ts.map +1 -0
- package/dist/commands/onboard/inline-doc-constants.js +238 -0
- package/dist/commands/onboard/inline-doc-constants.js.map +1 -0
- package/dist/commands/onboard/launch-agent.d.ts +65 -0
- package/dist/commands/onboard/launch-agent.d.ts.map +1 -0
- package/dist/commands/onboard/launch-agent.js +311 -0
- package/dist/commands/onboard/launch-agent.js.map +1 -0
- package/dist/commands/onboard/materialize-workspace.d.ts +68 -0
- package/dist/commands/onboard/materialize-workspace.d.ts.map +1 -0
- package/dist/commands/onboard/materialize-workspace.js +177 -0
- package/dist/commands/onboard/materialize-workspace.js.map +1 -0
- package/dist/commands/onboard/print-summary.d.ts +10 -0
- package/dist/commands/onboard/print-summary.d.ts.map +1 -0
- package/dist/commands/onboard/print-summary.js +49 -0
- package/dist/commands/onboard/print-summary.js.map +1 -0
- package/dist/commands/onboard/resolve-app.d.ts +21 -0
- package/dist/commands/onboard/resolve-app.d.ts.map +1 -0
- package/dist/commands/onboard/resolve-app.js +78 -0
- package/dist/commands/onboard/resolve-app.js.map +1 -0
- package/dist/commands/onboard/resolve-project.d.ts +14 -0
- package/dist/commands/onboard/resolve-project.d.ts.map +1 -0
- package/dist/commands/onboard/resolve-project.js +92 -0
- package/dist/commands/onboard/resolve-project.js.map +1 -0
- package/dist/commands/onboard/safe-repo-fs.d.ts +59 -0
- package/dist/commands/onboard/safe-repo-fs.d.ts.map +1 -0
- package/dist/commands/onboard/safe-repo-fs.js +266 -0
- package/dist/commands/onboard/safe-repo-fs.js.map +1 -0
- package/dist/commands/onboard/setup-agent-integrations.d.ts +43 -0
- package/dist/commands/onboard/setup-agent-integrations.d.ts.map +1 -0
- package/dist/commands/onboard/setup-agent-integrations.js +324 -0
- package/dist/commands/onboard/setup-agent-integrations.js.map +1 -0
- package/dist/commands/onboard/templates/CLAUDE.md +213 -0
- package/dist/commands/onboard/templates/agents/auth-setup.md +117 -0
- package/dist/commands/onboard/templates/agents/ci-setup.md +742 -0
- package/dist/commands/onboard/templates/agents/csp-setup.md +78 -0
- package/dist/commands/onboard/templates/agents/false-positive-prevention.md +268 -0
- package/dist/commands/onboard/templates/agents/feature-flag-setup.md +133 -0
- package/dist/commands/onboard/templates/agents/local-simulation-verification.md +96 -0
- package/dist/commands/onboard/templates/agents/persisted-graphql-queries.md +150 -0
- package/dist/commands/onboard/templates/agents/recorder-installation.md +194 -0
- package/dist/commands/onboard/templates/agents/replay-fetch-retry-compatibility.md +252 -0
- package/dist/commands/onboard/templates/agents/reviewer.md +788 -0
- package/dist/commands/onboard/templates/agents/service-worker-compatibility.md +254 -0
- package/dist/commands/onboard/templates/agents/session-context.md +133 -0
- package/dist/commands/onboard/templates/agents/shared-worker-compatibility.md +187 -0
- package/dist/commands/onboard/templates/docs/additional-guides/backend-recorder.ts +340 -0
- package/dist/commands/onboard/templates/docs/ci/not-yet-run-checks.ts +58 -0
- package/dist/commands/onboard/templates/docs/ci.ts +19 -0
- package/dist/commands/onboard/templates/docs/cloud-replay.ts +145 -0
- package/dist/commands/onboard/templates/docs/constants.ts +37 -0
- package/dist/commands/onboard/templates/docs/github-actions-v2.ts +859 -0
- package/dist/commands/onboard/templates/docs/how-to/auth/bypassing-auth.ts +27 -0
- package/dist/commands/onboard/templates/docs/how-to/auth/enabling-full-auth.ts +91 -0
- package/dist/commands/onboard/templates/docs/how-to/configure-ignore-patterns.ts +77 -0
- package/dist/commands/onboard/templates/docs/how-to/enable-source-coverage.ts +84 -0
- package/dist/commands/onboard/templates/docs/how-to/fix-false-positive-diffs.ts +156 -0
- package/dist/commands/onboard/templates/docs/how-to/link-bitbucket.ts +15 -0
- package/dist/commands/onboard/templates/docs/how-to/link-gitlab.ts +22 -0
- package/dist/commands/onboard/templates/docs/how-to/record-session-context.ts +129 -0
- package/dist/commands/onboard/templates/docs/how-to/recorder-script.ts +139 -0
- package/dist/commands/onboard/templates/docs/how-to/testing-feature-flags.ts +97 -0
- package/dist/commands/onboard/templates/docs/how-to/testing-multiple-apps-or-app-variants.ts +40 -0
- package/dist/commands/onboard/templates/docs/how-to/troubleshoot-auth.ts +58 -0
- package/dist/commands/onboard/templates/docs/how-to/troubleshoot-failed-simulations.ts +97 -0
- package/dist/commands/onboard/templates/docs/how-to/typescript-types.ts +51 -0
- package/dist/commands/onboard/templates/docs/how-to/window-meticulous-object.ts +685 -0
- package/dist/commands/onboard/templates/docs/onboarding-guide.ts +415 -0
- package/dist/commands/onboard/templates/docs/recorder-getting-started.ts +24 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/constants.ts +1 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/explanation-of-methods-to-add-recorder.ts +21 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/angular-instructions.ts +34 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/any-other-framework-instructions.ts +118 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/vue-instructions.ts +39 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/next-js-instructions.ts +49 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/nuxtjs-instructions.ts +68 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/rsbuild-instructions.ts +66 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/storybook-instructions.ts +59 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/sveltekit-instructions.ts +113 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/vite-instructions.ts +58 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-requirements.ts +51 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/steps-after-installing-recorder.ts +25 -0
- package/dist/commands/onboard/templates/docs/reference/cli-commands.ts +1324 -0
- package/dist/commands/onboard/templates/docs/session-recording/csp-exceptions.ts +17 -0
- package/dist/commands/onboard/templates/docs/session-recording/recorder-npm-dependency.ts +62 -0
- package/dist/commands/onboard/templates/docs-imports/src/lib/next/next.constants.ts +46 -0
- package/dist/commands/onboard/templates/docs-imports/src/lib/utils/internal-urls/docs-urls.utils.ts +254 -0
- package/dist/commands/onboard/templates/settings.json +14 -0
- package/dist/commands/project/index.js +2 -2
- package/dist/commands/project/index.js.map +1 -1
- package/dist/commands/project/show.command.js +2 -2
- package/dist/commands/project/show.command.js.map +1 -1
- package/dist/commands/project/upload-source.command.js +2 -2
- package/dist/commands/project/upload-source.command.js.map +1 -1
- package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js +2 -2
- package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js.map +1 -1
- package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js +2 -2
- package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js.map +1 -1
- package/dist/commands/record/__tests__/backend.command.spec.js +2 -2
- package/dist/commands/record/__tests__/backend.command.spec.js.map +1 -1
- package/dist/commands/record/__tests__/login.command.spec.js +2 -2
- package/dist/commands/record/__tests__/login.command.spec.js.map +1 -1
- package/dist/commands/record/__tests__/session.command.spec.js +2 -2
- package/dist/commands/record/__tests__/session.command.spec.js.map +1 -1
- package/dist/commands/record/backend-dev-command.utils.js +2 -2
- package/dist/commands/record/backend-dev-command.utils.js.map +1 -1
- package/dist/commands/record/backend-sidecar.utils.js +2 -2
- package/dist/commands/record/backend-sidecar.utils.js.map +1 -1
- package/dist/commands/record/backend.command.js +2 -2
- package/dist/commands/record/backend.command.js.map +1 -1
- package/dist/commands/record/index.js +2 -2
- package/dist/commands/record/index.js.map +1 -1
- package/dist/commands/record/login.command.js +2 -2
- package/dist/commands/record/login.command.js.map +1 -1
- package/dist/commands/record/session.command.js +2 -2
- package/dist/commands/record/session.command.js.map +1 -1
- package/dist/commands/replay-debugger.ui.js +2 -2
- package/dist/commands/replay-debugger.ui.js.map +1 -1
- package/dist/commands/replay.command.js +2 -2
- package/dist/commands/replay.command.js.map +1 -1
- package/dist/commands/schema.command.js +2 -2
- package/dist/commands/schema.command.js.map +1 -1
- package/dist/commands/schema.command.spec.js +2 -2
- package/dist/commands/schema.command.spec.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/utils/__tests__/handle-auth-failure.spec.js +2 -2
- package/dist/utils/__tests__/handle-auth-failure.spec.js.map +1 -1
- package/dist/utils/__tests__/project-selection-hint.spec.js +2 -2
- package/dist/utils/__tests__/project-selection-hint.spec.js.map +1 -1
- package/dist/utils/__tests__/resolve-project-identifier.spec.js +2 -2
- package/dist/utils/__tests__/resolve-project-identifier.spec.js.map +1 -1
- package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js +2 -2
- package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js.map +1 -1
- package/dist/utils/__tests__/select-project.spec.js +5 -4
- package/dist/utils/__tests__/select-project.spec.js.map +1 -1
- package/dist/utils/cli-user-error.js +2 -2
- package/dist/utils/cli-user-error.js.map +1 -1
- package/dist/utils/constants.js +2 -2
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/environment.utils.js +2 -2
- package/dist/utils/environment.utils.js.map +1 -1
- package/dist/utils/format-coverage-ranges.js +2 -2
- package/dist/utils/format-coverage-ranges.js.map +1 -1
- package/dist/utils/handle-auth-failure.js +2 -2
- package/dist/utils/handle-auth-failure.js.map +1 -1
- package/dist/utils/out-of-date-client-error.js +2 -2
- package/dist/utils/out-of-date-client-error.js.map +1 -1
- package/dist/utils/project-selection-hint.js +2 -2
- package/dist/utils/project-selection-hint.js.map +1 -1
- package/dist/utils/resolve-project-identifier.js +2 -2
- package/dist/utils/resolve-project-identifier.js.map +1 -1
- package/dist/utils/resolve-test-run-from-commit.js +2 -2
- package/dist/utils/resolve-test-run-from-commit.js.map +1 -1
- package/dist/utils/select-project.d.ts +9 -0
- package/dist/utils/select-project.d.ts.map +1 -1
- package/dist/utils/select-project.js +58 -15
- package/dist/utils/select-project.js.map +1 -1
- package/package.json +14 -12
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="30dac2bd-f754-5c4e-83eb-4f27d7ed6bfe")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.printOnboardSummary = void 0;
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
/** Prints what the onboard run resolved, before any agent takes over the terminal. */
|
|
11
|
+
const printOnboardSummary = (options) => {
|
|
12
|
+
const { context, frameworkDetection, projectRoot, workspaceDir } = options;
|
|
13
|
+
console.log("");
|
|
14
|
+
console.log(chalk_1.default.bold("Meticulous onboard"));
|
|
15
|
+
console.log(` Project: ${chalk_1.default.green(context.orgAndProject ?? "(unknown — set tokens in the dashboard)")}`);
|
|
16
|
+
const vcsLine = formatVcsLinkLine(context);
|
|
17
|
+
if (vcsLine) {
|
|
18
|
+
console.log(vcsLine);
|
|
19
|
+
}
|
|
20
|
+
console.log(` App: ${chalk_1.default.green(`${context.selectedAppName} (${context.selectedAppPath})`)}${context.isMonorepo ? chalk_1.default.dim(" [monorepo]") : ""}`);
|
|
21
|
+
console.log(` Framework: ${chalk_1.default.green(`${frameworkDetection.framework} / ${frameworkDetection.rendering}`)}`);
|
|
22
|
+
console.log(` Repo: ${chalk_1.default.green(projectRoot)}`);
|
|
23
|
+
console.log(` Workspace: ${chalk_1.default.green(workspaceDir)}`);
|
|
24
|
+
console.log("");
|
|
25
|
+
};
|
|
26
|
+
exports.printOnboardSummary = printOnboardSummary;
|
|
27
|
+
const formatVcsLinkLine = (context) => {
|
|
28
|
+
switch (context.ciProvider) {
|
|
29
|
+
case "github-actions":
|
|
30
|
+
return ` GitHub: ${linkStatus(context.isGitHubIntegrationActive)}`;
|
|
31
|
+
case "gitlab-ci":
|
|
32
|
+
return ` GitLab: ${linkStatus(context.isGitLabIntegrationActive)}`;
|
|
33
|
+
case "bitbucket-pipelines":
|
|
34
|
+
return ` Bitbucket: ${linkStatus(context.isBitbucketIntegrationActive)}`;
|
|
35
|
+
default:
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const linkStatus = (linked) => {
|
|
40
|
+
if (linked === true) {
|
|
41
|
+
return chalk_1.default.green("linked");
|
|
42
|
+
}
|
|
43
|
+
if (linked === false) {
|
|
44
|
+
return chalk_1.default.yellow("not linked");
|
|
45
|
+
}
|
|
46
|
+
return chalk_1.default.dim("unknown");
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=print-summary.js.map
|
|
49
|
+
//# debugId=30dac2bd-f754-5c4e-83eb-4f27d7ed6bfe
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print-summary.js","sources":["../../../src/commands/onboard/print-summary.ts"],"sourceRoot":"","names":[],"mappings":";;;;;;;;AAAA,kDAA0B;AAI1B,sFAAsF;AAC/E,MAAM,mBAAmB,GAAG,CAAC,OAKnC,EAAQ,EAAE;IACT,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAE3E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CACT,gBAAgB,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,yCAAyC,CAAC,EAAE,CAClG,CAAC;IACF,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,GAAG,CACT,gBAAgB,eAAK,CAAC,KAAK,CACzB,GAAG,OAAO,CAAC,eAAe,KAAK,OAAO,CAAC,eAAe,GAAG,CAC1D,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CACzD,CAAC;IACF,OAAO,CAAC,GAAG,CACT,gBAAgB,eAAK,CAAC,KAAK,CACzB,GAAG,kBAAkB,CAAC,SAAS,MAAM,kBAAkB,CAAC,SAAS,EAAE,CACpE,EAAE,CACJ,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,eAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,gBAAgB,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC;AA9BW,QAAA,mBAAmB,uBA8B9B;AAEF,MAAM,iBAAiB,GAAG,CAAC,OAA2B,EAAiB,EAAE;IACvE,QAAQ,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3B,KAAK,gBAAgB;YACnB,OAAO,gBAAgB,UAAU,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACzE,KAAK,WAAW;YACd,OAAO,gBAAgB,UAAU,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACzE,KAAK,qBAAqB;YACxB,OAAO,gBAAgB,UAAU,CAAC,OAAO,CAAC,4BAA4B,CAAC,EAAE,CAAC;QAC5E;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,MAAsB,EAAU,EAAE;IACpD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,eAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC9B,CAAC,CAAC","debugId":"30dac2bd-f754-5c4e-83eb-4f27d7ed6bfe"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type FrameworkDetection } from "./detect-framework";
|
|
2
|
+
import { type DiscoveredApp } from "./discover-apps";
|
|
3
|
+
/**
|
|
4
|
+
* Picks the frontend app to onboard: the `--app` match, the only discovered
|
|
5
|
+
* app, or an interactive picker when the repo is a monorepo.
|
|
6
|
+
*/
|
|
7
|
+
export declare const resolveSelectedApp: (options: {
|
|
8
|
+
projectRoot: string;
|
|
9
|
+
app: string | undefined;
|
|
10
|
+
}) => Promise<DiscoveredApp>;
|
|
11
|
+
/**
|
|
12
|
+
* Warns about unsupported SSR before anything is written and lets the user
|
|
13
|
+
* decide whether to continue. Non-interactive runs require the explicit
|
|
14
|
+
* `--skip-ssr-check` override because there is nobody to confirm.
|
|
15
|
+
*/
|
|
16
|
+
export declare const assertSupportedSsr: (options: {
|
|
17
|
+
detection: FrameworkDetection;
|
|
18
|
+
selectedApp: DiscoveredApp;
|
|
19
|
+
skipSsrCheck: boolean;
|
|
20
|
+
}) => Promise<void>;
|
|
21
|
+
//# sourceMappingURL=resolve-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-app.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/resolve-app.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,YAAmB;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB,KAAG,OAAO,CAAC,aAAa,CAgCxB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,YAAmB;IAChD,SAAS,EAAE,kBAAkB,CAAC;IAC9B,WAAW,EAAE,aAAa,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB,KAAG,OAAO,CAAC,IAAI,CAqCf,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="cb20c9e0-2694-552a-98a7-eff127612376")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.assertSupportedSsr = exports.resolveSelectedApp = void 0;
|
|
9
|
+
const client_1 = require("@alwaysmeticulous/client");
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
12
|
+
const cli_user_error_1 = require("../../utils/cli-user-error");
|
|
13
|
+
const detect_framework_1 = require("./detect-framework");
|
|
14
|
+
const discover_apps_1 = require("./discover-apps");
|
|
15
|
+
/**
|
|
16
|
+
* Picks the frontend app to onboard: the `--app` match, the only discovered
|
|
17
|
+
* app, or an interactive picker when the repo is a monorepo.
|
|
18
|
+
*/
|
|
19
|
+
const resolveSelectedApp = async (options) => {
|
|
20
|
+
const apps = (0, discover_apps_1.discoverFrontendApps)(options.projectRoot);
|
|
21
|
+
if (options.app) {
|
|
22
|
+
const requested = options.app.trim();
|
|
23
|
+
const match = apps.find((app) => app.path === requested ||
|
|
24
|
+
app.name === requested ||
|
|
25
|
+
app.packageName === requested);
|
|
26
|
+
if (!match) {
|
|
27
|
+
throw new cli_user_error_1.CliUserError(`App '${requested}' not found. Available frontend apps:\n${formatAppList(apps)}`);
|
|
28
|
+
}
|
|
29
|
+
return match;
|
|
30
|
+
}
|
|
31
|
+
if (apps.length <= 1) {
|
|
32
|
+
return apps[0] ?? { path: ".", name: "app", packageName: null };
|
|
33
|
+
}
|
|
34
|
+
if (!(0, client_1.isInteractiveContext)()) {
|
|
35
|
+
throw new cli_user_error_1.CliUserError("Multiple frontend apps detected in this monorepo, but no interactive terminal is available.\n" +
|
|
36
|
+
"Pass `--app <path-or-name>` to choose one:\n" +
|
|
37
|
+
formatAppList(apps));
|
|
38
|
+
}
|
|
39
|
+
return (0, discover_apps_1.promptForMonorepoApp)(apps);
|
|
40
|
+
};
|
|
41
|
+
exports.resolveSelectedApp = resolveSelectedApp;
|
|
42
|
+
/**
|
|
43
|
+
* Warns about unsupported SSR before anything is written and lets the user
|
|
44
|
+
* decide whether to continue. Non-interactive runs require the explicit
|
|
45
|
+
* `--skip-ssr-check` override because there is nobody to confirm.
|
|
46
|
+
*/
|
|
47
|
+
const assertSupportedSsr = async (options) => {
|
|
48
|
+
const { detection, selectedApp, skipSsrCheck } = options;
|
|
49
|
+
if (!detection.isUnsupportedSsr || skipSsrCheck) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const appLabel = `${selectedApp.name} (${selectedApp.path})`;
|
|
53
|
+
console.log(chalk_1.default.yellow((0, detect_framework_1.unsupportedSsrWarningMessage)(detection)));
|
|
54
|
+
console.log(chalk_1.default.dim(` Selected app: ${appLabel}`));
|
|
55
|
+
console.log("");
|
|
56
|
+
if (!(0, client_1.isInteractiveContext)()) {
|
|
57
|
+
throw new cli_user_error_1.CliUserError(`${(0, detect_framework_1.unsupportedSsrMessage)(detection)}\n\nSelected app: ${appLabel}\n\n` +
|
|
58
|
+
"There is no interactive terminal to confirm that you want to continue. " +
|
|
59
|
+
"Re-run with `--skip-ssr-check` to accept this risk.");
|
|
60
|
+
}
|
|
61
|
+
const { proceed } = await inquirer_1.default.prompt([
|
|
62
|
+
{
|
|
63
|
+
type: "confirm",
|
|
64
|
+
name: "proceed",
|
|
65
|
+
message: detection.framework === "nextjs-app"
|
|
66
|
+
? `We think ${appLabel} uses Next.js App Router. Continue anyway?`
|
|
67
|
+
: `We think ${appLabel} is an unsupported SSR setup. Continue anyway?`,
|
|
68
|
+
default: false,
|
|
69
|
+
},
|
|
70
|
+
]);
|
|
71
|
+
if (!proceed) {
|
|
72
|
+
throw new cli_user_error_1.CliUserError(`${(0, detect_framework_1.unsupportedSsrMessage)(detection)}\n\nSelected app: ${appLabel}`);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
exports.assertSupportedSsr = assertSupportedSsr;
|
|
76
|
+
const formatAppList = (apps) => apps.map((app) => ` - ${app.name} (${app.path})`).join("\n");
|
|
77
|
+
//# sourceMappingURL=resolve-app.js.map
|
|
78
|
+
//# debugId=cb20c9e0-2694-552a-98a7-eff127612376
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-app.js","sources":["../../../src/commands/onboard/resolve-app.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"cb20c9e0-2694-552a-98a7-eff127612376"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Project } from "@alwaysmeticulous/api";
|
|
2
|
+
/**
|
|
3
|
+
* Resolves which Meticulous project this onboard run is for.
|
|
4
|
+
*
|
|
5
|
+
* - Interactive OAuth: searchable picker (type to filter, ↑/↓ to select).
|
|
6
|
+
* - `--project` / sole accessible project / project-scoped API token: no prompt.
|
|
7
|
+
* - Non-interactive OAuth with several projects: requires `--project`.
|
|
8
|
+
* - Auth failure: returns null and continues with local git context only.
|
|
9
|
+
*/
|
|
10
|
+
export declare const resolveOnboardProject: (options: {
|
|
11
|
+
apiToken: string | undefined;
|
|
12
|
+
project: string | undefined;
|
|
13
|
+
}) => Promise<Project | null>;
|
|
14
|
+
//# sourceMappingURL=resolve-project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-project.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/resolve-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAmBrD;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,YAAmB;IACnD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAwCzB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="f160cb06-1427-52cc-8b70-5fb6d2b32d44")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.resolveOnboardProject = void 0;
|
|
9
|
+
const client_1 = require("@alwaysmeticulous/client");
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const cli_user_error_1 = require("../../utils/cli-user-error");
|
|
12
|
+
const select_project_1 = require("../../utils/select-project");
|
|
13
|
+
/**
|
|
14
|
+
* Resolves which Meticulous project this onboard run is for.
|
|
15
|
+
*
|
|
16
|
+
* - Interactive OAuth: searchable picker (type to filter, ↑/↓ to select).
|
|
17
|
+
* - `--project` / sole accessible project / project-scoped API token: no prompt.
|
|
18
|
+
* - Non-interactive OAuth with several projects: requires `--project`.
|
|
19
|
+
* - Auth failure: returns null and continues with local git context only.
|
|
20
|
+
*/
|
|
21
|
+
const resolveOnboardProject = async (options) => {
|
|
22
|
+
try {
|
|
23
|
+
const apiToken = await (0, client_1.resolveApiTokenWithOAuth)({
|
|
24
|
+
apiToken: options.apiToken,
|
|
25
|
+
enableOAuthLogin: true,
|
|
26
|
+
});
|
|
27
|
+
const client = await (0, client_1.createClientWithOAuth)({
|
|
28
|
+
apiToken: options.apiToken,
|
|
29
|
+
enableOAuthLogin: true,
|
|
30
|
+
});
|
|
31
|
+
// Project-scoped API tokens already pin a single project.
|
|
32
|
+
if (apiToken && !(0, client_1.isOAuthJwt)(apiToken)) {
|
|
33
|
+
return await (0, client_1.getProject)(client);
|
|
34
|
+
}
|
|
35
|
+
const selectedId = await selectOAuthProjectId({
|
|
36
|
+
client,
|
|
37
|
+
project: options.project,
|
|
38
|
+
});
|
|
39
|
+
if (!selectedId) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return await (0, client_1.getProject)(client, selectedId);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (error instanceof cli_user_error_1.CliUserError) {
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
console.log(chalk_1.default.yellow("Could not resolve a Meticulous project from your login (continuing with local git context only)."));
|
|
49
|
+
console.log(chalk_1.default.dim(error instanceof Error ? ` ${error.message}` : ` ${String(error)}`));
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
exports.resolveOnboardProject = resolveOnboardProject;
|
|
54
|
+
const selectOAuthProjectId = async (options) => {
|
|
55
|
+
const { client, project } = options;
|
|
56
|
+
if (project) {
|
|
57
|
+
const stored = await (0, client_1.setOAuthDefaultProject)(client, project.trim());
|
|
58
|
+
if (!stored.projectId) {
|
|
59
|
+
throw new cli_user_error_1.CliUserError(`Could not resolve project '${project.trim()}'. Pass an organization/name slug or project id.`);
|
|
60
|
+
}
|
|
61
|
+
console.log(chalk_1.default.dim(` Using project: ${(0, select_project_1.formatProjectSlug)(stored)}`));
|
|
62
|
+
return stored.projectId;
|
|
63
|
+
}
|
|
64
|
+
const projects = await (0, select_project_1.fetchAccessibleProjects)(client);
|
|
65
|
+
if (projects.length === 0) {
|
|
66
|
+
throw new cli_user_error_1.CliUserError("No projects are accessible to your account. Ask an organization admin to add you to a project.");
|
|
67
|
+
}
|
|
68
|
+
if (projects.length === 1) {
|
|
69
|
+
const only = projects[0];
|
|
70
|
+
await (0, client_1.setOAuthDefaultProject)(client, only.id);
|
|
71
|
+
console.log(chalk_1.default.dim(` Using project: ${only.organization.name}/${only.name}`));
|
|
72
|
+
return only.id;
|
|
73
|
+
}
|
|
74
|
+
if (!(0, client_1.isInteractiveContext)()) {
|
|
75
|
+
throw new cli_user_error_1.CliUserError("Multiple projects are accessible but none was selected (no interactive terminal). " +
|
|
76
|
+
"Pass `--project organization/name` to choose one.");
|
|
77
|
+
}
|
|
78
|
+
const selected = await promptForOnboardProject(client, projects);
|
|
79
|
+
await (0, client_1.setOAuthDefaultProject)(client, selected.id);
|
|
80
|
+
return selected.id;
|
|
81
|
+
};
|
|
82
|
+
const promptForOnboardProject = async (client, projects) => {
|
|
83
|
+
const existing = await (0, client_1.getOAuthDefaultProject)(client).catch(() => ({
|
|
84
|
+
projectId: null,
|
|
85
|
+
}));
|
|
86
|
+
return (0, select_project_1.promptForProject)(projects, {
|
|
87
|
+
message: "Which Meticulous project are you onboarding?",
|
|
88
|
+
defaultProjectId: existing.projectId,
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=resolve-project.js.map
|
|
92
|
+
//# debugId=f160cb06-1427-52cc-8b70-5fb6d2b32d44
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-project.js","sources":["../../../src/commands/onboard/resolve-project.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"f160cb06-1427-52cc-8b70-5fb6d2b32d44"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves `projectRoot` to its real path. Call once at the start of onboard
|
|
3
|
+
* writes so subsequent checks share the same root.
|
|
4
|
+
*/
|
|
5
|
+
export declare const resolveRealProjectRoot: (projectRoot: string) => string;
|
|
6
|
+
/**
|
|
7
|
+
* Resolves a repo-relative path for writing under `projectRoot`.
|
|
8
|
+
*
|
|
9
|
+
* Rejects absolute paths, `..` escapes, and any existing symlink on the path
|
|
10
|
+
* from the project root to the target (inclusive). That stops a
|
|
11
|
+
* repository-seeded symlink such as `.meticulous-onboard` → `~/.ssh` from
|
|
12
|
+
* redirecting onboard writes outside the repo.
|
|
13
|
+
*/
|
|
14
|
+
export declare const resolveSafeWritePath: (projectRoot: string, relativePath: string) => string;
|
|
15
|
+
export declare const mkdirSafeSync: (projectRoot: string, relativePath: string) => string;
|
|
16
|
+
export declare const writeFileSafeSync: (projectRoot: string, relativePath: string, data: string | NodeJS.ArrayBufferView) => string;
|
|
17
|
+
export declare const copyFileSafeSync: (projectRoot: string, relativePath: string, sourceAbsolutePath: string) => string;
|
|
18
|
+
/**
|
|
19
|
+
* Asserts that `workspaceDir` is the onboard workspace under `projectRoot`
|
|
20
|
+
* (or a realpath-equivalent path inside it), not an escaped location.
|
|
21
|
+
*/
|
|
22
|
+
export declare const assertWorkspaceInsideProject: (projectRoot: string, workspaceDir: string) => string;
|
|
23
|
+
export declare const normalizeRelativeRepoPath: (relativePath: string) => string;
|
|
24
|
+
export declare const isPathInsideRoot: (root: string, candidate: string) => boolean;
|
|
25
|
+
/**
|
|
26
|
+
* True when `absolutePath` is a real (non-symlink) directory whose realpath
|
|
27
|
+
* stays inside the project root. Used by app discovery so a repo-seeded
|
|
28
|
+
* symlink cannot be selected as an onboard target.
|
|
29
|
+
*/
|
|
30
|
+
export declare const isRealDirectoryInsideProject: (projectRoot: string, absolutePath: string) => boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Paths the skills installer may create or write under. We must reject
|
|
33
|
+
* repo-seeded symlinks here *before* handing control to the external
|
|
34
|
+
* installer — validating only `.claude` is not enough.
|
|
35
|
+
*/
|
|
36
|
+
export declare const SKILLS_INSTALL_DIR_ROOTS: readonly [".claude", ".agents", ".cursor"];
|
|
37
|
+
export declare const SKILLS_INSTALL_FILE_TARGETS: readonly ["skills-lock.json"];
|
|
38
|
+
/**
|
|
39
|
+
* Rejects symlinks on every path the skills installer may write through, then
|
|
40
|
+
* creates the destination directory roots as real directories inside the repo.
|
|
41
|
+
* Also walks any pre-existing nested entries under each agent's skills tree —
|
|
42
|
+
* a real `skills` dir with a last-component symlink like
|
|
43
|
+
* `.claude/skills/<name> -> ~/.ssh` would otherwise let the installer write
|
|
44
|
+
* outside the project while the shallow check still passes.
|
|
45
|
+
*/
|
|
46
|
+
export declare const prepareSafeSkillsInstallTargets: (projectRoot: string) => void;
|
|
47
|
+
/**
|
|
48
|
+
* Re-checks skills install destinations after an external installer runs, so a
|
|
49
|
+
* TOCTOU symlink plant during the install cannot go unnoticed — including
|
|
50
|
+
* nested last-component symlinks under each agent's skills tree.
|
|
51
|
+
*/
|
|
52
|
+
export declare const assertSafeSkillsInstallTargets: (projectRoot: string) => void;
|
|
53
|
+
/**
|
|
54
|
+
* Recursively rejects any symlink under `.claude/skills`, `.agents/skills`,
|
|
55
|
+
* and `.cursor/skills`. Matches `resolveSafeWritePath`: any symlink is refused,
|
|
56
|
+
* not only ones that currently resolve outside the repo.
|
|
57
|
+
*/
|
|
58
|
+
export declare const assertNoSymlinksUnderSkillsTrees: (projectRoot: string) => void;
|
|
59
|
+
//# sourceMappingURL=safe-repo-fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-repo-fs.d.ts","sourceRoot":"","sources":["../../../src/commands/onboard/safe-repo-fs.ts"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,eAAO,MAAM,sBAAsB,gBAAiB,MAAM,KAAG,MAW5D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,gBAClB,MAAM,gBACL,MAAM,KACnB,MAmDF,CAAC;AAEF,eAAO,MAAM,aAAa,gBACX,MAAM,gBACL,MAAM,KACnB,MAOF,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBACf,MAAM,gBACL,MAAM,QACd,MAAM,GAAG,MAAM,CAAC,eAAe,KACpC,MAUF,CAAC;AAEF,eAAO,MAAM,gBAAgB,gBACd,MAAM,gBACL,MAAM,sBACA,MAAM,KACzB,MAQF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,gBAC1B,MAAM,gBACL,MAAM,KACnB,MAiBF,CAAC;AAMF,eAAO,MAAM,yBAAyB,iBAAkB,MAAM,KAAG,MAgBhE,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAU,MAAM,aAAa,MAAM,KAAG,OAQlE,CAAC;AAUF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,gBAC1B,MAAM,gBACL,MAAM,KACnB,OAaF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,4CAI3B,CAAC;AAEX,eAAO,MAAM,2BAA2B,+BAAgC,CAAC;AAEzE;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,gBAAiB,MAAM,KAAG,IAYrE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,gBAAiB,MAAM,KAAG,IASpE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,gBAAiB,MAAM,KAAG,IAOtE,CAAC"}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="96da1693-9282-57e0-8720-eb64652df868")}catch(e){}}();
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.assertNoSymlinksUnderSkillsTrees = exports.assertSafeSkillsInstallTargets = exports.prepareSafeSkillsInstallTargets = exports.SKILLS_INSTALL_FILE_TARGETS = exports.SKILLS_INSTALL_DIR_ROOTS = exports.isRealDirectoryInsideProject = exports.isPathInsideRoot = exports.normalizeRelativeRepoPath = exports.assertWorkspaceInsideProject = exports.copyFileSafeSync = exports.writeFileSafeSync = exports.mkdirSafeSync = exports.resolveSafeWritePath = exports.resolveRealProjectRoot = void 0;
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const cli_user_error_1 = require("../../utils/cli-user-error");
|
|
9
|
+
/**
|
|
10
|
+
* Resolves `projectRoot` to its real path. Call once at the start of onboard
|
|
11
|
+
* writes so subsequent checks share the same root.
|
|
12
|
+
*/
|
|
13
|
+
const resolveRealProjectRoot = (projectRoot) => {
|
|
14
|
+
const absolute = (0, path_1.resolve)(projectRoot);
|
|
15
|
+
if (!(0, fs_1.existsSync)(absolute)) {
|
|
16
|
+
throw new cli_user_error_1.CliUserError(`Project root does not exist: ${absolute}`);
|
|
17
|
+
}
|
|
18
|
+
const stat = (0, fs_1.lstatSync)(absolute);
|
|
19
|
+
if (stat.isSymbolicLink()) {
|
|
20
|
+
// Allow the root itself to be reached via a symlink (e.g. worktrees), but
|
|
21
|
+
// still pin writes to the real directory.
|
|
22
|
+
}
|
|
23
|
+
return (0, fs_1.realpathSync)(absolute);
|
|
24
|
+
};
|
|
25
|
+
exports.resolveRealProjectRoot = resolveRealProjectRoot;
|
|
26
|
+
/**
|
|
27
|
+
* Resolves a repo-relative path for writing under `projectRoot`.
|
|
28
|
+
*
|
|
29
|
+
* Rejects absolute paths, `..` escapes, and any existing symlink on the path
|
|
30
|
+
* from the project root to the target (inclusive). That stops a
|
|
31
|
+
* repository-seeded symlink such as `.meticulous-onboard` → `~/.ssh` from
|
|
32
|
+
* redirecting onboard writes outside the repo.
|
|
33
|
+
*/
|
|
34
|
+
const resolveSafeWritePath = (projectRoot, relativePath) => {
|
|
35
|
+
const realRoot = (0, exports.resolveRealProjectRoot)(projectRoot);
|
|
36
|
+
const normalizedRelative = (0, exports.normalizeRelativeRepoPath)(relativePath);
|
|
37
|
+
const parts = normalizedRelative
|
|
38
|
+
.split("/")
|
|
39
|
+
.filter((part) => part.length > 0 && part !== ".");
|
|
40
|
+
let current = realRoot;
|
|
41
|
+
for (let index = 0; index < parts.length; index++) {
|
|
42
|
+
const next = (0, path_1.join)(current, parts[index]);
|
|
43
|
+
const stat = tryLstat(next);
|
|
44
|
+
if (!stat) {
|
|
45
|
+
current = (0, path_1.join)(current, ...parts.slice(index));
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
// Use lstat (not existsSync) so broken symlinks are still rejected.
|
|
49
|
+
if (stat.isSymbolicLink()) {
|
|
50
|
+
const display = parts.slice(0, index + 1).join("/");
|
|
51
|
+
throw new cli_user_error_1.CliUserError(`Refusing to write through symlink at '${display}'. ` +
|
|
52
|
+
`Remove or replace it, then re-run \`meticulous onboard\`.`);
|
|
53
|
+
}
|
|
54
|
+
if (stat.isDirectory()) {
|
|
55
|
+
current = (0, fs_1.realpathSync)(next);
|
|
56
|
+
if (!(0, exports.isPathInsideRoot)(realRoot, current)) {
|
|
57
|
+
throw new cli_user_error_1.CliUserError(`Refusing to write outside the project root via '${parts.slice(0, index + 1).join("/")}'.`);
|
|
58
|
+
}
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
// Existing non-directory leaf (regular file, etc.): must be the final part.
|
|
62
|
+
if (index !== parts.length - 1) {
|
|
63
|
+
throw new cli_user_error_1.CliUserError(`Refusing to write under non-directory path '${parts.slice(0, index + 1).join("/")}'.`);
|
|
64
|
+
}
|
|
65
|
+
current = next;
|
|
66
|
+
}
|
|
67
|
+
if (!(0, exports.isPathInsideRoot)(realRoot, current)) {
|
|
68
|
+
throw new cli_user_error_1.CliUserError(`Refusing to write outside the project root: ${relativePath}`);
|
|
69
|
+
}
|
|
70
|
+
return current;
|
|
71
|
+
};
|
|
72
|
+
exports.resolveSafeWritePath = resolveSafeWritePath;
|
|
73
|
+
const mkdirSafeSync = (projectRoot, relativePath) => {
|
|
74
|
+
const absolute = (0, exports.resolveSafeWritePath)(projectRoot, relativePath);
|
|
75
|
+
(0, fs_1.mkdirSync)(absolute, { recursive: true });
|
|
76
|
+
// Re-check after create: a race could theoretically replace a component, but
|
|
77
|
+
// more importantly ensure we didn't land on a symlink somehow.
|
|
78
|
+
assertNoSymlinkAt(projectRoot, relativePath);
|
|
79
|
+
return absolute;
|
|
80
|
+
};
|
|
81
|
+
exports.mkdirSafeSync = mkdirSafeSync;
|
|
82
|
+
const writeFileSafeSync = (projectRoot, relativePath, data) => {
|
|
83
|
+
(0, exports.resolveSafeWritePath)(projectRoot, relativePath);
|
|
84
|
+
const parentRelative = (0, path_1.dirname)((0, exports.normalizeRelativeRepoPath)(relativePath));
|
|
85
|
+
if (parentRelative !== "." && parentRelative !== "") {
|
|
86
|
+
(0, exports.mkdirSafeSync)(projectRoot, parentRelative);
|
|
87
|
+
}
|
|
88
|
+
// Re-resolve after parents exist so a symlink planted on a parent is caught.
|
|
89
|
+
const target = (0, exports.resolveSafeWritePath)(projectRoot, relativePath);
|
|
90
|
+
(0, fs_1.writeFileSync)(target, data);
|
|
91
|
+
return target;
|
|
92
|
+
};
|
|
93
|
+
exports.writeFileSafeSync = writeFileSafeSync;
|
|
94
|
+
const copyFileSafeSync = (projectRoot, relativePath, sourceAbsolutePath) => {
|
|
95
|
+
const parentRelative = (0, path_1.dirname)((0, exports.normalizeRelativeRepoPath)(relativePath));
|
|
96
|
+
if (parentRelative !== "." && parentRelative !== "") {
|
|
97
|
+
(0, exports.mkdirSafeSync)(projectRoot, parentRelative);
|
|
98
|
+
}
|
|
99
|
+
const target = (0, exports.resolveSafeWritePath)(projectRoot, relativePath);
|
|
100
|
+
(0, fs_1.copyFileSync)(sourceAbsolutePath, target);
|
|
101
|
+
return target;
|
|
102
|
+
};
|
|
103
|
+
exports.copyFileSafeSync = copyFileSafeSync;
|
|
104
|
+
/**
|
|
105
|
+
* Asserts that `workspaceDir` is the onboard workspace under `projectRoot`
|
|
106
|
+
* (or a realpath-equivalent path inside it), not an escaped location.
|
|
107
|
+
*/
|
|
108
|
+
const assertWorkspaceInsideProject = (projectRoot, workspaceDir) => {
|
|
109
|
+
const realRoot = (0, exports.resolveRealProjectRoot)(projectRoot);
|
|
110
|
+
if (!(0, fs_1.existsSync)(workspaceDir)) {
|
|
111
|
+
throw new cli_user_error_1.CliUserError(`Onboard workspace does not exist: ${workspaceDir}`);
|
|
112
|
+
}
|
|
113
|
+
if ((0, fs_1.lstatSync)(workspaceDir).isSymbolicLink()) {
|
|
114
|
+
throw new cli_user_error_1.CliUserError(`Refusing to use symlink onboard workspace at '${workspaceDir}'.`);
|
|
115
|
+
}
|
|
116
|
+
const realWorkspace = (0, fs_1.realpathSync)(workspaceDir);
|
|
117
|
+
if (!(0, exports.isPathInsideRoot)(realRoot, realWorkspace)) {
|
|
118
|
+
throw new cli_user_error_1.CliUserError(`Onboard workspace escapes the project root: ${workspaceDir}`);
|
|
119
|
+
}
|
|
120
|
+
return realWorkspace;
|
|
121
|
+
};
|
|
122
|
+
exports.assertWorkspaceInsideProject = assertWorkspaceInsideProject;
|
|
123
|
+
const assertNoSymlinkAt = (projectRoot, relativePath) => {
|
|
124
|
+
(0, exports.resolveSafeWritePath)(projectRoot, relativePath);
|
|
125
|
+
};
|
|
126
|
+
const normalizeRelativeRepoPath = (relativePath) => {
|
|
127
|
+
if (relativePath.length === 0 || relativePath === ".") {
|
|
128
|
+
throw new cli_user_error_1.CliUserError("Refusing empty write path under the project root.");
|
|
129
|
+
}
|
|
130
|
+
if ((0, path_1.isAbsolute)(relativePath)) {
|
|
131
|
+
throw new cli_user_error_1.CliUserError(`Refusing absolute write path: ${relativePath}`);
|
|
132
|
+
}
|
|
133
|
+
const normalized = (0, path_1.normalize)(relativePath).replace(/\\/g, "/");
|
|
134
|
+
if (normalized === ".." ||
|
|
135
|
+
normalized.startsWith("../") ||
|
|
136
|
+
normalized.split("/").includes("..")) {
|
|
137
|
+
throw new cli_user_error_1.CliUserError(`Refusing path escape: ${relativePath}`);
|
|
138
|
+
}
|
|
139
|
+
return normalized.replace(/^\.\//u, "");
|
|
140
|
+
};
|
|
141
|
+
exports.normalizeRelativeRepoPath = normalizeRelativeRepoPath;
|
|
142
|
+
const isPathInsideRoot = (root, candidate) => {
|
|
143
|
+
const relativeToRoot = (0, path_1.relative)(root, candidate);
|
|
144
|
+
return (relativeToRoot === "" ||
|
|
145
|
+
(!relativeToRoot.startsWith(`..${path_1.sep}`) &&
|
|
146
|
+
relativeToRoot !== ".." &&
|
|
147
|
+
!(0, path_1.isAbsolute)(relativeToRoot)));
|
|
148
|
+
};
|
|
149
|
+
exports.isPathInsideRoot = isPathInsideRoot;
|
|
150
|
+
const tryLstat = (path) => {
|
|
151
|
+
try {
|
|
152
|
+
return (0, fs_1.lstatSync)(path);
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* True when `absolutePath` is a real (non-symlink) directory whose realpath
|
|
160
|
+
* stays inside the project root. Used by app discovery so a repo-seeded
|
|
161
|
+
* symlink cannot be selected as an onboard target.
|
|
162
|
+
*/
|
|
163
|
+
const isRealDirectoryInsideProject = (projectRoot, absolutePath) => {
|
|
164
|
+
const realRoot = (0, exports.resolveRealProjectRoot)(projectRoot);
|
|
165
|
+
const stat = tryLstat(absolutePath);
|
|
166
|
+
if (!stat || stat.isSymbolicLink() || !stat.isDirectory()) {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
let realCandidate;
|
|
170
|
+
try {
|
|
171
|
+
realCandidate = (0, fs_1.realpathSync)(absolutePath);
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
return (0, exports.isPathInsideRoot)(realRoot, realCandidate);
|
|
177
|
+
};
|
|
178
|
+
exports.isRealDirectoryInsideProject = isRealDirectoryInsideProject;
|
|
179
|
+
/**
|
|
180
|
+
* Paths the skills installer may create or write under. We must reject
|
|
181
|
+
* repo-seeded symlinks here *before* handing control to the external
|
|
182
|
+
* installer — validating only `.claude` is not enough.
|
|
183
|
+
*/
|
|
184
|
+
exports.SKILLS_INSTALL_DIR_ROOTS = [
|
|
185
|
+
".claude",
|
|
186
|
+
".agents",
|
|
187
|
+
".cursor",
|
|
188
|
+
];
|
|
189
|
+
exports.SKILLS_INSTALL_FILE_TARGETS = ["skills-lock.json"];
|
|
190
|
+
/**
|
|
191
|
+
* Rejects symlinks on every path the skills installer may write through, then
|
|
192
|
+
* creates the destination directory roots as real directories inside the repo.
|
|
193
|
+
* Also walks any pre-existing nested entries under each agent's skills tree —
|
|
194
|
+
* a real `skills` dir with a last-component symlink like
|
|
195
|
+
* `.claude/skills/<name> -> ~/.ssh` would otherwise let the installer write
|
|
196
|
+
* outside the project while the shallow check still passes.
|
|
197
|
+
*/
|
|
198
|
+
const prepareSafeSkillsInstallTargets = (projectRoot) => {
|
|
199
|
+
for (const file of exports.SKILLS_INSTALL_FILE_TARGETS) {
|
|
200
|
+
// Throws if the path (or any parent component) is a symlink.
|
|
201
|
+
(0, exports.resolveSafeWritePath)(projectRoot, file);
|
|
202
|
+
}
|
|
203
|
+
for (const dir of exports.SKILLS_INSTALL_DIR_ROOTS) {
|
|
204
|
+
(0, exports.mkdirSafeSync)(projectRoot, dir);
|
|
205
|
+
(0, exports.mkdirSafeSync)(projectRoot, (0, path_1.join)(dir, "skills"));
|
|
206
|
+
}
|
|
207
|
+
(0, exports.assertNoSymlinksUnderSkillsTrees)(projectRoot);
|
|
208
|
+
};
|
|
209
|
+
exports.prepareSafeSkillsInstallTargets = prepareSafeSkillsInstallTargets;
|
|
210
|
+
/**
|
|
211
|
+
* Re-checks skills install destinations after an external installer runs, so a
|
|
212
|
+
* TOCTOU symlink plant during the install cannot go unnoticed — including
|
|
213
|
+
* nested last-component symlinks under each agent's skills tree.
|
|
214
|
+
*/
|
|
215
|
+
const assertSafeSkillsInstallTargets = (projectRoot) => {
|
|
216
|
+
for (const file of exports.SKILLS_INSTALL_FILE_TARGETS) {
|
|
217
|
+
(0, exports.resolveSafeWritePath)(projectRoot, file);
|
|
218
|
+
}
|
|
219
|
+
for (const dir of exports.SKILLS_INSTALL_DIR_ROOTS) {
|
|
220
|
+
(0, exports.resolveSafeWritePath)(projectRoot, dir);
|
|
221
|
+
(0, exports.resolveSafeWritePath)(projectRoot, (0, path_1.join)(dir, "skills"));
|
|
222
|
+
}
|
|
223
|
+
(0, exports.assertNoSymlinksUnderSkillsTrees)(projectRoot);
|
|
224
|
+
};
|
|
225
|
+
exports.assertSafeSkillsInstallTargets = assertSafeSkillsInstallTargets;
|
|
226
|
+
/**
|
|
227
|
+
* Recursively rejects any symlink under `.claude/skills`, `.agents/skills`,
|
|
228
|
+
* and `.cursor/skills`. Matches `resolveSafeWritePath`: any symlink is refused,
|
|
229
|
+
* not only ones that currently resolve outside the repo.
|
|
230
|
+
*/
|
|
231
|
+
const assertNoSymlinksUnderSkillsTrees = (projectRoot) => {
|
|
232
|
+
const realRoot = (0, exports.resolveRealProjectRoot)(projectRoot);
|
|
233
|
+
for (const dir of exports.SKILLS_INSTALL_DIR_ROOTS) {
|
|
234
|
+
const relativeSkills = (0, path_1.join)(dir, "skills").replace(/\\/g, "/");
|
|
235
|
+
const absoluteSkills = (0, path_1.join)(realRoot, dir, "skills");
|
|
236
|
+
assertNoSymlinksUnderDirectory(absoluteSkills, relativeSkills);
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
exports.assertNoSymlinksUnderSkillsTrees = assertNoSymlinksUnderSkillsTrees;
|
|
240
|
+
const assertNoSymlinksUnderDirectory = (absoluteDir, relativeDisplay) => {
|
|
241
|
+
const dirStat = tryLstat(absoluteDir);
|
|
242
|
+
if (!dirStat) {
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
if (dirStat.isSymbolicLink()) {
|
|
246
|
+
throw new cli_user_error_1.CliUserError(`Refusing to write through symlink at '${relativeDisplay}'. ` +
|
|
247
|
+
`Remove or replace it, then re-run \`meticulous onboard\`.`);
|
|
248
|
+
}
|
|
249
|
+
if (!dirStat.isDirectory()) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
for (const entry of (0, fs_1.readdirSync)(absoluteDir, { withFileTypes: true })) {
|
|
253
|
+
const childRelative = `${relativeDisplay}/${entry.name}`;
|
|
254
|
+
// Check symlink before isDirectory(): a symlink-to-dir can report as both
|
|
255
|
+
// depending on platform / Node version.
|
|
256
|
+
if (entry.isSymbolicLink()) {
|
|
257
|
+
throw new cli_user_error_1.CliUserError(`Refusing to write through symlink at '${childRelative}'. ` +
|
|
258
|
+
`Remove or replace it, then re-run \`meticulous onboard\`.`);
|
|
259
|
+
}
|
|
260
|
+
if (entry.isDirectory()) {
|
|
261
|
+
assertNoSymlinksUnderDirectory((0, path_1.join)(absoluteDir, entry.name), childRelative);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
//# sourceMappingURL=safe-repo-fs.js.map
|
|
266
|
+
//# debugId=96da1693-9282-57e0-8720-eb64652df868
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-repo-fs.js","sources":["../../../src/commands/onboard/safe-repo-fs.ts"],"sourceRoot":"","names":[],"mappings":"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","debugId":"96da1693-9282-57e0-8720-eb64652df868"}
|