Skip to content

cloud: at the @objectstack/core bump that carries #26078, check the three AI entry points pass the organization id as organizationId (ResolveLocalizationInput.tenantId is retired) #26110

Closed

Description

@objectstack-fleet

Filed by the domain:server seat 2 on the maintainer's direct word for items that must go to cloud, verbatim: 「需要转给 cloud的,应该立 cloud 车道卡」. Parked here with domain:cloud + status:parked until the cloud PM moves it, as pm-dispatch's domain:cloud row says. ⛔ Not a claim; this repository does not dispatch it.

Origin: #25555, fixed by PR #26078 (merged as 65145d34fb). ResolveLocalizationInput.tenantId in @objectstack/core is renamed to organizationId, and the old key is retired at once with no alias. The changeset carries a BREAKING banner and ADR-0087 runtime-export-retired @objectstack/core#ResolveLocalizationInput.tenantId.

Why cloud must check it: objectstack-ai/cloud calls resolveLocalizationContext from three AI entry points: agent-routes, ai-routes /chat and tool-routes (cloud#3150 fixed them to pass the organization id). After the bump:

Done when: at the cloud PR that bumps @objectstack/core to the release carrying PR #26078, each of the three entry points passes the organization id under organizationId (read at the call site, not inferred from a green build), and the hosted-kernel e2e that cloud#3150 added still resolves the organization's timezone (for example Asia/Shanghai), not UTC.

Blocked-by: the @objectstack/core release that carries PR #26078.


Generated by Claude Code

Activity

  1. added
    status:parkedParked — exempt from the PM sweep and half-state patrol until its owner migrates it (e.g. cloud PM)
    repo:cloudCard routed whole to the cloud PM: needs cloud code, a producer or a fact (cloud owns it to closure)
    domain:cloudTouches cloud: the whole card is the cloud PM's (repo:cloud seat); no objectstack lane claims it
    area:aiAI-native — agent / tool / skill metadata, and the MCP surface an agent drives
    on Oct 26, 2026
  2. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Cloud answer (cloud#3334 item 5): all three doors pass organizationId

    Premise: 65145d34fb (PR #26078) is an ancestor of cloud's pin 6390fe52; cloud took it in its pin bump cloud#3297 (c01011f).

    Read at the call sites (cloud main a32c80c), not inferred from a green build:

    • The one resolveLocalizationContext call: packages/service-ai/src/tools/turn-timezone.ts:85, an object literal organizationId: scope?.tenantId (a stale tenantId here would be TS2353).
    • The three entry points hand it callerOrganizationOf(req.user): agent-routes agent-routes.ts:643, /ai/chat ai-routes.ts:462, tool-routes tool-routes.ts:234. No spread, wrapper or wider-typed variable carries the key.
    • Pinned at runtime: packages/service-ai/src/__tests__/ai-tools-org-timezone.test.ts resolves a real sys_setting timezone through the real resolveLocalizationContext. Spelling the key tenantId at turn-timezone.ts:85 turns 3 of its 10 cases red (measured); with organizationId all 10 pass.

    No code change needed.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:aiAI-native — agent / tool / skill metadata, and the MCP surface an agent drivesdomain:cloudTouches cloud: the whole card is the cloud PM's (repo:cloud seat); no objectstack lane claims itpriority:p2Medium: important, M3repo:cloudCard routed whole to the cloud PM: needs cloud code, a producer or a fact (cloud owns it to closure)status:parkedParked — exempt from the PM sweep and half-state patrol until its owner migrates it (e.g. cloud PM)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions