| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(logs): add an actor to operations (NAN-6592) (#7184) Closes [NAN-6592](https://linear.app/nango/issue/NAN-6592/add-actor-to-action-and-proxy-operations). Adds an indexed `actor` on operations so we can tell who triggered one, a dashboard user or an agent session. ```ts actor: { kind: 'user'; id: number } | { kind: 'session'; id: string } ``` This replaces `userId`, which nothing set and nothing read. Thanks @TBonnin and @marcindobry for the shape. Nothing stamps it yet. | 26 天前 | |
feat(agent-sessions): log a tool search operation (NAN-6605) (#7509) NAN-6605 Adds an agent_session:tool_search operation so every nango_tool_search call lands in the logs with the session id, the query and the tool names returned. | 2 天前 | |
feat(logs): add a log retention env var (#7045) ## Describe the problem and your solution - Adds `NANGO_LOGS_ES_RETENTION_DAYS` (default 15) so log retention is configurable instead of hardcoded to 15 days, wired into both the Elasticsearch ILM policies and the OpenSearch ISM policies. - Fixes OpenSearch ISM policy updates so a changed retention value actually applies on redeploy: `PUT` now first `GETs` the policy's `seq_no/primary_term` and includes them on update, since OpenSearch (unlike Elasticsearch's plain-upsert ILM PUT) requires versioned updates or it 409s and silently no-ops. ([OpenSearch ISM API docs](https://docs.opensearch.org/latest/im-plugin/ism/api/), [Elasticsearch ILM PUT docs](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-ilm-put-lifecycle)) <!-- Issue ticket number and link (if applicable) --> <!-- Testing instructions (skip if just adding/editing providers) --> <!-- This is an auto-generated description by cubic. --> <a href="https://cubic.dev/pr/NangoHQ/nango/pull/7045?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a> <!-- End of auto-generated description by cubic. --> | 1 个月前 | |
fix(logs): upgrade otel packages (#7046) <!-- Describe the problem and your solution --> <!-- Issue ticket number and link (if applicable) --> <!-- Testing instructions (skip if just adding/editing providers) --> <!-- This is an auto-generated description by cubic. --> <a href="https://cubic.dev/pr/NangoHQ/nango/pull/7046?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a> <!-- End of auto-generated description by cubic. --> | 1 个月前 | |
feat(logs): add an actor to operations (NAN-6592) (#7184) Closes [NAN-6592](https://linear.app/nango/issue/NAN-6592/add-actor-to-action-and-proxy-operations). Adds an indexed `actor` on operations so we can tell who triggered one, a dashboard user or an agent session. ```ts actor: { kind: 'user'; id: number } | { kind: 'session'; id: string } ``` This replaces `userId`, which nothing set and nothing read. Thanks @TBonnin and @marcindobry for the shape. Nothing stamps it yet. | 26 天前 | |
feat(mcp): add logs get operation tool (#6661) Summary: - Add `logs_get_operation` control-plane MCP tool. Stacked PR 3/3. Previous: https://github.com/NangoHQ/nango/pull/6660 | 2 个月前 | |
chore(lint): move import sorting to Prettier (#6582) ## Problem We're replacing ESLint with oxlint (NAN-5769). oxlint has no `import/order` equivalent — its maintainers deliberately defer import sorting to the formatter — so import ordering needs a new home before the linter swap. ## Solution Move import ordering to Prettier via `@ianvs/prettier-plugin-sort-imports`, configured to replicate the existing `import/order` grouping exactly: builtins → external → `@nangohq/*` → `@/*` + relative → type imports, blank lines between groups, alphabetised within. The `import/order` rule (and its now-pointless migrations override) is removed from the ESLint config. Doing this first — while ESLint still runs — means the change is verifiable in isolation: format-on-save behaviour is identical for developers, and CI's existing `prettier --check` + ESLint both still gate it. Two commits: - `chore(lint): move import sorting to Prettier` — the plugin + config (this is the one to actually review) - `style: sort imports across the codebase` — the mechanical 489-file reformat (skim only; import order changes only, no logic) Part of NAN-5769. Sub-issue: NAN-5808. ## Testing - `eslint . --quiet` passes clean (exit 0) on the reformatted code - Reformat is purely mechanical — only import grouping/order changed - Spot-checked plugin output against the old `import/order` grouping; identical | 2 个月前 | |
feat(logs): add OpenSearch backend selectable via NANGO_LOGS_PROVIDER (#5873) Wire @opensearch-project/opensearch client, ISM policies, shared mappings, and isLogsNotFoundError for API handlers. Made-with: Cursor <!-- Describe the problem and your solution --> <!-- Issue ticket number and link (if applicable) --> <!-- Testing instructions (skip if just adding/editing providers) --> | 3 个月前 | |
chore: clean logs (#4812) Removing the Nango logs and request middleware will get rid of 90% of the logs. Nango logs can be found in ES or the dashboard and info about requests is covered by the ddtrace express plugin I'll do some more cleanup but that's a good start <!-- Summary by @propel-code-bot --> --- **Remove Request Logging Middleware and Streamline Server Log Output** This PR significantly reduces logging noise across the codebase by removing the generic `requestLoggerMiddleware` from all service entry points and deleting its implementation. Logging for Nango logs is now disabled on the console by default (`logToConsole` set to `false`), and various non-essential or redundant logging statements are removed from billing, metering, and records processing modules. Log output formatting is also simplified for cloud/enterprise environments, and all references plus exports related to the removed middleware are cleaned up. Diagnostic coverage for requests is maintained through existing Datadog dd-trace instrumentation and log aggregation. <details> <summary><strong>Key Changes</strong></summary> • Deleted `requestLoggerMiddleware` in `packages/utils/lib/express/requestLoggerMiddleware.ts` and removed imports/usages from `packages/server/lib/server.ts`, `packages/jobs/lib/server.ts`, `packages/orchestrator/lib/server.ts`, and `packages/persist/lib/server.ts`. • Changed Nango log context constructors in `packages/logs/lib/client.ts` so `logToConsole` defaults to `false`. • Removed unnecessary or redundant logging in `packages/billing/lib/billing.ts`, `packages/metering/lib/processors/billing.ts`, `packages/metering/lib/processors/team.ts`, `packages/metering/lib/crons/persistAccountUsage.ts`, and `packages/records/lib/models/records.ts`. • Simplified log formatting for cloud/enterprise in `packages/utils/lib/logger.ts`. • Pruned `requestLoggerMiddleware` export from `packages/utils/lib/index.ts`. </details> <details> <summary><strong>Affected Areas</strong></summary> • `packages/utils/lib/express/requestLoggerMiddleware.ts` • `packages/server/lib/server.ts` • `packages/jobs/lib/server.ts` • `packages/orchestrator/lib/server.ts` • `packages/persist/lib/server.ts` • `packages/logs/lib/client.ts` • `packages/utils/lib/logger.ts` • `packages/records/lib/models/records.ts` • `packages/utils/lib/index.ts` • `packages/billing/lib/billing.ts` • `packages/metering/lib/processors/billing.ts` • `packages/metering/lib/processors/team.ts` • `packages/metering/lib/crons/persistAccountUsage.ts` </details> --- *This summary was automatically generated by @propel-code-bot* | 11 个月前 | |
chore: eslint pass on import order 3 (#4296) ## Changes - Last pass to activate import order rules we were definitely not getting there manually <!-- Summary by @propel-code-bot --> --- This PR performs a comprehensive, automated update to the import statements across the entire codebase to fully enforce ESLint's import/order rules, as well as related import linting conventions. The 'import/order' rule in the ESLint configuration is raised from 'warn' to 'error', and many TypeScript and JavaScript source files are modified to reorder, group, and separate import/type import statements accordingly. No business logic or functional behavior is changed; all modifications are organizational and related to linting compliance. <details> <summary><strong>Key Changes</strong></summary> • Systematic reordering and grouping of import and type import statements in all TypeScript and JavaScript files, aligning with stricter ESLint import/order rules. • ESLint configuration (eslint.config.mjs) updated: 'import/order' set to 'error' and related rules adjusted; minor tuning to linting options for clarity and performance. • No code logic, functionality, or documentation changes introduced-scope is strictly import organization and enforcement of lint rules. </details> <details> <summary><strong>Affected Areas</strong></summary> • All source code files (.ts/.js) across the repository • eslint.config.mjs (ESLint config for import/style rules) </details> *This summary was automatically generated by @propel-code-bot* | 1 年前 | |
feat(connect): stop normalizing endUser (#4564) ## Changes Fixes https://linear.app/nango/issue/NAN-3747/remove-normalization-of-userorg-id > [!NOTE] > This is a proposal. I have struggled more than anticipated, and I'm not satisfied with the current result. But the only other alternatives are even more unsatisfying - Connect: stop normalizing endUser **Before**, we were creating an end user directly when requesting a Connect Session. Most of the time the `endUser` would already be known, ending up just updating some values. So if a connect session end up not being used, there would be very little churn. **After**, if we create an end user directly, we will end up with thousands and thousands of unused rows in the DB. > I have decided not to do it because that would require an immediate need for a new cron to clean up the data. > NB: we do have churn right now, but less intense --- In an ideal world, `endUser` is now just a column in `connections`, there is no reason to have a dedicated table anymore, and it would simplify operations a lot. > I have also decided not to do that, because that would require modifying a lot of code depending/updating/creating connections. --- **So I took an intermediate step:** - Add a column endUser to `connect_sessions`, this allows us to store the future endUser - When we create a connection, we store the `endUser` - When we update a connection, we update the `endUser` <!-- Summary by @propel-code-bot --> --- **Refactor Connect Session: Defer End User Normalization** This PR changes how end-user data is handled in the Connect (OAuth) flow by deferring normalization (database insertion/update) until a connection is actually established or updated, rather than at Connect Session creation. The end-user payload is now stored as a JSON column on the `connect_sessions` table (added via migration), reducing unnecessary database churn and large numbers of unused end user rows. All controller logic, service functions, and TypeScript types related to Connect Sessions and end users have been updated accordingly, and a broad set of test cases and endpoint handlers are refactored to support this new approach. <details> <summary><strong>Key Changes</strong></summary> • Introduced a new ``end_user`` ``JSON`` column to the ``connect_sessions`` table via migration. • Connect Session creation now stores the end user payload as ``JSON``; no end user is created in the database at this stage. • Normalization (creation/update) of the end user occurs only when a connection is created or updated. • Refactored service, controller, and middleware logic to accommodate in-memory payload and defer ``DB`` writes. • Updated all relevant `TypeScript` types and interface contracts for Connect Sessions and end users. • Rewrote/adjusted relevant integration and unit tests to match the new lifecycle. • Refactored downstream flows to propagate new end user format, and updated ``API``: connect/reconnect, patch, `OAuth`, etc. </details> <details> <summary><strong>Affected Areas</strong></summary> • Connect Session and `EndUser` service logic • Database schema (migrations) for `connect_sessions` • Controllers related to all Connect flows (`getSession`, `postSession`, reconnect, `OAuth` flows, etc.) • Type definitions in @nangohq/types (`ConnectSession`, `EndUser`, `InternalEndUser`) • Middleware and Express request/response typings • Integration and unit tests for Connect Sessions and end user handling </details> --- *This summary was automatically generated by @propel-code-bot* | 1 年前 | |
feat(mcp): add logs list operations tool (#6660) Summary: - Add `logs_list_operations` for listing Nango log operations with UI-aligned filters. Stacked PR 2/3. Previous: https://github.com/NangoHQ/nango/pull/6659 Next: https://github.com/NangoHQ/nango/pull/6661 | 2 个月前 | |
chore(lint): move import sorting to Prettier (#6582) ## Problem We're replacing ESLint with oxlint (NAN-5769). oxlint has no `import/order` equivalent — its maintainers deliberately defer import sorting to the formatter — so import ordering needs a new home before the linter swap. ## Solution Move import ordering to Prettier via `@ianvs/prettier-plugin-sort-imports`, configured to replicate the existing `import/order` grouping exactly: builtins → external → `@nangohq/*` → `@/*` + relative → type imports, blank lines between groups, alphabetised within. The `import/order` rule (and its now-pointless migrations override) is removed from the ESLint config. Doing this first — while ESLint still runs — means the change is verifiable in isolation: format-on-save behaviour is identical for developers, and CI's existing `prettier --check` + ESLint both still gate it. Two commits: - `chore(lint): move import sorting to Prettier` — the plugin + config (this is the one to actually review) - `style: sort imports across the codebase` — the mechanical 489-file reformat (skim only; import order changes only, no logic) Part of NAN-5769. Sub-issue: NAN-5808. ## Testing - `eslint . --quiet` passes clean (exit 0) on the reformatted code - Reformat is purely mechanical — only import grouping/order changed - Spot-checked plugin output against the old `import/order` grouping; identical | 2 个月前 | |
feat(mcp): add logs list operations tool (#6660) Summary: - Add `logs_list_operations` for listing Nango log operations with UI-aligned filters. Stacked PR 2/3. Previous: https://github.com/NangoHQ/nango/pull/6659 Next: https://github.com/NangoHQ/nango/pull/6661 | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 26 天前 | ||
| 2 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 26 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 |