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.
- package/dist/global-skills/expo-native-ui/SKILL.md +3 -0
- package/dist/global-skills/expo-native-ui/references/controls.md +2 -0
- package/dist/global-skills/expo-overview/SKILL.md +110 -0
- package/dist/global-skills/expo-overview/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-skill-feedback/scripts/telemetry_common.cjs +6 -6
- package/dist/global-skills/expo-ui/SKILL.md +52 -6
- package/dist/global-skills/expo-ui/references/universal.md +31 -0
- package/dist/global-skills/instrument-feature-flags/references/adding-feature-flag-code.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/android.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/api.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/best-practices.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/django.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/dotnet.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/elixir.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/flask.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/flutter.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/go.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/ios.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/java.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/laravel.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/next-js.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/nodejs.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/php.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/python.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/react-native.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/react.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/ruby-on-rails.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/ruby.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/rust.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/usage.md +4 -0
- package/dist/global-skills/instrument-feature-flags/references/web.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-swift.md +0 -1
- package/dist/global-skills/instrument-product-analytics/references/android.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/angular.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/astro.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/configuration.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/django.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/dotnet.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/elixir.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/flask.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/flutter.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/go.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/identify-users.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/ios.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/laravel.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/next-js.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/nuxt-js-3-6.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/nuxt-js.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/php.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/posthog-python.md +52 -5
- package/dist/global-skills/instrument-product-analytics/references/python.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/react-native.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/react-router-v6.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-data-mode.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-declarative-mode.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-framework-mode.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/ruby-on-rails.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/ruby.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/svelte.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/tanstack-start.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/usage.md +4 -0
- package/dist/global-skills/instrument-product-analytics/references/vue-js.md +4 -0
- package/dist/global-skills/manifest.json +2 -1
- package/dist/global-skills/neon/SKILL.md +2 -2
- package/dist/global-skills/neon-ai-gateway/SKILL.md +13 -13
- package/dist/global-skills/neon-functions/SKILL.md +3 -3
- package/dist/global-skills/neon-functions/references/ai-sdk.md +1 -1
- package/dist/global-skills/neon-object-storage/SKILL.md +1 -1
- package/dist/global-skills/resend/SKILL.md +1 -1
- package/dist/global-skills/resend/references/automations.md +10 -1
- 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
|
|
@@ -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
|
|
@@ -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
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# PostHog Python SDK
|
|
4
4
|
|
|
5
|
-
**SDK Version:** 7.
|
|
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
|
|
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
|
|
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
|
package/dist/global-skills/instrument-product-analytics/references/react-router-v7-data-mode.md
CHANGED
|
@@ -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
|
package/dist/global-skills/instrument-product-analytics/references/react-router-v7-framework-mode.md
CHANGED
|
@@ -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
|
|
@@ -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
|
|
@@ -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":
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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-
|
|
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
|
|
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
|
|
116
|
-
- `/gemini
|
|
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
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
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. (`
|
|
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-
|
|
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
|
|
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.
|
|
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:
|