vybekiit 0.7.17 → 0.7.18

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.
Files changed (71) hide show
  1. package/dist/global-skills/expo-native-ui/SKILL.md +3 -0
  2. package/dist/global-skills/expo-native-ui/references/controls.md +2 -0
  3. package/dist/global-skills/expo-overview/SKILL.md +110 -0
  4. package/dist/global-skills/expo-overview/agents/openai.yaml +4 -0
  5. package/dist/global-skills/expo-skill-feedback/scripts/telemetry_common.cjs +6 -6
  6. package/dist/global-skills/expo-ui/SKILL.md +52 -6
  7. package/dist/global-skills/expo-ui/references/universal.md +31 -0
  8. package/dist/global-skills/instrument-feature-flags/references/adding-feature-flag-code.md +4 -0
  9. package/dist/global-skills/instrument-feature-flags/references/android.md +4 -0
  10. package/dist/global-skills/instrument-feature-flags/references/api.md +4 -0
  11. package/dist/global-skills/instrument-feature-flags/references/best-practices.md +4 -0
  12. package/dist/global-skills/instrument-feature-flags/references/django.md +4 -0
  13. package/dist/global-skills/instrument-feature-flags/references/dotnet.md +4 -0
  14. package/dist/global-skills/instrument-feature-flags/references/elixir.md +4 -0
  15. package/dist/global-skills/instrument-feature-flags/references/flask.md +4 -0
  16. package/dist/global-skills/instrument-feature-flags/references/flutter.md +4 -0
  17. package/dist/global-skills/instrument-feature-flags/references/go.md +4 -0
  18. package/dist/global-skills/instrument-feature-flags/references/ios.md +4 -0
  19. package/dist/global-skills/instrument-feature-flags/references/java.md +4 -0
  20. package/dist/global-skills/instrument-feature-flags/references/laravel.md +4 -0
  21. package/dist/global-skills/instrument-feature-flags/references/next-js.md +4 -0
  22. package/dist/global-skills/instrument-feature-flags/references/nodejs.md +4 -0
  23. package/dist/global-skills/instrument-feature-flags/references/php.md +4 -0
  24. package/dist/global-skills/instrument-feature-flags/references/python.md +4 -0
  25. package/dist/global-skills/instrument-feature-flags/references/react-native.md +4 -0
  26. package/dist/global-skills/instrument-feature-flags/references/react.md +4 -0
  27. package/dist/global-skills/instrument-feature-flags/references/ruby-on-rails.md +4 -0
  28. package/dist/global-skills/instrument-feature-flags/references/ruby.md +4 -0
  29. package/dist/global-skills/instrument-feature-flags/references/rust.md +4 -0
  30. package/dist/global-skills/instrument-feature-flags/references/usage.md +4 -0
  31. package/dist/global-skills/instrument-feature-flags/references/web.md +4 -0
  32. package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-swift.md +0 -1
  33. package/dist/global-skills/instrument-product-analytics/references/android.md +4 -0
  34. package/dist/global-skills/instrument-product-analytics/references/angular.md +4 -0
  35. package/dist/global-skills/instrument-product-analytics/references/astro.md +4 -0
  36. package/dist/global-skills/instrument-product-analytics/references/configuration.md +4 -0
  37. package/dist/global-skills/instrument-product-analytics/references/django.md +4 -0
  38. package/dist/global-skills/instrument-product-analytics/references/dotnet.md +4 -0
  39. package/dist/global-skills/instrument-product-analytics/references/elixir.md +4 -0
  40. package/dist/global-skills/instrument-product-analytics/references/flask.md +4 -0
  41. package/dist/global-skills/instrument-product-analytics/references/flutter.md +4 -0
  42. package/dist/global-skills/instrument-product-analytics/references/go.md +4 -0
  43. package/dist/global-skills/instrument-product-analytics/references/identify-users.md +4 -0
  44. package/dist/global-skills/instrument-product-analytics/references/ios.md +4 -0
  45. package/dist/global-skills/instrument-product-analytics/references/laravel.md +4 -0
  46. package/dist/global-skills/instrument-product-analytics/references/next-js.md +4 -0
  47. package/dist/global-skills/instrument-product-analytics/references/nuxt-js-3-6.md +4 -0
  48. package/dist/global-skills/instrument-product-analytics/references/nuxt-js.md +4 -0
  49. package/dist/global-skills/instrument-product-analytics/references/php.md +4 -0
  50. package/dist/global-skills/instrument-product-analytics/references/posthog-python.md +52 -5
  51. package/dist/global-skills/instrument-product-analytics/references/python.md +4 -0
  52. package/dist/global-skills/instrument-product-analytics/references/react-native.md +4 -0
  53. package/dist/global-skills/instrument-product-analytics/references/react-router-v6.md +4 -0
  54. package/dist/global-skills/instrument-product-analytics/references/react-router-v7-data-mode.md +4 -0
  55. package/dist/global-skills/instrument-product-analytics/references/react-router-v7-declarative-mode.md +4 -0
  56. package/dist/global-skills/instrument-product-analytics/references/react-router-v7-framework-mode.md +4 -0
  57. package/dist/global-skills/instrument-product-analytics/references/ruby-on-rails.md +4 -0
  58. package/dist/global-skills/instrument-product-analytics/references/ruby.md +4 -0
  59. package/dist/global-skills/instrument-product-analytics/references/svelte.md +4 -0
  60. package/dist/global-skills/instrument-product-analytics/references/tanstack-start.md +4 -0
  61. package/dist/global-skills/instrument-product-analytics/references/usage.md +4 -0
  62. package/dist/global-skills/instrument-product-analytics/references/vue-js.md +4 -0
  63. package/dist/global-skills/manifest.json +2 -1
  64. package/dist/global-skills/neon/SKILL.md +2 -2
  65. package/dist/global-skills/neon-ai-gateway/SKILL.md +13 -13
  66. package/dist/global-skills/neon-functions/SKILL.md +3 -3
  67. package/dist/global-skills/neon-functions/references/ai-sdk.md +1 -1
  68. package/dist/global-skills/neon-object-storage/SKILL.md +1 -1
  69. package/dist/global-skills/resend/SKILL.md +1 -1
  70. package/dist/global-skills/resend/references/automations.md +10 -1
  71. package/package.json +8 -8
@@ -297,6 +297,10 @@ The [`PostHogConfig` object](https://github.com/PostHog/posthog-ios/blob/main/Po
297
297
  | setBeforeSendType: FunctionDefault: undefined | Hook that allows for amending, sampling, or dropping events before they are sent to PostHog. |
298
298
  | bootstrapType: PostHogBootstrapConfigDefault: nil | Seeds identity (distinctId, isIdentifiedId) and feature-flag state (featureFlags, featureFlagPayloads) before the first /flags response. Bootstrapped identity applies to the first session; only enabled flags are served, until the first /flags response replaces them. See [SDK bootstrapping](/docs/libraries/bootstrapping.md#behavior-on-mobile-sdks). |
299
299
 
300
+ ### Still have questions?
301
+
302
+ Ask PostHog AI
303
+
300
304
  ### Was this page useful?
301
305
 
302
306
  HelpfulCould be better
@@ -291,6 +291,10 @@ Everything on this page works the same way on `6.9.3`. Event capture, the contex
291
291
 
292
292
  Later `7.x` releases add what the 6.x line does not receive, such as the Celery integration, tracing header sanitization, and `set_context_device_id`. They also changed the middleware's own captured properties: `7.x` sends the request IP as `$ip`, where `6.9.3` sends it as `$ip_address`, and `7.x` additionally captures `$request_path`, `$raw_user_agent`, and the authenticated user's `email`.
293
293
 
294
+ ### Still have questions?
295
+
296
+ Ask PostHog AI
297
+
294
298
  ### Was this page useful?
295
299
 
296
300
  HelpfulCould be better
@@ -764,6 +764,10 @@ By default, the library buffers events before sending them to the `/batch` endpo
764
764
 
765
765
  To avoid this, call `await posthog.FlushAsync()` after processing every request by adding it as a middleware to your server. This allows `posthog.Capture()` to remain asynchronous for better performance.
766
766
 
767
+ ### Still have questions?
768
+
769
+ Ask PostHog AI
770
+
767
771
  ### Was this page useful?
768
772
 
769
773
  HelpfulCould be better
@@ -411,6 +411,10 @@ PostHog.capture(AnotherPostHog, "user_signed_up", %{distinct_id: "user123"})
411
411
 
412
412
  The library is maintained by the PostHog team since February 2025. Thanks to [nkezhaya](https://github.com/nkezhaya) for contributing v0.1.0. Thanks to [martosaur](https://github.com/martosaur) for contributing v2.0.0.
413
413
 
414
+ ### Still have questions?
415
+
416
+ Ask PostHog AI
417
+
414
418
  ### Was this page useful?
415
419
 
416
420
  HelpfulCould be better
@@ -138,6 +138,10 @@ Everything on this page works the same way on `6.9.3`. Event capture, the contex
138
138
 
139
139
  Later `7.x` releases add what the 6.x line does not receive, such as the Celery integration, tracing header sanitization, and `set_context_device_id`. They also changed the middleware's own captured properties: `7.x` sends the request IP as `$ip`, where `6.9.3` sends it as `$ip_address`, and `7.x` additionally captures `$request_path`, `$raw_user_agent`, and the authenticated user's `email`.
140
140
 
141
+ ### Still have questions?
142
+
143
+ Ask PostHog AI
144
+
141
145
  ### Was this page useful?
142
146
 
143
147
  HelpfulCould be better
@@ -885,6 +885,10 @@ await Posthog().debug(true);
885
885
  await Posthog().debug(false);
886
886
  ```
887
887
 
888
+ ### Still have questions?
889
+
890
+ Ask PostHog AI
891
+
888
892
  ### Was this page useful?
889
893
 
890
894
  HelpfulCould be better
@@ -564,6 +564,10 @@ The `name` is a special property which is used in the PostHog UI for the name of
564
564
 
565
565
  This library is largely based on the `analytics-go` package.
566
566
 
567
+ ### Still have questions?
568
+
569
+ Ask PostHog AI
570
+
567
571
  ### Was this page useful?
568
572
 
569
573
  HelpfulCould be better
@@ -298,6 +298,10 @@ object DeepLinkIdentityManager {
298
298
  - [How person processing works](/docs/how-posthog-works/ingestion-pipeline.md#2-person-processing)
299
299
  - [An introductory guide to identifying users in PostHog](/tutorials/identifying-users-guide.md)
300
300
 
301
+ ### Still have questions?
302
+
303
+ Ask PostHog AI
304
+
301
305
  ### Was this page useful?
302
306
 
303
307
  HelpfulCould be better
@@ -159,6 +159,10 @@ Now that you've installed the SDK, explore the configuration and usage options:
159
159
  - [Learn about using all of the features of PostHog with iOS SDK](/docs/libraries/ios/usage.md)
160
160
  - [Learn about configuration options for the iOS SDK](/docs/libraries/ios/configuration.md)
161
161
 
162
+ ### Still have questions?
163
+
164
+ Ask PostHog AI
165
+
162
166
  ### Was this page useful?
163
167
 
164
168
  HelpfulCould be better
@@ -167,6 +167,10 @@ PostHog::init(
167
167
 
168
168
  See the [PHP SDK docs](/docs/libraries/php.md) for usage examples and the full API reference.
169
169
 
170
+ ### Still have questions?
171
+
172
+ Ask PostHog AI
173
+
170
174
  ### Was this page useful?
171
175
 
172
176
  HelpfulCould be better
@@ -444,6 +444,10 @@ To improve the reliability of client-side tracking and make requests less likely
444
444
  - [How to set up Next.js pages router analytics, feature flags, and more](/tutorials/nextjs-pages-analytics.md)
445
445
  - [How to set up Next.js A/B tests](/tutorials/nextjs-ab-tests.md)
446
446
 
447
+ ### Still have questions?
448
+
449
+ Ask PostHog AI
450
+
447
451
  ### Was this page useful?
448
452
 
449
453
  HelpfulCould be better
@@ -271,6 +271,10 @@ Alternatively, the following tutorials can help you get started:
271
271
  - [How to set up A/B tests in Nuxt](/tutorials/nuxtjs-ab-tests.md)
272
272
  - [How to set up surveys in Nuxt](/tutorials/nuxt-surveys.md)
273
273
 
274
+ ### Still have questions?
275
+
276
+ Ask PostHog AI
277
+
274
278
  ### Was this page useful?
275
279
 
276
280
  HelpfulCould be better
@@ -284,6 +284,10 @@ Alternatively, the following tutorials can help you get started:
284
284
  - [How to set up A/B tests in Nuxt](/tutorials/nuxtjs-ab-tests.md)
285
285
  - [How to set up surveys in Nuxt](/tutorials/nuxt-surveys.md)
286
286
 
287
+ ### Still have questions?
288
+
289
+ Ask PostHog AI
290
+
287
291
  ### Was this page useful?
288
292
 
289
293
  HelpfulCould be better
@@ -643,6 +643,10 @@ PostHog::init(
643
643
 
644
644
  This library is largely based on the `analytics-php` package.
645
645
 
646
+ ### Still have questions?
647
+
648
+ Ask PostHog AI
649
+
646
650
  ### Was this page useful?
647
651
 
648
652
  HelpfulCould be better
@@ -2,7 +2,7 @@
2
2
 
3
3
  # PostHog Python SDK
4
4
 
5
- **SDK Version:** 7.38.4
5
+ **SDK Version:** 7.39.2
6
6
 
7
7
  Integrate PostHog into any python application.
8
8
 
@@ -75,6 +75,7 @@ Initialize a new PostHog client instance.
75
75
  - **`capture_compression`** (`CaptureCompression`) - Request-body compression for capture-v1 uploads (ignored in V0, which uses ``gzip``). ``CaptureCompression.GZIP`` or ``DEFLATE`` (or the strings ``"gzip"``/``"deflate"``). When omitted, the ``POSTHOG_CAPTURE_COMPRESSION`` env var is consulted, then the legacy ``gzip`` flag, then no compression.
76
76
  - **`secret_key`** (`any`) - A Personal API Key or Project Secret API Key, used to authenticate local feature flag evaluation, remote config payloads, and decrypted flag payloads. Example:: posthog.Client(project_api_key, secret_key="phx_...")
77
77
  - **`metrics?`** (`dict`)
78
+ - **`enable_full_ai_capture`** (`bool`) - Route PostHog AI wrapper events through the dedicated AI capture endpoint and capture full AI content: skips string truncation and passes media (base64/data URIs) through unredacted. ``privacy_mode`` always wins. Defaults to False.
78
79
  - **`_use_ai_lane`** (`bool`)
79
80
  - **`_enable_multimodal_capture`** (`bool`)
80
81
 
@@ -104,7 +105,7 @@ Create an alias between two distinct IDs.
104
105
 
105
106
  - **`previous_id?`** (`Number`) - The previous distinct ID. Required - the call is dropped with a warning if it is missing or empty.
106
107
  - **`distinct_id?`** (`str`) - The new distinct ID to alias to. Falls back to the context distinct ID; the call is dropped with a warning if neither is available.
107
- - **`timestamp`** (`datetime`) - The timestamp of the event.
108
+ - **`timestamp`** (`datetime`) - The timestamp of the event. UTC is preferred; non-UTC datetimes and parseable ISO timestamp strings are converted to UTC.
108
109
  - **`uuid?`** (`str`) - A unique identifier for the event. If provided, it must be a valid UUID string or uuid.UUID instance; invalid values are ignored and replaced with a newly generated UUID.
109
110
  - **`disable_geoip?`** (`bool`) - Whether to disable GeoIP for this event.
110
111
 
@@ -131,7 +132,7 @@ Identify a group and set its properties.
131
132
  - **`group_type?`** (`str`) - The type of group (e.g., 'company', 'team'). Required - the call is dropped with a warning if it is missing or empty.
132
133
  - **`group_key?`** (`str`) - The unique identifier for the group. Required - the call is dropped with a warning if it is missing or empty.
133
134
  - **`properties?`** (`dict[str, Any]`) - A dictionary of properties to set on the group.
134
- - **`timestamp`** (`datetime`) - The timestamp of the event.
135
+ - **`timestamp`** (`datetime`) - The timestamp of the event. UTC is preferred; non-UTC datetimes and parseable ISO timestamp strings are converted to UTC.
135
136
  - **`uuid`** (`str`) - A unique identifier for the event. If provided, it must be a valid UUID string or uuid.UUID instance; invalid values are ignored and replaced with a newly generated UUID.
136
137
  - **`disable_geoip?`** (`bool`) - Whether to disable GeoIP for this event.
137
138
  - **`distinct_id`** (`Number`) - The distinct ID of the user performing the action.
@@ -257,6 +258,23 @@ posthog.capture('$pageview', distinct_id="distinct_id_of_the_user", properties={
257
258
 
258
259
  ---
259
260
 
261
+ #### capture_ai()
262
+
263
+ **Release Tag:** public
264
+
265
+ Capture an AI event on the dedicated AI capture endpoint. Beta: the signature is stable; operational limits (per-event size cap, batching, endpoint) may change without notice. Takes the same arguments and returns the same value as `capture()`: the event UUID, or None when the event was not admitted (disabled client, or dropped by `before_send`). The event is queued on an isolated AI lane with its own consumer pool and a higher per-event size cap, posting to the dedicated AI ingestion endpoint. The payload is sent as given — no redaction or truncation is applied here.
266
+
267
+ ### Parameters
268
+
269
+ - **`event?`** (`str`)
270
+ - **`kwargs?`** (`Unpack[OptionalCaptureArgs]`)
271
+
272
+ ### Returns
273
+
274
+ - `Optional[str]`
275
+
276
+ ---
277
+
260
278
  ### Error Tracking methods
261
279
 
262
280
  #### capture_exception()
@@ -873,7 +891,7 @@ To marry up whatever a user does before they sign up or log in with what they do
873
891
 
874
892
  - **`previous_id?`** (`Number`) - The unique ID of the user before
875
893
  - **`distinct_id?`** (`str`) - The current unique id
876
- - **`timestamp?`** (`datetime`) - Optional timestamp for the event
894
+ - **`timestamp`** (`datetime`) - Optional timestamp for the event. UTC is preferred; non-UTC datetimes and parseable ISO timestamp strings are converted to UTC.
877
895
  - **`uuid?`** (`str`) - Optional UUID for the event
878
896
  - **`disable_geoip?`** (`bool`) - Whether to disable GeoIP lookup
879
897
 
@@ -902,7 +920,7 @@ Set properties on a group.
902
920
  - **`group_type?`** (`str`) - Type of your group. Required - the call is dropped with a warning if it is missing or empty.
903
921
  - **`group_key?`** (`str`) - Unique identifier of the group. Required - the call is dropped with a warning if it is missing or empty.
904
922
  - **`properties?`** (`dict[str, Any]`) - Properties to set on the group
905
- - **`timestamp?`** (`datetime`) - Optional timestamp for the event
923
+ - **`timestamp`** (`datetime`) - Optional timestamp for the event. UTC is preferred; non-UTC datetimes and parseable ISO timestamp strings are converted to UTC.
906
924
  - **`uuid?`** (`str`) - Optional UUID for the event
907
925
  - **`disable_geoip?`** (`bool`) - Whether to disable GeoIP lookup
908
926
  - **`distinct_id`** (`Number`) - Optional distinct ID of the user performing the action
@@ -1073,6 +1091,35 @@ capture(
1073
1091
 
1074
1092
  ---
1075
1093
 
1094
+ #### capture_ai()
1095
+
1096
+ **Release Tag:** public
1097
+
1098
+ Capture an AI event on the dedicated AI capture endpoint. Beta: the signature is stable; operational limits (per-event size cap, batching, endpoint) may change without notice. Takes the same arguments and returns the same value as `capture()`: the event UUID, or None when the event was not admitted (disabled client, or dropped by `before_send`). The event is delivered on an isolated queue with its own consumer pool and a higher per-event size cap, posting to the dedicated AI ingestion endpoint. The payload is sent as given — no redaction or truncation is applied here.
1099
+
1100
+ ### Parameters
1101
+
1102
+ - **`event?`** (`str`) - The event name, normally one of the `$ai_*` event names. **kwargs: Same optional arguments as `capture()`.
1103
+ - **`kwargs?`** (`Unpack[OptionalCaptureArgs]`)
1104
+
1105
+ ### Returns
1106
+
1107
+ - `Optional[str]`
1108
+
1109
+ ### Examples
1110
+
1111
+ ```python
1112
+ from posthog import capture_ai
1113
+
1114
+ uuid = capture_ai(
1115
+ "$ai_generation",
1116
+ distinct_id="user_123",
1117
+ properties={"$ai_model": "gpt-5"},
1118
+ )
1119
+ ```
1120
+
1121
+ ---
1122
+
1076
1123
  #### capture_exception()
1077
1124
 
1078
1125
  **Release Tag:** public
@@ -903,6 +903,10 @@ Everything on this page works the same way on `6.9.3`. Event capture, the contex
903
903
 
904
904
  Later `7.x` releases add what the 6.x line does not receive, such as the Celery integration, tracing header sanitization, and `set_context_device_id`. They also changed the middleware's own captured properties: `7.x` sends the request IP as `$ip`, where `6.9.3` sends it as `$ip_address`, and `7.x` additionally captures `$request_path`, `$raw_user_agent`, and the authenticated user's `email`.
905
905
 
906
+ ### Still have questions?
907
+
908
+ Ask PostHog AI
909
+
906
910
  ### Was this page useful?
907
911
 
908
912
  HelpfulCould be better
@@ -1367,6 +1367,10 @@ posthog.setPersonPropertiesForFlags(...) // instead of `personProperties`
1367
1367
  posthog.setGroupPropertiesForFlags(...) // instead of `groupProperties`
1368
1368
  ```
1369
1369
 
1370
+ ### Still have questions?
1371
+
1372
+ Ask PostHog AI
1373
+
1370
1374
  ### Was this page useful?
1371
1375
 
1372
1376
  HelpfulCould be better
@@ -385,6 +385,10 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
385
385
  - [PostHog AI](/docs/posthog-ai.md): After capturing events, use PostHog AI to help you understand your data and build insights.
386
386
  - [Feature flags and experiments](/docs/libraries/react.md#feature-flags): Feature flag and experiment setup is the same as React. You can find more details in the React integration guide.
387
387
 
388
+ ### Still have questions?
389
+
390
+ Ask PostHog AI
391
+
388
392
  ### Was this page useful?
389
393
 
390
394
  HelpfulCould be better
@@ -373,6 +373,10 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
373
373
  - [PostHog AI](/docs/posthog-ai.md): After capturing events, use PostHog AI to help you understand your data and build insights.
374
374
  - [Feature flags and experiments](/docs/libraries/react.md#feature-flags): Feature flag and experiment setup is the same as React. You can find more details in the React integration guide.
375
375
 
376
+ ### Still have questions?
377
+
378
+ Ask PostHog AI
379
+
376
380
  ### Was this page useful?
377
381
 
378
382
  HelpfulCould be better
@@ -385,6 +385,10 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
385
385
  - [PostHog AI](/docs/posthog-ai.md): After capturing events, use PostHog AI to help you understand your data and build insights.
386
386
  - [Feature flags and experiments](/docs/libraries/react.md#feature-flags): Feature flag and experiment setup is the same as React. You can find more details in the React integration guide.
387
387
 
388
+ ### Still have questions?
389
+
390
+ Ask PostHog AI
391
+
388
392
  ### Was this page useful?
389
393
 
390
394
  HelpfulCould be better
@@ -488,6 +488,10 @@ This guide walks you through setting up PostHog for React Router V7 in framework
488
488
  - [PostHog AI](/docs/posthog-ai.md): After capturing events, use PostHog AI to help you understand your data and build insights.
489
489
  - [Feature flags and experiments](/docs/libraries/react.md#feature-flags): Feature flag and experiment setup is the same as React. You can find more details in the React integration guide.
490
490
 
491
+ ### Still have questions?
492
+
493
+ Ask PostHog AI
494
+
491
495
  ### Was this page useful?
492
496
 
493
497
  HelpfulCould be better
@@ -601,6 +601,10 @@ Ensure you've set `personal_api_key` in your configuration.
601
601
 
602
602
  For any technical questions for how to integrate specific PostHog features into Rails (such as analytics, feature flags, A/B testing, etc.), have a look at our [Ruby SDK docs](/docs/libraries/ruby.md).
603
603
 
604
+ ### Still have questions?
605
+
606
+ Ask PostHog AI
607
+
604
608
  ### Was this page useful?
605
609
 
606
610
  HelpfulCould be better
@@ -756,6 +756,10 @@ posthog.clear
756
756
 
757
757
  This library is largely based on the `analytics-ruby` package.
758
758
 
759
+ ### Still have questions?
760
+
761
+ Ask PostHog AI
762
+
759
763
  ### Was this page useful?
760
764
 
761
765
  HelpfulCould be better
@@ -265,6 +265,10 @@ Alternatively, the following tutorials can help you get started:
265
265
  - [How to set up A/B tests in Svelte](/tutorials/svelte-ab-tests.md)
266
266
  - [How to set up surveys in Svelte](/tutorials/svelte-surveys.md)
267
267
 
268
+ ### Still have questions?
269
+
270
+ Ask PostHog AI
271
+
268
272
  ### Was this page useful?
269
273
 
270
274
  HelpfulCould be better
@@ -212,6 +212,10 @@ The server-side `capture` call requires a `distinctId` (the user identifier), an
212
212
 
213
213
  Installing the JS Web SDK and Node SDK means all of their functionality is available in your TanStack Start project. To learn more about this, have a look at our [JS Web SDK docs](/docs/libraries/js/usage.md) and [Node SDK docs](/docs/libraries/node.md).
214
214
 
215
+ ### Still have questions?
216
+
217
+ Ask PostHog AI
218
+
215
219
  ### Was this page useful?
216
220
 
217
221
  HelpfulCould be better
@@ -632,6 +632,10 @@ PostHogSDK.shared.debug(true)
632
632
  PostHogSDK.shared.debug(false)
633
633
  ```
634
634
 
635
+ ### Still have questions?
636
+
637
+ Ask PostHog AI
638
+
635
639
  ### Was this page useful?
636
640
 
637
641
  HelpfulCould be better
@@ -337,6 +337,10 @@ Alternatively, the following tutorials can help you get started:
337
337
  - [How to set up A/B tests in Vue](/tutorials/vue-ab-tests.md)
338
338
  - [How to set up surveys in Vue](/tutorials/vue-surveys.md)
339
339
 
340
+ ### Still have questions?
341
+
342
+ Ask PostHog AI
343
+
340
344
  ### Was this page useful?
341
345
 
342
346
  HelpfulCould be better
@@ -53,6 +53,7 @@
53
53
  "expo-module",
54
54
  "expo-native-ui",
55
55
  "expo-observe",
56
+ "expo-overview",
56
57
  "expo-project-structure",
57
58
  "expo-router",
58
59
  "expo-skill-eval",
@@ -127,5 +128,5 @@
127
128
  "wrangler",
128
129
  "xcode-project-setup"
129
130
  ],
130
- "count": 126
131
+ "count": 127
131
132
  }
@@ -362,7 +362,7 @@ For reading env you _already_ have on disk (typed and validated against your `ne
362
362
 
363
363
  ## Observability
364
364
 
365
- Neon exposes branch-scoped logs. **Today they cover Neon Functions and Object Storage only.** Postgres computes and the AI Gateway are coming; until then, neither emits records. Logs are region-gated like the other beta services above only `us-east-2` is enabled today, and a branch in any other region answers `404` with reason `telemetry_not_enabled` rather than an empty result.
365
+ Neon exposes branch-scoped logs. **Today they cover Neon Functions and Object Storage only.** Postgres computes and the AI Gateway are coming; until then, neither emits records. Logs are region-gated like the other beta services above. Only `us-east-2` is enabled today. A branch that can't serve logs at all answers `404` with `reason: telemetry_not_enabled` (the message says whether it's the wrong region or a branch not collecting telemetry yet), versus a `200` empty result when the branch is enabled but has no records in the window; an unknown branch answers `reason: branch_not_found`.
366
366
 
367
367
  Use Neon CLI 3.1 or newer first. **Decide which branch you are querying.** Without `--branch`, the CLI uses the branch pinned in `.neon`, or the project's default branch when the workspace isn't linked. A deployed function or bucket usually lives on a different branch than the one checked out for development, so an empty result is more often the wrong branch than a missing log.
368
368
 
@@ -374,7 +374,7 @@ neon logs fields
374
374
  neon logs field-values service_name --since 1h
375
375
  ```
376
376
 
377
- `--source` accepts `function`, `storage`, and `pg_endpoint`, but only `function` and `storage` return records today — `pg_endpoint` is accepted and comes back empty until Postgres logs ship. The window defaults to 1h on `query` and 6h on `field-values`, and cannot exceed 7d on either. If Neon reports `--minimum-severity` as unsupported on a branch, use `--severity-text` instead. Run `neon logs --help` for the full filter and pagination interface.
377
+ `--source` accepts `function`, `storage`, and `pg_endpoint`, but only `function` and `storage` return records today — `pg_endpoint` is accepted and comes back empty until Postgres logs ship. The window defaults to 1h on `query` and 6h on `field-values`, and cannot exceed 7d on either. If Neon reports `--minimum-severity` as unsupported on a branch, use `--severity-text` instead (an exact, case-sensitive match, e.g. `ERROR`); severities vary by source, so confirm what a branch carries with `neon logs field-values severity_text`. Run `neon logs --help` for the full filter and pagination interface.
378
378
 
379
379
  `--logql` replaces the structured filters with a raw stream selector or line filter. Its stream label is `entity_type`, not `source`:
380
380
 
@@ -4,7 +4,7 @@ description: >-
4
4
  One API and one credential for frontier and open-source LLMs, built into your
5
5
  Neon branch and powered by Databricks. Use when a user wants to call an LLM,
6
6
  add AI/chat/an agent to their app, route between model providers (OpenAI,
7
- Anthropic, Google/Gemini, Meta, Alibaba, DeepSeek), or avoid juggling
7
+ Anthropic, Google/Gemini, Meta, Alibaba, and more), or avoid juggling
8
8
  separate provider API keys and accounts — especially when they already use
9
9
  Neon and want AI requests to branch with their project. Works with the OpenAI
10
10
  SDK, Anthropic SDK, google-genai, the Vercel AI SDK, and Mastra by changing
@@ -29,7 +29,7 @@ npx skills add neondatabase/agent-skills --skill neon
29
29
 
30
30
  This is a public beta feature and only available in `us-east-2`.
31
31
 
32
- The Neon AI Gateway is the LLM inference layer built into your Neon branch: one API and one Neon credential give you access to frontier and open-source models from Anthropic, OpenAI, Google, Meta, Alibaba, DeepSeek, and Databricks powered by Databricks. Your existing OpenAI/Anthropic/Gemini SDK works by changing only the base URL.
32
+ The Neon AI Gateway is the LLM inference layer built into your Neon branch: one API and one Neon credential give you access to frontier and open-source models from many providers (Anthropic, OpenAI, Google, Meta, and more), all hosted and powered by Databricks. The catalog shifts over time, so treat `/v1/models` and the [models.dev Neon page](https://models.dev/providers/neon) as the source of truth rather than a fixed provider list. Your existing OpenAI/Anthropic/Gemini SDK works by changing only the base URL.
33
33
 
34
34
  Use this skill to help the user send model calls through the gateway, wire it into the AI SDK or Mastra, and switch providers without rewiring code. Deliver a working inference request, a configured agent, or a precise answer from the official Neon docs.
35
35
 
@@ -37,7 +37,7 @@ Use this skill to help the user send model calls through the gateway, wire it in
37
37
 
38
38
  Reach for the AI Gateway whenever an app or agent needs to call an LLM and the user would rather not manage model providers themselves:
39
39
 
40
- - **One credential instead of many provider accounts.** A single Neon credential reaches the entire model catalog across seven providers. No separate OpenAI / Anthropic / Google billing, keys, or signups to provision and rotate.
40
+ - **One credential instead of many provider accounts.** A single Neon credential reaches the entire model catalog across every provider Databricks hosts. No separate OpenAI / Anthropic / Google billing, keys, or signups to provision and rotate.
41
41
  - **Switch models without rewiring.** The unified endpoint is OpenAI-compatible and works with every model in the catalog — change one `model` field to move between Claude, GPT, and Gemini. Standard SDKs (OpenAI, Anthropic, google-genai) work with just a base-URL change.
42
42
  - **AI follows your branches.** Each branch has its own gateway endpoint, scoped with the same lineage as your database. AI requests from a preview/feature branch are isolated to that branch — the same isolation your data already gets — which makes preview, CI, and agent environments self-contained.
43
43
  - **No extra infrastructure, and it's already next to your data.** The gateway lives inside your Neon project (and is injected into Neon Functions automatically), runs on the same Databricks infrastructure that serves trillions of tokens a month, and supports streaming (SSE) out of the box.
@@ -46,7 +46,7 @@ If the user already has a deep, single-provider integration and no interest in N
46
46
 
47
47
  ## What It Does
48
48
 
49
- - **One API for all models** — Frontier and open-source models behind a single endpoint, addressed by their catalog ID (e.g. `claude-sonnet-4-6`, `gpt-5-mini`, `gemini-2-5-flash`).
49
+ - **One API for all models** — Frontier and open-source models behind a single endpoint, addressed by their catalog ID (e.g. `claude-sonnet-4-6`, `gpt-5-mini`, `gemini-3-flash`).
50
50
  - **Standard SDKs, one URL change** — OpenAI SDK and AI SDK (OpenAI-compatible MLflow/Responses routes), Anthropic SDK (native Messages), google-genai (native Gemini).
51
51
  - **Branch-scoped** — Each branch gets its own gateway host; the Neon credential authorizes requests for that branch and its descendants.
52
52
  - **Streaming** — Server-sent events work on all endpoints with no extra configuration.
@@ -55,7 +55,7 @@ If the user already has a deep, single-provider integration and no interest in N
55
55
 
56
56
  Check these preconditions before setting anything up:
57
57
 
58
- The AI Gateway is a public beta feature available only on new projects in the `us-east-2` region; it can't be enabled on existing projects. Foundation model access requires a paid Neon plan. Confirm the user's project is a new project in `us-east-2`.
58
+ The AI Gateway is a public beta feature available in the `us-east-2` region. Foundation model access requires a paid Neon plan. Confirm the user's project is in `us-east-2`.
59
59
 
60
60
  ### Enabling the gateway: plan and model-catalog gating
61
61
 
@@ -112,10 +112,10 @@ When `preview.aiGateway` is enabled, Neon injects the gateway credentials as **N
112
112
 
113
113
  - `/v1` — unified, OpenAI **Chat Completions**-compatible; recommended default, works with every provider (`/v1/chat/completions`).
114
114
  - `/openai/v1` — OpenAI **Responses** API (required for `gpt-5-…-codex` variants and `gpt-5-5-pro`); the `@ai-sdk/openai` provider uses the Responses API by default (`/openai/v1/responses`).
115
- - `/anthropic/v1` — native Anthropic Messages (extended thinking, prompt caching); mirrors the real Anthropic API path (`/anthropic/v1/messages`).
116
- - `/gemini/v1beta/...` — native Gemini `generateContent` (`/gemini/v1beta/models/<model>:generateContent`).
115
+ - `/anthropic` — native Anthropic Messages (extended thinking, prompt caching). Give the Anthropic SDK this as its base URL and it appends `/v1/messages` itself, so the full request path is `/anthropic/v1/messages`.
116
+ - `/gemini` — native Gemini `generateContent`. Give google-genai this as its base URL and it appends `/v1beta/models/<model>:generateContent` itself, so the full request path is `/gemini/v1beta/models/<model>:generateContent`.
117
117
 
118
- So `${NEON_AI_GATEWAY_BASE_URL}/v1` is the chat-completions endpoint, `${NEON_AI_GATEWAY_BASE_URL}/openai/v1` the OpenAI Responses endpoint, and so on.
118
+ So `${NEON_AI_GATEWAY_BASE_URL}/v1` is the chat-completions endpoint and `${NEON_AI_GATEWAY_BASE_URL}/openai/v1` the OpenAI Responses endpoint (both appended by you); for the native Anthropic and Gemini dialects you hand the SDK the shorter `/anthropic` or `/gemini` base and it appends the rest. See [Use with Plain SDKs](#use-with-plain-sdks-lower-level) below.
119
119
 
120
120
  For typed, validated access to the injected credentials, pass the same `neon.ts` config object to `parseEnv` from `@neon/env` — it returns an `env.aiGateway` namespace (`apiKey`, `baseUrl`) derived from your config.
121
121
 
@@ -130,7 +130,7 @@ import { neon } from "@neon/ai-sdk-provider";
130
130
  import { streamText } from "ai";
131
131
 
132
132
  const result = streamText({
133
- model: neon("gpt-5-mini"), // or claude-sonnet-4-6, gemini-2-5-flash, ...
133
+ model: neon("gpt-5-mini"), // or claude-sonnet-4-6, gemini-3-flash, ...
134
134
  messages,
135
135
  tools: {
136
136
  image_generation: neon.tools.imageGeneration({
@@ -149,7 +149,7 @@ import { neon } from "@neon/ai-sdk-provider";
149
149
  import { generateText } from "ai";
150
150
 
151
151
  const { text } = await generateText({
152
- model: neon("claude-haiku-4-5"), // or gpt-5-3-codex, gemini-2-5-flash, ...
152
+ model: neon("claude-haiku-4-5"), // or gpt-5-3-codex, gemini-3-flash, ...
153
153
  prompt: "Summarize Postgres for me.",
154
154
  });
155
155
  ```
@@ -213,7 +213,7 @@ const client = new OpenAI({
213
213
  });
214
214
 
215
215
  const res = await client.responses.create({
216
- model: "gpt-5-mini", // swap to claude-sonnet-4-6, gemini-2-5-flash, ...
216
+ model: "gpt-5-mini", // swap to claude-sonnet-4-6, gemini-3-flash, ...
217
217
  input: "What is Neon?",
218
218
  });
219
219
  ```
@@ -236,7 +236,7 @@ The Anthropic SDK and google-genai work the same way for native provider feature
236
236
 
237
237
  ## Model Identifiers
238
238
 
239
- Use a model's catalog ID directly in the `model` field — e.g. `claude-sonnet-4-6`, `gpt-5-mini`, `gemini-2-5-flash`. No provider prefix is needed. To look up the exact identifiers the gateway serves, which underlying model each maps to, and their context windows, pricing, and capabilities, use any of:
239
+ Use a model's catalog ID directly in the `model` field — e.g. `claude-sonnet-4-6`, `gpt-5-mini`, `gemini-3-flash`. No provider prefix is needed. To look up the exact identifiers the gateway serves, which underlying model each maps to, and their context windows, pricing, and capabilities, use any of:
240
240
 
241
241
  - **models.dev Neon provider page: https://models.dev/providers/neon** — the canonical, always-current list of the Neon provider's model IDs and their underlying models. The machine-readable catalog is at https://models.dev/api.json (the `neon` key).
242
242
  - **Models doc:** see Further Reading.
@@ -272,7 +272,7 @@ Any Neon credential (`nt_live_...`) valid for the branch works as the bearer tok
272
272
  "canonical_slug": "claude-sonnet-4-6",
273
273
  "name": "Claude Sonnet 4.6", // human-readable display name
274
274
  "object": "model",
275
- "owned_by": "anthropic", // anthropic | openai | google | meta | alibaba | databricks
275
+ "owned_by": "anthropic", // provider slug, e.g. anthropic | openai | google | meta | alibaba | databricks | ... (non-exhaustive; read live)
276
276
  "created": 0,
277
277
  "enabled": true,
278
278
  "context_length": null,
@@ -55,7 +55,7 @@ If the workload is a pure static site, a cron/background job that needs its own
55
55
 
56
56
  ## Availability
57
57
 
58
- Check this precondition before setting anything up: Neon Functions is a public beta feature available only on new projects in the `us-east-2` region. Confirm the user's Neon project is a new project in `us-east-2`; it can't be enabled on existing projects. Functions usage isn't billed during the public beta.
58
+ Check this precondition before setting anything up: Neon Functions is a public beta feature available in the `us-east-2` region. Confirm the user's Neon project is in `us-east-2`. Functions usage isn't billed during the public beta.
59
59
 
60
60
  ## Architecture: Where Functions Fit
61
61
 
@@ -135,7 +135,7 @@ neon dev # serves every function in neon.ts with hot reload; injects DATABA
135
135
  neon deploy # bundles with esbuild, uploads, and applies neon.ts to the linked branch
136
136
  ```
137
137
 
138
- To deploy a single function without `neon.ts`: `neon functions deploy <slug> --src src/index.ts` (`--src` takes either the entry file or a directory containing `index.ts`, `index.mjs`, or `index.js`). Retrieve the public URL with `neon functions get <slug>` (the `invocation_url` field, of the form `https://<branch_id>-<slug>.compute.c-1.us-east-2.aws.neon.tech`). Manage with `neon functions list|get|delete`.
138
+ To deploy a single function without `neon.ts`: `neon functions deploy <slug> --src src/index.ts` (`--src` takes either the entry file or a directory containing `index.ts`, `index.mjs`, or `index.js`). Retrieve the public URL with `neon functions get <slug>` (the `invocation_url` field, of the form `https://<branch_id>-<slug>.compute.<cell>.us-east-2.aws.neon.tech`). Manage with `neon functions list|get|delete`.
139
139
 
140
140
  When `neon checkout` _creates_ a new branch and a `neon.ts` is present, it applies the policy automatically — deploying the function to the fresh branch. Checking out an existing branch does not re-deploy; run `neon deploy` explicitly.
141
141
 
@@ -229,7 +229,7 @@ Functions are long-running but **still serverless** — they are a request/respo
229
229
 
230
230
  - **Time to first byte: 15 minutes.** Your handler must _begin_ returning a response within 15 minutes of receiving a request. Most handlers finish in seconds; the 15-minute ceiling exists so agent workloads like image/video generation have room.
231
231
  - **Heartbeat: 15 minutes.** Open WebSocket/SSE connections stay alive as long as data flows. The timeout only fires when a connection goes silent — send at least one byte every 15 minutes to keep a quiet stream alive.
232
- - **`waitUntil`: 15 minutes.** Work registered with `waitUntil` keeps the invocation alive after the response is sent, up to 15 minutes — for cleanup like analytics writes and audit logs, **not** a background job runner. (`waitUntil` from `@neon/functions` is currently a stub during the preview.)
232
+ - **`waitUntil`: 15 minutes.** Work registered with `waitUntil` (from `@neon/functions`) keeps the invocation alive after the response is sent, up to 15 minutes — for cleanup like analytics writes and audit logs, **not** a background job runner. Off the Neon runtime (local `neon dev`, tests) it's a no-op: the promise still runs but isn't tracked.
233
233
  - **Idle eviction.** With no active connections Neon shuts the function down; it may also evict/restart for operational reasons — e.g. maintenance, or moving the function to a different compute node (active functions can run for hours first). Treat eviction like a process restart — WebSocket/SSE clients must reconnect. Neon sends `SIGINT` before evicting, so a `process.on("SIGINT", ...)` handler lets you detect that the function is about to be evicted and run any last-minute cleanup. You don't need one just to close Postgres connections — Neon's pooler reclaims those on its own.
234
234
  - **Runtime:** Node.js 24, memory fixed at 2048 MiB during the preview. Slugs must match `^[a-z0-9]{1,20}$`. **An isolate is reused across many requests** — multiple requests can be in flight on the same isolate at once (interleaved on Node's single-threaded event loop), and under load the runtime runs several isolates in parallel, each with its own copy of module state. State held in module scope is therefore per-isolate (shared by every request that isolate handles) and in-memory only — persist anything that must survive eviction in Postgres. This reuse is exactly why you create a connection pool once at module scope rather than per request (see [Connecting to Postgres](#connecting-to-postgres)).
235
235
 
@@ -51,7 +51,7 @@ export default {
51
51
  const { messages } = (await request.json()) as { messages: ModelMessage[] };
52
52
 
53
53
  const result = streamText({
54
- model: neon("claude-sonnet-4-6"), // swap to gpt-5-mini, gemini-2-5-flash, …
54
+ model: neon("claude-sonnet-4-6"), // swap to gpt-5-mini, gemini-3-flash, …
55
55
  system: "You are a concise assistant with access to the user's todos.",
56
56
  messages,
57
57
  tools: {
@@ -53,7 +53,7 @@ If the user has no Neon project, isn't on Postgres, and just needs a standalone
53
53
 
54
54
  ## Availability
55
55
 
56
- Check this precondition before setting anything up: Neon Object Storage is a public beta feature available only on new projects in the `us-east-2` region. Confirm the user's Neon project is a new project in `us-east-2` before proceeding; it can't be enabled on existing projects.
56
+ Check this precondition before setting anything up: Neon Object Storage is a public beta feature available in the `us-east-2` region. Confirm the user's Neon project is in `us-east-2` before proceeding.
57
57
 
58
58
  ## Setup
59
59
 
@@ -4,7 +4,7 @@ description: Use when working with the Resend email API — sending transactiona
4
4
  license: MIT
5
5
  metadata:
6
6
  author: resend
7
- version: "3.5.2"
7
+ version: "3.6.0"
8
8
  homepage: https://resend.com/agent-skills
9
9
  source: https://github.com/resend/resend-skills
10
10
  openclaw: