Repository navigation
Sync tooling with the monorepo starter and update dependencies - #23
Conversation
- Replace per-package ESLint with root oxlint (type-aware), add turbo, knip, gitleaks secrets scan and CodeQL; move CI setup action to tooling/github - Move to pnpm 12 with a version catalog, release-age and trust policies; Node 24.21.0, TypeScript 7, vitest 5, @types/node 24 - Bump openai 7, workers-types 5, @hono/zod-validator 0.9, wrangler, hono, zod, drizzle, playwright, tsx; keep esbuild/undici security overrides Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Add the `~/` alias to apps and colocate __tests__ files with sources - Handle noUncheckedIndexedAccess without non-null assertions - Split files over the 400-line limit (openai, schedule, large test files) - Remove conditional expects, group exports, drop unused exports Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ules Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
🔵 Needs a closer look
It combines major runtime dependency upgrades with repository-wide compiler, linting, package-manager, security, and deployment workflow changes.
0 open findings
What changed in this PR
Aligns the monorepo with the starter’s modern tooling, dependency, CI, and TypeScript standards while adapting application code to stricter checks.
Changes:
- Replaces workspace ESLint with root type-aware oxlint, Turborepo, Knip, import sorting, and stricter TypeScript.
- Upgrades Node, pnpm, major dependencies, and centralizes shared versions in the pnpm catalog.
- Adds gitleaks and CodeQL CI checks and refactors application code/tests for new conventions.
| File | Description |
|---|---|
turbo.json |
Defines monorepo tasks. |
tooling/typescript/react.json |
Targets ES2024 for React. |
tooling/typescript/package.json |
Removes obsolete formatting script. |
tooling/typescript/node.json |
Adds Node TypeScript preset. |
tooling/typescript/base.json |
Strengthens shared TypeScript settings. |
tooling/prettier/prettier.config.ts |
Adds deterministic import sorting. |
tooling/prettier/package.json |
Catalogs dependencies and adds tasks. |
tooling/github/setup/action.yml |
Updates shared CI setup actions. |
tooling/github/scripts/secrets-scan.sh |
Adds pinned gitleaks scanning. |
tooling/github/package.json |
Registers GitHub tooling workspace. |
tooling/eslint/tsconfig.json |
Removes ESLint tooling config. |
tooling/eslint/react.ts |
Removes shared React ESLint rules. |
tooling/eslint/package.json |
Removes ESLint workspace manifest. |
tooling/eslint/base.ts |
Removes shared base ESLint rules. |
README.md |
Documents current structure and commands. |
pnpm-workspace.yaml |
Adds catalog and supply-chain policies. |
packages/url-validator/vitest.config.ts |
Removes obsolete ESLint directive. |
packages/url-validator/src/url-validator.test.ts |
Adapts test style. |
packages/url-validator/package.json |
Migrates package tooling. |
packages/url-validator/eslint.config.ts |
Removes package ESLint config. |
packages/telegram/vitest.config.ts |
Removes obsolete ESLint directive. |
packages/telegram/src/types.ts |
Consolidates type exports. |
packages/telegram/src/telegram.test.ts |
Sorts test imports. |
packages/telegram/package.json |
Migrates dependencies and tooling. |
packages/telegram/eslint.config.ts |
Removes package ESLint config. |
packages/logger/vitest.config.ts |
Removes obsolete ESLint directive. |
packages/logger/src/types.ts |
Consolidates logger type exports. |
packages/logger/src/logger.ts |
Simplifies helper implementation. |
packages/logger/src/logger.test.ts |
Colocates imports and tightens indexing. |
packages/logger/package.json |
Migrates package tooling. |
packages/logger/eslint.config.ts |
Removes package ESLint config. |
packages/http-client/vitest.config.ts |
Removes obsolete ESLint directive. |
packages/http-client/src/http-client.ts |
Removes redundant type assertion. |
packages/http-client/src/http-client.test.ts |
Modernizes rejection assertions. |
packages/http-client/package.json |
Migrates dependencies and tooling. |
packages/http-client/eslint.config.ts |
Removes package ESLint config. |
packages/alpha-vantage/vitest.config.ts |
Removes obsolete ESLint directive. |
packages/alpha-vantage/src/types.ts |
Adds explicit metadata guards. |
packages/alpha-vantage/src/alpha-vantage.test.ts |
Adapts tests to strict indexing. |
packages/alpha-vantage/package.json |
Migrates dependencies and tooling. |
packages/alpha-vantage/eslint.config.ts |
Removes package ESLint config. |
package.json |
Adds root tooling and upgraded runtime requirements. |
knip.jsonc |
Configures unused-code analysis. |
docs/plan.md |
Updates tooling structure documentation. |
apps/operator/vitest.config.ts |
Configures alias-aware tests. |
apps/operator/tsconfig.json |
Adds the application import alias. |
apps/operator/src/utils/message.test.ts |
Modernizes assertions. |
apps/operator/src/utils/markdown-to-html.ts |
Adapts conversion logic to strict rules. |
apps/operator/src/utils/markdown-to-html.test.ts |
Simplifies test helpers. |
apps/operator/src/utils/keywords.ts |
Removes unsafe indexed access. |
apps/operator/src/utils/keywords.test.ts |
Modernizes assertions and strings. |
apps/operator/src/types/telegram.ts |
Removes unused schema/type exports. |
apps/operator/src/types/env.ts |
Removes unused environment parser. |
apps/operator/src/services/scrape.ts |
Narrows exports and modernizes replacements. |
apps/operator/src/services/scrape.test.ts |
Refactors scrape tests and guards. |
apps/operator/src/services/scrape-convert.test.ts |
Splits conversion tests into a focused file. |
apps/operator/src/services/schedule.ts |
Extracts scheduling logic and adds guards. |
apps/operator/src/services/schedule.test.ts |
Updates imports and strict assertions. |
apps/operator/src/services/schedule-time.ts |
Houses scheduling-time calculations. |
apps/operator/src/services/pending-conversation.ts |
Adds safe row extraction and narrows exports. |
apps/operator/src/services/pending-action.ts |
Adds safe row extraction and narrows exports. |
apps/operator/src/services/openai.ts |
Splits prompts/tools and adds response guards. |
apps/operator/src/services/openai.test.ts |
Moves tool-loop coverage out. |
apps/operator/src/services/openai-tools.ts |
Houses OpenAI tool definitions. |
apps/operator/src/services/openai-tool-loop.test.ts |
Adds focused tool-loop tests. |
apps/operator/src/services/openai-prompts.ts |
Houses OpenAI prompts. |
apps/operator/src/scheduled.ts |
Adds explicit guards and narrows exports. |
apps/operator/src/modules/telegram/ui.ts |
Migrates imports to the application alias. |
apps/operator/src/modules/telegram/routes.ts |
Updates middleware flow and alias imports. |
apps/operator/src/modules/telegram/routes-test-helpers.ts |
Centralizes route test setup. |
apps/operator/src/modules/telegram/routes-question-callback.test.ts |
Splits question callback coverage. |
apps/operator/src/modules/telegram/routes-message.test.ts |
Splits message route coverage. |
apps/operator/src/modules/telegram/routes-callback.test.ts |
Splits callback route coverage. |
apps/operator/src/modules/telegram/conversation-runner.ts |
Migrates imports and safe iteration. |
apps/operator/src/modules/telegram/controller.ts |
Adds row/index guards and alias imports. |
apps/operator/src/modules/telegram/callback-data.ts |
Makes empty-data handling explicit. |
apps/operator/src/modules/health/routes.ts |
Migrates to alias imports. |
apps/operator/src/modules/health/controller.ts |
Simplifies health handler. |
apps/operator/src/middleware/telegram-ip.ts |
Adds strict CIDR parsing guards. |
apps/operator/src/middleware/telegram-ip.test.ts |
Updates test imports and guards. |
apps/operator/src/middleware/logger.ts |
Migrates to alias imports. |
apps/operator/src/middleware/logger.test.ts |
Updates imports and indexed access. |
apps/operator/src/middleware/error-handlers.ts |
Consolidates handler exports. |
apps/operator/src/middleware/env.ts |
Returns middleware continuation directly. |
apps/operator/src/middleware/cors.test.ts |
Colocates test import. |
apps/operator/scripts/set-webhook.ts |
Tightens validation and async execution. |
apps/operator/README.md |
Documents repo-wide oxlint. |
apps/operator/package.json |
Upgrades runtime dependencies and tooling. |
apps/operator/eslint.config.ts |
Removes application ESLint config. |
apps/operator/drizzle.config.ts |
Removes obsolete ESLint directive. |
apps/browser-scraper/vitest.config.ts |
Configures alias-aware tests. |
apps/browser-scraper/tsconfig.json |
Adds the application import alias. |
apps/browser-scraper/src/services/playwright.ts |
Removes unused exports. |
apps/browser-scraper/src/services/playwright.test.ts |
Strengthens result narrowing. |
apps/browser-scraper/package.json |
Upgrades dependencies and tooling. |
apps/browser-scraper/eslint.config.ts |
Removes application ESLint config. |
apps/alerts/vitest.config.ts |
Configures alias-aware tests. |
apps/alerts/tsconfig.json |
Adds the application import alias. |
apps/alerts/src/types/env.ts |
Simplifies parsing and narrows exports. |
apps/alerts/src/scheduled.ts |
Adds safe indexing and simplifies handler creation. |
apps/alerts/src/scheduled.test.ts |
Normalizes numeric literals. |
apps/alerts/src/alerts/types.ts |
Migrates import and narrows exports. |
apps/alerts/src/alerts/sp500.ts |
Removes unused type export. |
apps/alerts/src/alerts/sp500-drawdown.ts |
Adds explicit bar and level guards. |
apps/alerts/src/alerts/sp500-drawdown.test.ts |
Simplifies test data construction. |
apps/alerts/src/alerts/sp500-close.ts |
Adds safe latest-bar extraction. |
apps/alerts/src/alerts/sp500-close.test.ts |
Simplifies test data construction. |
apps/alerts/package.json |
Migrates dependencies and tooling. |
apps/alerts/eslint.config.ts |
Removes application ESLint config. |
AGENTS.md |
Documents the new architecture and workflows. |
.vscode/settings.json |
Enables oxlint and format-on-save. |
.vscode/extensions.json |
Recommends development extensions. |
.prettierignore |
Excludes generated output and caches. |
.oxlintrc.json |
Defines repository-wide lint rules. |
.nvmrc |
Updates the required Node version. |
.gitignore |
Expands generated and sensitive-file ignores. |
.github/workflows/migrations.yml |
Updates actions and shared setup path. |
.github/workflows/main.yml |
Adds Knip, gitleaks, and CodeQL jobs. |
.github/workflows/feature.yml |
Adds PR Knip, gitleaks, and CodeQL jobs. |
.claude/settings.json |
Updates agent command permissions. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
What
agentic-monorepo-starter: root oxlint (type-aware) replaces per-package ESLint; adds Turborepo, Knip, gitleakssecrets:scanand CodeQL to CI; CI setup action moves totooling/githubminimumReleaseAgeandtrustPolicy: no-downgrade; Node 24.21.0, TypeScript 7, vitest 5; tsconfig addsnoUncheckedIndexedAccess~/import alias in apps, colocated tests, explicit null/index guards, files over 400 lines split, unused exports removedHow to test
Notes
Security review
Supply-chain hardening (release-age, trust policy, gitleaks, CodeQL); no runtime auth/data-handling changes.
🤖 Generated with Claude Code