Daniel Salazar
20b3b88e39
metering: big fixes to metering + jsdoc types ( #3547 )
...
Changes are:
- global egress metering
- remove file egress cost
- introduce file op cost for the per request cost s3 has
- enforce fs read/download etc to through 402 when out of usage; allow for subdomains
- enforce kv metering when out of usage through 402; allow for workers
- jsdoc as source of truth for puter.js types
- kv driver caching for get and batchget operations with decreased costs
2026-08-12 01:06:04 -07:00
Daniel Salazar
79d4201f12
fix: rate limits, AI routing, and a type-check gate ( #3529 )
...
- declare rate + concurrency limits on every route and driver that lacked one
- add acquireConcurrent for websocket connections and the DAV mount
- bucket AI models by identity key only; keep resold duplicates of any vendor
- skip recently-failed provider routes; cap the fallback chain at 3 attempts
- let full-access access tokens bind a worker to an app their own user owns
- cache resolved subscriptions so tiered limits don't add a round trip
2026-08-10 19:09:47 -07:00
Daniel Salazar
0c2d7dfa34
feat: add user created timestamp on whoami ( #3538 )
2026-08-10 19:08:50 -07:00
Nariman Jelveh
8cebbcf3be
fix: thumbnails breaking after copy — duplicate the S3 object per copy ( #3494 )
...
A copied fsentry kept its source's thumbnail pointer verbatim, so both
rows shared one S3 thumbnail object. fs.remove.node deletes the
pointed-to object, so the first removal among the sharers — e.g. the
remove performed by a replace-on-copy — broke every other sharer's
thumbnail. FSService already emits fs.copy.node for exactly this
reason (its doc comment describes the duplication), but the thumbnails
extension never subscribed to it.
Add the missing handler: S3-copy the thumbnail to a freshly minted key
and repoint the copied row, under the same only-keys-we-minted trust
rule as the read/remove paths. If the shared object is already gone
(pre-fix damage), null the pointer instead of leaving the row
advertising a thumbnail it doesn't have.
2026-08-02 23:22:24 -07:00
Daniel Salazar
116d6e6663
tests: big test push for better coverage ( #3490 )
2026-08-01 14:29:59 -07:00
Daniel Salazar
f9396b7283
fix: thumbnail res ( #3465 )
2026-07-28 17:31:01 -07:00
Daniel Salazar
5bad6a972f
fix: puter-js cleanup around docs and ai resolution ( #3459 )
...
* fix: puter-js cleanup around docs and ai resolution
* more jsdoc stuff
* fix: docs
* fix: doc types + misc hardening
* fix: harden auth
2026-07-27 22:31:05 -07:00
Neal Shah
ef1afb9cc1
add just app telementry ( #3387 )
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
Notify HeyPuter / notify (push) Has been cancelled
release-please / release-please (push) Has been cancelled
2026-07-16 14:04:54 -04:00
Daniel Salazar
cf34f9fea9
fix: sanitize get user response ( #3390 )
...
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
Notify HeyPuter / notify (push) Has been cancelled
release-please / release-please (push) Has been cancelled
* fix: sanitize get user response
* fix: app creation in dev center
2026-07-15 02:02:06 -07:00
Neal Shah
d039dcfee5
fix appTelemetry ( #3357 )
2026-07-07 20:10:13 -04:00
Nariman Jelveh
4de39ab6f2
Mark external apps and use the flag for dashboard titles ( #3354 )
...
* Mark external apps and use the flag for dashboard titles
An app with no owner_user_id (null/empty) isn't owned by a Puter user —
it's an external, origin-bootstrapped app whose uuid/name/title are all the
opaque app-… id. The dashboard used to detect these client-side by comparing
uuid/name/title and a name.startsWith('app-') check.
Expose an authoritative `external` flag from the API instead:
- /installedApps and /get-launch-apps now return `external`, derived from
owner_user_id, and no longer leak the raw owner id.
- The dashboard (Home + Apps tabs) shows the index_url hostname for external
apps based on `external` rather than the uuid/name/title heuristic.
Add/extend extension tests to cover the `external` flag and non-leak.
* Use hostname for opaque external app titles
Detect opaque external app IDs (when name === title === uid/uuid) and replace the displayed title with the hostname from index_url. Adds a uid/uuid fallback and tightens the external-app check in both the Apps and Home dashboard tabs so they behave consistently; preserves target_link for Home entries.
* Add external flag for apps without owner
Expose an `external` property in AppSummary (toAppSummary in RecommendedAppsService.ts) to mark apps that are not owned by a Puter user. The flag is set when `owner_user_id` is null or an empty string, allowing clients to identify origin-bootstrapped/external apps.
2026-07-06 18:00:56 -07:00
Nariman Jelveh
fbb646b8eb
Return index_url from /installedApps for dashboard app titles ( #3352 )
...
The dashboard derives a hostname title for anonymous (app-…) apps whose
uuid/name/title are all identical, falling back to the host of index_url.
That worked for launch/recent apps but not for apps that come only from
/installedApps, because the endpoint didn't return index_url.
Add apps.index_url to the SELECT (alongside apps.icon, relying on the
functional dependency on the apps.id primary key) and assert it in the
extension test.
2026-07-06 16:46:31 -07:00
Neal Shah
a22dc5facb
fix whoami user token check ( #3299 )
2026-06-24 14:28:02 -04:00
Neal Shah
24d700673c
Compaction support for OpenAI and Anthropic ( #3279 )
...
* Alpha: compaction support for OpenAI and Anthropic
* update lock
* fix billing for anthropic compactions
* Fix max_tokens bug in together provider
* Fix responses compaction
2026-06-21 21:57:56 -04:00
Daniel Salazar and Neal Shah
cd800148d5
feat: optional additional verification gates ( #3262 )
...
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
Notify HeyPuter / notify (push) Has been cancelled
release-please / release-please (push) Has been cancelled
* phone number verificiation initial
* finish phone verification
* feat: add card gate for signups
* chore: npm
* fix: modal order and wording
* fix:wording
---------
Co-authored-by: Neal Shah <neal.shah@puter.com >
2026-06-15 09:16:00 -07:00
Daniel Salazar
f6408db74e
fix: access tokens with full accesses allowed through with new middleware gate ( #3234 )
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
Notify HeyPuter / notify (push) Has been cancelled
release-please / release-please (push) Has been cancelled
2026-06-08 18:47:07 -07:00
Ron Hernaus and Daniel Salazar
d2fee51844
Support PostgreSQL database backend ( #3167 )
...
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
Notify HeyPuter / notify (push) Has been cancelled
release-please / release-please (push) Has been cancelled
* feat(database): add postgres database client
Adds the PostgreSQL database client, native bootstrap migration, SQL preparation helpers, and database config/factory wiring.\n\nRefs #3165 .
* feat(database): make backend queries postgres-aware
Updates runtime SQL call sites for database-specific booleans, identifiers, insert-ignore, upserts, JSON extraction, intervals, and Postgres insert ids.\n\nRefs #3165 .
* test(database): cover postgres client behavior
Adds unit coverage for SQL preparation, factory selection, write-result mapping, and transaction rollback/commit ordering, plus an env-gated PostgreSQL integration flow.\n\nRefs #3165 .
* docs(self-hosting): document postgres database setup
Adds PostgreSQL configuration examples and migration path guidance for self-hosted deployments.\n\nRefs #3165 .
* fix: harden postgres oidc tests
* fix(postgres): normalize query results and SQL prep
* fix(user): preserve normalized cache booleans
* test(postgres): run integration coverage with pgmock
* tests: add way to run all tests with postgres though slow
Also adding note that postgres is not in active use so might not work out the box
---------
Co-authored-by: Daniel Salazar <daniel.salazar@puter.com >
2026-05-28 14:12:17 -07:00
Daniel Salazar
b188942436
feat (PUT-1016 & PUT-1020) ( #3164 )
...
* feat (PUT-1016 & PUT-1020)
temp account preservation on forced relogin
hosted asset cookies to v2 token too
* fix: remove llm dashes and ugly comments
* update agents
2026-05-26 23:35:16 -07:00
Daniel Salazar
182fc723f1
expose hasDevAccountAccess at top level ( #3093 )
2026-05-12 13:56:00 -07:00
Daniel Salazar
5d3c5b6873
fix: whoami ( #3092 )
2026-05-12 13:44:02 -07:00
Daniel Salazar
594cbe03ef
tests: big test push with lots of missing areas ( #3067 )
...
- Strengthen Broadcast tests
- strengthen oidc tests
- add middleware tests
- add extensions test
- add puter hosting tests
- add Chat Completion Driver tests
2026-05-10 15:06:48 -07:00
Daniel Salazar
775c9c49e2
test: add harness and some examples ( #2941 )
...
* test: add harness and some examples
* feat: tests ran on pr
2026-05-06 22:43:22 -07:00
Daniel Salazar
1e271f188e
fix: bring back old app names functionality and fix build ( #2937 )
2026-05-06 15:48:25 -07:00
ProgrammerIn-wonderland
872d2c01d4
Add support for log in with Apple ( #2935 )
...
* Add experimental login with Apple support
* Fix revalidate URL
* Fix OIDC provider revalidate in whoami as well
2026-05-06 16:47:24 -04:00
Daniel Salazar
224ea5f7f8
fix: extensions ( #2926 )
2026-05-05 20:55:53 -07:00
Nariman Jelveh and Claude Opus 4.6
1f1149e32e
Block unconfirmed users from API endpoints server-side ( #2916 )
...
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
Notify HeyPuter / notify (push) Has been cancelled
release-please / release-please (push) Has been cancelled
Add a default-on email confirmation gate that rejects users with
`requires_email_confirmation && !email_confirmed` on all authenticated
routes, returning 403 with `email_confirmation_required`.
Previously this was only enforced client-side via a GUI modal, meaning
direct API calls could bypass the check entirely.
Essential routes are exempted via `allowUnconfirmed: true`:
`/whoami`, `/logout`, `/send-confirm-email`, `/confirm-email`,
`/save_account`, `/get-anticsrf-token`, `/get-gui-token`,
`/session/sync-cookie`, `/auth/revoke-session`,
`/user-protected/delete-own-user`
No impact on temp users (`requires_email_confirmation` is false),
self-hosted deployments without email (flag is never set), or
unauthenticated routes (login, signup, password recovery, OIDC).
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-05 10:08:50 -07:00
Daniel Salazar
704fcecbdf
fix: selfhosted thumbnails extensions ( #2905 )
2026-05-04 19:56:10 -07:00
ProgrammerIn-wonderland
ce18b914b4
backport devwatcher ( #2861 )
2026-04-30 16:23:34 -07:00
d4d78ac7db
rework: change backend and backend extensions to use simpler code structure and patterns ( #2815 )
...
* fix: dynamodb health checks and client recreation (#2789 )
* wip: no nanoServices groundwork
* feat: data clients in new shape
* wip: auth and perms in new system
* more wip
* middlewaters mainly done
* wip: fsv2 in new layout
* old fs v2 migration
* driver system
* driver and old fs fixes
* ai drivers wip
* stream support
* metering in ai chat driver
* wip: new auth
* rate limit and auth routes
* captcha and anti csrf
* fix: types
* auth store
* app logic
* wip most other dricvers
* fs
* mostly kill all legacy stuff
* fs finish
* fix: redis usage
* ai controller
* driver cleanup
* socket io in v2
* broadcast and crudq stuff
* subdomains
* notifcations and shares
* fix bad syntaxes
* auth wip
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
* extensions
* extension setup
* more routes
* sql migrations and default services
* home router
* tier 7
* everything else
* everything else
* remaining missing bits
* server health
* logs
* cleanup
* deps
* cleanup 2
* more cleanup 2
* boot
* fix launch
* config fix
* move file
* fix: tsconfig things
* fix: extension loading
* launching
* fix: drivers
* fix: others
* fix: icons
* fix: file uploads
* fs fixes
* fix: fs api
* fix: dev-center
* config
* add back telemetry
* lint stuff
* husky hooks
* fix: fs oss
* fix: config migration
* config migration
* migrate scripts + replicate
* runner
* fix: merge defafult config
* fix: default region
* fix: api domain
* fix paths in readfile
* fix fs entry default s3
* NS: Remove Referral && Entri Service
* dep cleanups
* fix: static assets
* fix: kv and perms
* fix: driver registrations
* fix: home mapping
* fix: rao
* adding back 500 alarm
* fix: build paths
* fix: fs and kv shapes
* fix: kv shape
* more kv coercing and ai chat matching format as prior
* fix: private app gates
* private app caches
* fix: whole bunch of legacy shape issues
* update template jsonc
* fix caching partial oidc and fs signed paths
* more oidc fixes
* fix: wip
* fix: private apps
* admin route fixes
* fix: last few things hopefully
* claude uploads
* fix security for app only routes
* fix kv system namespace
* stuff
* fix: app and kv and suggested apps
* fix:open item
* fix: FS operations
* fix: default app icons
* add back token-read and WSL support
* metering fixes
* fix: fsEntry
* perm scanners and implicators
* proper download endpoint
* fix: download
* fix anti csrft on v2
* fix file extensions, app icons
* fold in v1 fixes from origin/main into v2 equivalents
Re-applies the v1 fixes that landed on origin/main into their v2
counterparts since the v1 files were deleted on DS/wip during the v2
migration. v1 commits referenced below.
- SQLBatcher: flush immediately when queue hits maxBatchSize instead
of racing the timer (v1 12f48238).
- RedisClient: drop maxRetriesPerRequest from 2 to 1 to shrink failure
window (v1 b6776ab4 ).
- ChatCompletionDriver: default minimumCredits to 1 when unset/zero so
zero-cost precheck doesn't auto-pass (v1 36bd6073 ).
- OpenAiImageProvider: add gpt-image-2 support — open-ended size rules,
token-based cost estimator, arbitrary-size normalizer, isGpt prefix
broadened to gpt-image- (v1 f14f1bf4 ). models.ts auto-merged via
rename detection.
- AppStore: bump row cache TTL from 5m to 24h (v1 6b3196ed ).
Not ported: v1 app-object Redis cache (bdfa12b5/b886dde3) — v2's
#toClient recomputes filetype_associations/created_from_origin per
read; adding a second cache layer is a larger change for a follow-up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
* remoe anti-csrf from auth routes that had not used them
* more icon fixes
* fix worker functionality
* fix: app and subdomain es
Co-authored-by: Copilot <copilot@github.com >
* fix PUT-761
* fix: PUT-748
* fix: rename fsService
* Add security back to WorkerDriver
* Migrate worker from fsEntry to fs. Fix cache issue
* remove ability to create symlinks
* strict webdav acl
* require auth for wisp
* chore: service renames
* Add metering back to puter peer api
* fix: PUT-760 PUT-749
* fix: PUT-746
* fix: peer cost
Co-authored-by: Copilot <copilot@github.com >
* fix: 771
* change order of peer controller
* fix: create appdata folder for app on get auth token
* fix: align delete site and list sites
* delete: putility
* fix subdomains
* Add support for tilde in subdomains, fix subdomain update
* cleanup PeerController.ts and fix billing oversight (#2844 )
* fix: PUT-786
* fix: bugs
* fix: issues with multiple subdomain queries, or permission checks
* fix: harden response shapes to not contain uneeded fields
* fix: move state to redis
* fix: missing kv methods + better sec
Co-authored-by: Copilot <copilot@github.com >
* fix: subdomainStore limit
* fix: missing path resolution
Co-authored-by: Copilot <copilot@github.com >
* fs fixes
* fix: undef error
* fix fs + cleanup
* fix: npm audit fixes
* heal path entries where missing
Co-authored-by: Copilot <copilot@github.com >
* fix: caching
Co-authored-by: Copilot <copilot@github.com >
* fix: cache inconsistencies
Co-authored-by: Copilot <copilot@github.com >
* fix: app driver metadata
Co-authored-by: Copilot <copilot@github.com >
* remove extraneous comma
* fix: associated app icons
* fix: bad tool call
* Add validation to WorkerDriver#getFilePaths
* misc fs and auth issues
Co-authored-by: Copilot <copilot@github.com >
* fix: oidc errors
Co-authored-by: Copilot <copilot@github.com >
* fix: PUT-797
* fix: legacy appdata_app
Co-authored-by: Copilot <copilot@github.com >
* fix: add alert logs
Co-authored-by: Copilot <copilot@github.com >
* fix: error handling
* Disable sharecontroller
* fix: remove private user identifier for ai
* fix: private app fixes
* Add backback signup_server
* fix: completionId size
Co-authored-by: Copilot <copilot@github.com >
* fix: revalidate path for oidc
* fix: revalidate path for oidc
* fix: email validation
Co-authored-by: Copilot <copilot@github.com >
* fix: user create query
* fix: middleware extensions
Co-authored-by: Copilot <copilot@github.com >
* use x-forwarded-for for req ip forwarded
* fix: missing last_activity ts
* feat: add cache broadcast to subdomains
* fix: update config typing
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
Co-authored-by: ProgrammerIn-wonderland <3838shah@gmail.com >
Co-authored-by: Copilot <copilot@github.com >
Co-authored-by: Nariman Jelveh <nj@puter.com >
Co-authored-by: velzie <velzie@velzie.rip >
2026-04-30 12:13:43 -07:00
Daniel Salazar
7f9873edd2
fix: cdn cache invalidation ( #2826 )
2026-04-20 11:59:35 -07:00
ProgrammerIn-wonderland
649db33763
Ns/simplify 1 ( #2764 )
...
* Rid devconsole
* lots of removals
* more commandservice
2026-04-06 14:05:48 -04:00
Daniel Salazar
5319940156
fix: app id shortcut batch ( #2768 )
Docker Image CI / build-and-push-image (push) Has been cancelled
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
Notify HeyPuter / notify (push) Has been cancelled
release-please / release-please (push) Has been cancelled
test / test-backend (24.x) (push) Has been cancelled
test / API tests (node env, api-test) (24.x) (push) Has been cancelled
test / puterjs (node env, vitest) (24.x) (push) Has been cancelled
2026-04-04 17:21:58 -04:00
Daniel Salazar
95cbbc5de6
feat: enable singed uploads on oss and fix broken migration ( #2765 )
...
Docker Image CI / build-and-push-image (push) Has been cancelled
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
Notify HeyPuter / notify (push) Has been cancelled
release-please / release-please (push) Has been cancelled
test / test-backend (24.x) (push) Has been cancelled
test / API tests (node env, api-test) (24.x) (push) Has been cancelled
test / puterjs (node env, vitest) (24.x) (push) Has been cancelled
* fix: proper shutdown
* feat: enable singed uploads on oss
* fix: s3 in oss
* fix: thumbnails in oss
2026-04-03 07:29:22 -07:00
Daniel Salazar
99d96edd9c
feat: s3 fs in oss ( #2761 )
...
* feat: s3 fs in oss
* feat: new endpoints in OSS
* fix: name of fs extension
* perf: signed uploads
* fix: await socket events to align fs events
* fix: default bucket names
* fix: backend tests
* fix: deps
* fix: order
2026-04-02 11:20:59 -07:00
Daniel Salazar
ef243c9854
feat: signed upload urls ( #2753 )
...
Docker Image CI / build-and-push-image (push) Has been cancelled
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
Notify HeyPuter / notify (push) Has been cancelled
release-please / release-please (push) Has been cancelled
test / test-backend (24.x) (push) Has been cancelled
test / API tests (node env, api-test) (24.x) (push) Has been cancelled
test / puterjs (node env, vitest) (24.x) (push) Has been cancelled
* feat: signed upload urls
* fix: make sessions write to dynamo
* fix: add logs for failures
2026-03-30 16:27:29 -07:00
jelveh
813e78843a
Remove debug log; update captcha modal styles
2026-03-28 11:04:10 -07:00
Daniel Salazar
b3656fdaa1
fix: handle closing server nicer on shutdown signal ( #2741 )
...
* fix: handle closing server nicer on shutdown signal
* fix: bad check
2026-03-27 17:24:33 -07:00
Daniel Salazar
b857fc8743
fix: return fallback icons if no icon present ( #2731 )
Docker Image CI / build-and-push-image (push) Has been cancelled
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
Notify HeyPuter / notify (push) Has been cancelled
release-please / release-please (push) Has been cancelled
test / test-backend (24.x) (push) Has been cancelled
test / API tests (node env, api-test) (24.x) (push) Has been cancelled
test / puterjs (node env, vitest) (24.x) (push) Has been cancelled
2026-03-25 16:50:34 -07:00
Daniel Salazar
ec766eecc2
fix: syntax issue with sql ( #2730 )
2026-03-25 15:05:43 -07:00
Daniel Salazar
187b14dacd
fix: remove last opened ( #2729 )
2026-03-25 14:43:06 -07:00
Daniel Salazar
08fa2d7a41
fix: installed apps api ( #2725 )
2026-03-25 09:41:53 -07:00
Daniel Salazar
25b9911651
fix: extension type import ( #2723 )
Docker Image CI / build-and-push-image (push) Has been cancelled
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
Notify HeyPuter / notify (push) Has been cancelled
release-please / release-please (push) Has been cancelled
test / test-backend (24.x) (push) Has been cancelled
test / API tests (node env, api-test) (24.x) (push) Has been cancelled
test / puterjs (node env, vitest) (24.x) (push) Has been cancelled
2026-03-24 23:32:12 -07:00
Daniel Salazar
9511323cdf
fix: init installed apps controller ( #2722 )
2026-03-24 23:17:46 -07:00
Daniel Salazar
e75ccb0a41
feat: root level kv accesses, and installed app listing + server health check fix ( #2719 )
...
* feat: root level kv accesses, and installed app listing
* fix: revert server health check
2026-03-24 19:18:42 -07:00
Eric Dubé
7ff1ecfcd7
dev(fs): fetch subdomains using join in readdir ( #2647 )
...
* dev(fs): fetch subdomains using join in readdir
* fix(fs): handle readdir of root directory
2026-03-11 20:06:13 -04:00
Eric Dubé
2a027ed410
fix(puterfs): await queue items for fsentry action ( #2616 )
...
* style(puterfs): update adherence to linter rules
* fix(puterfs): await queue items for fsentry actions
This will ensure some operations always function as expected in a
sequence, although it may incur some performance costs.
2026-03-06 20:04:18 -05:00
Daniel Salazar
a861c3e27a
chore: typeFixes ( #2615 )
Docker Image CI / build-and-push-image (push) Has been cancelled
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
release-please / release-please (push) Has been cancelled
test / test-backend (24.x) (push) Has been cancelled
test / API tests (node env, api-test) (24.x) (push) Has been cancelled
test / puterjs (node env, vitest) (24.x) (push) Has been cancelled
2026-03-06 00:04:39 -08:00
Daniel Salazar
911c163fc8
feat: private app config to use app urls + app routing ( #2587 )
...
Docker Image CI / build-and-push-image (push) Has been cancelled
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
release-please / release-please (push) Has been cancelled
test / test-backend (24.x) (push) Has been cancelled
test / API tests (node env, api-test) (24.x) (push) Has been cancelled
test / puterjs (node env, vitest) (24.x) (push) Has been cancelled
* feat: private app config to use app urls
* fix: launch app
* fix: cookie origin
2026-03-03 18:34:33 -08:00
Daniel Salazar
adce8c64db
feat: add private app access extension event contract ( #2556 )
...
Docker Image CI / build-and-push-image (push) Has been cancelled
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
release-please / release-please (push) Has been cancelled
test / test-backend (24.x) (push) Has been cancelled
test / API tests (node env, api-test) (24.x) (push) Has been cancelled
test / puterjs (node env, vitest) (24.x) (push) Has been cancelled
* feat: add private app access extension event contract
Define app.private-access.check in extension API typings with mutable allow/redirect decision fields for entitlement handlers.
* refactor: camelCase private access event contract
Rename private access extension event and payload fields to camelCase for consistency with repo conventions.
2026-02-26 15:04:23 -08:00
Daniel Salazar
2c1b21e197
feat: type extension cache update events ( #2548 )
...
* feat: type extension cache update events
Expose outer.cacheUpdate in extension API typings and consolidate extension service typing via ServicesMap.
* fix: batch broadcast events
* fix: bad import
* fix: import socket io
* fix: bad undefined call
* fix: simplify await for broadcast processing
2026-02-25 17:05:05 -08:00