Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1542 commits
Select commit Hold shift + click to select a range
6965a05
feat(auth): add an Admin API key principal that operations admit only…
waleedlatif1 Nov 10, 2026
ec9ce9a
refactor(admin): build the Admin API key principal in the admin auth …
waleedlatif1 Nov 10, 2026
f899b85
refactor(organizations): move Admin API organization member list and …
waleedlatif1 Nov 10, 2026
3058378
chore(audits): place the transfer exemption where the audit reads it,…
waleedlatif1 Nov 10, 2026
7dad2fa
fix(organization-home): give the Home key factory its root key
waleedlatif1 Nov 10, 2026
e872a68
fix(workspaces): key the workspace list by organization and keep plac…
waleedlatif1 Nov 10, 2026
79a0e9c
fix(sidebar): page the Chats section with the Workspaces section's Se…
waleedlatif1 Nov 10, 2026
331e354
fix(workflow-canvas): paint nothing while the workflow loads
waleedlatif1 Nov 10, 2026
9ab1b29
fix(navigation): carry legacy upgrade and access-request queries to t…
waleedlatif1 Nov 10, 2026
b641c24
fix(integrations): don't call an integration unavailable when the inv…
waleedlatif1 Nov 10, 2026
58e92db
fix(navigation): encode route ids exactly once
waleedlatif1 Nov 10, 2026
98b3660
fix(product): retry a failed page by refetching its server segment
waleedlatif1 Nov 10, 2026
15adc7e
fix(knowledge): show failed tag reads in the tags modals instead of e…
waleedlatif1 Nov 10, 2026
0f1b768
fix(product): return an expired session to the page it opened after l…
waleedlatif1 Nov 10, 2026
26a2617
fix(workspace-lists): keep the member filter visible and disabled whe…
waleedlatif1 Nov 10, 2026
76fb144
fix(product): send a retired organization's links to the viewer's org…
waleedlatif1 Nov 10, 2026
d831d23
fix(product): load a new document when the viewer's organizations change
waleedlatif1 Nov 10, 2026
fc94b01
fix(knowledge): format document upload dates in the hydrated viewer zone
waleedlatif1 Nov 10, 2026
17a13bf
fix(knowledge,links): count ages from the minute clock instead of Dat…
waleedlatif1 Nov 10, 2026
e1c8ce3
fix(auth): reload a tab whose session comes back as a different user
waleedlatif1 Nov 10, 2026
3e85a0a
fix(chat): open a workspace chat in the organization shell under its …
waleedlatif1 Nov 10, 2026
ad2d652
fix(chat): answer not found for a chat URL in an organization the vie…
waleedlatif1 Nov 10, 2026
7c67844
fix(search): render an organization knowledge result without a dead link
waleedlatif1 Nov 10, 2026
d2eb8d2
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 10, 2026
274b8c6
fix(invitations): read the invitations switch from the deployment shape
waleedlatif1 Nov 10, 2026
6d231d2
fix(chat): update the viewer's workspace chats live in the organizati…
waleedlatif1 Nov 10, 2026
3817ef3
fix(chat): admit an organization chat's targets that render in its shell
waleedlatif1 Nov 10, 2026
59538e1
fix(workspace-lists): report a failed members read through the list's…
waleedlatif1 Nov 10, 2026
c2d7e91
chore(platform): drop the env seam grant the invite policy no longer …
waleedlatif1 Nov 10, 2026
8770e24
fix(chat): resolve an Enterprise organization's BYOK key for organiza…
waleedlatif1 Nov 10, 2026
5d1165d
Merge branch 'wip/fx4-routing' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
a5527b9
fix(chat): keep a personal workspace's memory graph when it moves to …
waleedlatif1 Nov 10, 2026
441d60e
chore(tool-registry-boundary): re-record the chat page's module count
waleedlatif1 Nov 10, 2026
fb3f895
fix(chat): chat access follows the permission group and deployment, n…
waleedlatif1 Nov 10, 2026
04fa44f
fix(platform): one landing answer for the organization gate, root and…
waleedlatif1 Nov 10, 2026
c694ef1
test(platform): members chat on Home; a no-chat member is seeded by p…
waleedlatif1 Nov 10, 2026
9f32083
docs(platform): chat access is one value; gate, landing and entry sha…
waleedlatif1 Nov 10, 2026
6a4214e
test(search): seed the workspace list under its organization-scoped key
waleedlatif1 Nov 10, 2026
56355c9
fix(auth): narrow the session user before comparing ids
waleedlatif1 Nov 10, 2026
670d68e
Merge branch 'wip/fx4-chat' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
64c56e2
fix(organizations): keep a collaborator who holds a personal organiza…
waleedlatif1 Nov 10, 2026
b8ebe2b
fix(billing): re-run the Team owner's workspace attach when the webho…
waleedlatif1 Nov 10, 2026
72aff0e
fix(billing): lock the converted personal organization before the buy…
waleedlatif1 Nov 10, 2026
a679860
fix(chat): show a cited Sim document that no longer opens as unavailable
waleedlatif1 Nov 10, 2026
e7bb38d
Merge branch 'wip/fx4-uistate' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
377c930
test(search): seed the organization-scoped workspace list key without…
waleedlatif1 Nov 10, 2026
ad8f379
test(chat): prove the organization shell's chat scope through the cha…
waleedlatif1 Nov 10, 2026
2c5d7f0
docs(platform): record the shell's workspace chat scope, live updates…
waleedlatif1 Nov 10, 2026
7dea37b
feat(mothership): move the worker's copy of chats sim moves out of an…
waleedlatif1 Nov 10, 2026
8a2f826
fix(uploads): read a moved organization attachment through the worksp…
waleedlatif1 Nov 10, 2026
d37ffc4
fix(organizations): move a retired personal organization's chats into…
waleedlatif1 Nov 10, 2026
c8b1601
fix(scripts): move personal organization chats to the owner's workspa…
waleedlatif1 Nov 10, 2026
641cbd9
refactor(chat): keep the cited Sim document link builder and parser i…
waleedlatif1 Nov 10, 2026
f06d2e6
Merge branch 'wip/fx4-join' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
9d33529
chore(tool-registry): raise the eight rows the join path grows by cre…
waleedlatif1 Nov 10, 2026
98e140d
fix(chat): read a workspace chat's own attachments when its workspace…
waleedlatif1 Nov 10, 2026
ca5bf49
fix(chat): answer Stop to a run whose chat changed scope after it was…
waleedlatif1 Nov 10, 2026
87e1866
fix(chat): keep files read's principal narrowed inside the workspace …
waleedlatif1 Nov 10, 2026
92302ca
fix(organizations): take a personal organization's workspace locks be…
waleedlatif1 Nov 10, 2026
c270d17
fix(organizations): move personal-organization members into the insta…
waleedlatif1 Nov 10, 2026
ce9ffbf
fix(admin): refuse personal organizations on the Admin API team-confi…
waleedlatif1 Nov 10, 2026
8120951
fix(admin): bill and list personal organizations as their owner's in …
waleedlatif1 Nov 10, 2026
44c81cf
fix(auth): delete the personal organization when the admin plugin rem…
waleedlatif1 Nov 10, 2026
7aa0937
fix(organizations): record who changed a personal organization, not w…
waleedlatif1 Nov 10, 2026
11a2e76
Merge branch 'wip/fx4-chatscope' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
0e7b8ea
fix(chat): read only linked cited sources, name the document query's …
waleedlatif1 Nov 10, 2026
a5ca4f4
Merge branch 'wip/fx4-lifecycle' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
a3fe5d0
test(organizations): pass the acting party in the merged suites and p…
waleedlatif1 Nov 10, 2026
849a830
chore(baselines): raise the organization layout and root rows for the…
waleedlatif1 Nov 10, 2026
51ef2c0
feat(mothership): name the workspace a chat's sends need on its detail
waleedlatif1 Nov 10, 2026
299a1ef
fix(extension): send and stop an opened workspace chat under its own …
waleedlatif1 Nov 10, 2026
7692c7e
docs(api): keep the getting-started code example the docs compatibili…
waleedlatif1 Nov 10, 2026
bdad787
fix(platform): restore the example credential page's tool permissions…
waleedlatif1 Nov 10, 2026
8176795
fix(platform): say why nothing connects in Emir's empty state, not a …
waleedlatif1 Nov 10, 2026
373b6dc
fix(platform): give live suggested skills Emir's skill editor
waleedlatif1 Nov 10, 2026
97a72b1
fix(platform): list live skills and apps in Emir's directory groups a…
waleedlatif1 Nov 10, 2026
4ab2cec
feat(platform): hold design-pending workspace tabs behind a platform-…
emir-karabeg Nov 10, 2026
82a72bb
feat(home): hold Needs your attention and Workspaces behind platform-…
emir-karabeg Nov 10, 2026
ecddcdf
docs(platform): record the platform-preview flag as the hold for desi…
emir-karabeg Nov 10, 2026
d12d87f
refactor(platform): ask whether a held workspace tab is shown in its …
emir-karabeg Nov 10, 2026
33bf328
fix(platform): give the live skill page Emir's heading, field and del…
waleedlatif1 Nov 10, 2026
9dac3b9
ci(platform): run platform-design when the catalog, credential, orche…
waleedlatif1 Nov 10, 2026
3a5fe93
test(billing): give the Sim Mailer entitlement fixtures the team orga…
waleedlatif1 Nov 10, 2026
b7db841
test(billing): give the enterprise BYOK fixture workspace the team or…
waleedlatif1 Nov 10, 2026
0cdca5a
test(uploads): create the workspace table the upload-session sweep no…
waleedlatif1 Nov 10, 2026
1512521
test(types): call the mothership events route with its context, type …
waleedlatif1 Nov 10, 2026
52fa042
Merge commit 'd12d87f406' into wip/fx7-ci-e2e
waleedlatif1 Nov 10, 2026
c58316a
Merge branch 'wip/fx7-ci-unit' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
443684b
fix(platform): read text fields at 16px on touch phones so iOS does n…
waleedlatif1 Nov 10, 2026
59753dc
test(e2e): assert the EMCN composer and menu anatomy in the mobile suite
waleedlatif1 Nov 10, 2026
03cf868
test(e2e): expect no Reconnect on an account whose provider has no OA…
waleedlatif1 Nov 10, 2026
416a691
test(extension): assert chat access by copilot.use and workspace chat…
waleedlatif1 Nov 10, 2026
4a88ee7
test(e2e): assert Search access by copilot.use and a Search field edi…
waleedlatif1 Nov 10, 2026
1039d61
test(platform): follow members onto Home and stop waiting on a compos…
waleedlatif1 Nov 10, 2026
6161104
test(platform): expect a Recents mark only on a provider chip
waleedlatif1 Nov 10, 2026
5f462da
test(platform): delete a seeded person's projects before their person…
waleedlatif1 Nov 10, 2026
fa41ebd
test(platform): type the connected member's seed parameters and find …
waleedlatif1 Nov 10, 2026
a86095a
test(platform): assert where saved upgrade, request and outside-organ…
waleedlatif1 Nov 10, 2026
c90385b
test(extension): narrow the chat access re-read's response before rea…
waleedlatif1 Nov 10, 2026
80726f9
Merge remote-tracking branch 'origin/improvement/platform-core-chat' …
waleedlatif1 Nov 10, 2026
52b73ae
Merge branch 'wip/fx7-ci-e2e' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
c037660
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 10, 2026
1bf7edd
fix(platform): list a member integration the workspace catalog also h…
waleedlatif1 Nov 10, 2026
d151bf4
test(org): read a route as finished only once it hydrated and its chu…
waleedlatif1 Nov 10, 2026
9fc8b50
test(org): page the rail's Chats section to find a member's agent chat
waleedlatif1 Nov 10, 2026
911cd58
test(platform): seed the disconnecting member's enrollment with a rea…
waleedlatif1 Nov 10, 2026
01dd015
fix(navigation): land an account in no organization on its provisione…
waleedlatif1 Nov 10, 2026
62be800
fix(chat): order chats with the same activity time the same way on ev…
waleedlatif1 Nov 10, 2026
41fa14d
fix(organizations): join the instance organization only at signup so …
waleedlatif1 Nov 10, 2026
6972f7c
test(assistant-actions): find a reasoned empty integration by its emp…
waleedlatif1 Nov 10, 2026
4d5a75b
test(org-redesign): page the Chats section to the chat each sidebar c…
waleedlatif1 Nov 10, 2026
99d0e74
test(platform-live): reveal seeded chats through See more in one shar…
waleedlatif1 Nov 10, 2026
4c82d11
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 10, 2026
a1989a5
fix(chat): stop writing a table-view URL param nothing reads
waleedlatif1 Nov 10, 2026
634bdcc
fix(billing): attach a Team buyer's workspaces once, and never fail t…
waleedlatif1 Nov 10, 2026
f4bcc3b
fix(platform): restore Emir's TextArea and compose it for the Forks s…
waleedlatif1 Nov 10, 2026
39821b8
fix(organization-secrets): withhold shared Generic Secrets from membe…
waleedlatif1 Nov 10, 2026
87b8f74
fix(integrations): build directory links from the nuqs view, not a se…
waleedlatif1 Nov 10, 2026
278712b
refactor(platform): move route view-model types under platform/lib/da…
waleedlatif1 Nov 10, 2026
3ca8d63
refactor(logs): open a run's workflow through the one shared resolveL…
waleedlatif1 Nov 10, 2026
2ca08cf
test(settings): drop navigation tests pinning resolvers nothing renders
waleedlatif1 Nov 10, 2026
69dda2c
test(organization-accounts): delete the unused people hook and its tests
waleedlatif1 Nov 10, 2026
153deb0
test(organization-activity): drop the window-hold option no caller pa…
waleedlatif1 Nov 10, 2026
78f2c6d
test(navigation): delete the app-entry test that restates its mocks
waleedlatif1 Nov 10, 2026
2016124
test(admin): prove personal-organization refusals against real Postgres
waleedlatif1 Nov 10, 2026
5c4024b
fix(mothership-admin): parse admin reads once through contracts and k…
waleedlatif1 Nov 10, 2026
bcedddf
fix(file-viewer): draw the editor's / and @ menus on the composer's s…
waleedlatif1 Nov 10, 2026
8f50de4
fix(scripts): check placeholder paths and product routes in guidance,…
waleedlatif1 Nov 10, 2026
73b19d3
Merge branch 'wip/fx11-emir' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
7ac9788
fix(platform): write Search and the fixture theme through nuqs, not h…
waleedlatif1 Nov 10, 2026
3cb50b7
fix(access-control): derive the open permission group from its query
waleedlatif1 Nov 10, 2026
9344d3a
test(steering): prove steering reads and record-first sends against P…
waleedlatif1 Nov 10, 2026
a573f56
fix(queries): keep a list's placeholder within its workspace or organ…
waleedlatif1 Nov 10, 2026
10cd6c7
test(mothership-chat): drop outgoing-state cases the chat hook suite …
waleedlatif1 Nov 10, 2026
2b76ff4
fix(home): give Home's widget queries their own key root
waleedlatif1 Nov 10, 2026
f20ac3c
fix(credentials): refresh credential lists after a member change
waleedlatif1 Nov 10, 2026
7c6e5eb
docs(guidance): align rules and skills with the code they describe
waleedlatif1 Nov 10, 2026
160e499
test(mothership-chat): drop chat admission cases that only replay mocks
waleedlatif1 Nov 10, 2026
a3f5bbc
fix(browser): read omnibox suggestions through React Query
waleedlatif1 Nov 10, 2026
12fd0c2
test(assistant-actions): assert a withheld Search app leaves only the…
waleedlatif1 Nov 10, 2026
e611ef7
fix(scripts): state each Platform allowlist reason as the constraint …
waleedlatif1 Nov 10, 2026
8d50989
refactor(logs): keep resolveLogWorkflowId in the Platform logs seam
waleedlatif1 Nov 10, 2026
ba5c9d9
refactor(paste): mount one paste admission guard in both roots
waleedlatif1 Nov 10, 2026
7124f13
test(platform): delete the provider mount tests that replay their mocks
waleedlatif1 Nov 10, 2026
7ed0cb9
fix(workflows): drop effect-driven state in the terminal and code editor
waleedlatif1 Nov 10, 2026
9a702e0
test(platform): drop UI tests that assert query keys, hrefs and mock …
waleedlatif1 Nov 10, 2026
1619327
test(billing): drop assertions on query shape and forwarded arguments
waleedlatif1 Nov 10, 2026
67c6bf4
test(scripts): drop platform design cases the fixture runs already cover
waleedlatif1 Nov 10, 2026
5f4a2a3
fix(scripts): fail audits on missing roots and point platform-design …
waleedlatif1 Nov 10, 2026
2969d00
fix(settings): send an external workspace admin to that workspace's p…
waleedlatif1 Nov 10, 2026
44bf242
test(platform): keep the glue each UI test owns, asserting outcomes
waleedlatif1 Nov 10, 2026
37eb611
fix(platform): read render-time clocks and locales the same on server…
waleedlatif1 Nov 10, 2026
6d93c73
docs(api): drop the note on the removed non-strict api-validation check
waleedlatif1 Nov 10, 2026
ab4fbc0
docs(platform): fold the Platform docs into a run guide and the contract
waleedlatif1 Nov 10, 2026
9a45e01
fix(sidebar): delete the organization rail branch and the store's col…
waleedlatif1 Nov 10, 2026
b8f0177
fix(authz): derive workspace admin only from a team organization's ow…
waleedlatif1 Nov 10, 2026
9a8a1ae
fix(organizations): answer a refused personal-organization retirement…
waleedlatif1 Nov 10, 2026
ac3ad1e
fix(workspaces): refuse a personal organization as an admin move dest…
waleedlatif1 Nov 10, 2026
daa1ac1
fix(organizations): take personal-organization locks first on Enterpr…
waleedlatif1 Nov 10, 2026
cd521cb
fix(mothership): defer the chat rescope only on the worker's own miss…
waleedlatif1 Nov 10, 2026
627dde3
fix(billing): authorize a subscription transfer before reading the or…
waleedlatif1 Nov 10, 2026
53f682b
fix(byok): never entitle a personal organization on the cached execut…
waleedlatif1 Nov 10, 2026
06e044a
fix(organizations): read invitation availability from the deployment …
waleedlatif1 Nov 10, 2026
9003c38
fix(organizations): audit a personal organization deleted with its ow…
waleedlatif1 Nov 10, 2026
93bd974
fix(platform): stop rebuilding provider values on every render
waleedlatif1 Nov 10, 2026
3fec86f
Merge branch 'wip/fx11-guidance' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
02b6c6f
fix(canvas): bound the custom block image-icon cache and type it with…
waleedlatif1 Nov 10, 2026
5e63012
chore(cleanup): drop the dead editor chat-run path, chat store, and f…
waleedlatif1 Nov 10, 2026
1a50646
refactor(extension): move the org conversation under the extension an…
waleedlatif1 Nov 10, 2026
91350a2
Merge branch 'wip/platform-org-wiring' into wip/fx13-b
waleedlatif1 Nov 10, 2026
5ee1ea9
Merge branch 'wip/platform-org-wiring' into wip/fx13-d
waleedlatif1 Nov 10, 2026
8ff402e
refactor(platform): one sink-based paste guard, root consent store, f…
waleedlatif1 Nov 10, 2026
f65689b
refactor(settings): drop the never-used organization scope from accou…
waleedlatif1 Nov 10, 2026
aa7d858
Merge branch 'wip/platform-org-wiring' into wip/fx13-c
waleedlatif1 Nov 10, 2026
7017a60
Merge branch 'wip/platform-org-wiring' into wip/fx11-hygiene
waleedlatif1 Nov 10, 2026
d7809a5
Merge wip/platform-org-wiring into wip/fx13-e
waleedlatif1 Nov 10, 2026
27a6643
Merge branch 'wip/platform-org-wiring' into wip/fx10-backend
waleedlatif1 Nov 10, 2026
b5c03ee
test(chat,desktop): run steering and registration waits on the fake c…
waleedlatif1 Nov 10, 2026
1330f4b
Merge branch 'wip/platform-org-wiring' into wip/fx12-tests-unit
waleedlatif1 Nov 10, 2026
f98e9e1
test(platform-live): seed or put back what each live check changes
waleedlatif1 Nov 10, 2026
d522d4c
test(platform-live): prove platform-preview, admin concealment, org-l…
waleedlatif1 Nov 10, 2026
0ea50bc
test(search): seed the Search view test's cache by its literal keys
waleedlatif1 Nov 10, 2026
1c9c78f
test(platform): time the copy dwell on the page clock and compare sty…
waleedlatif1 Nov 10, 2026
b76f6ac
test(platform-live): move the checks only org-redesign had into the l…
waleedlatif1 Nov 10, 2026
c1354a7
test(organizations): name the instance organization fixture without M…
waleedlatif1 Nov 10, 2026
bdf1e45
test(e2e): admit one extension workspace-chat turn for real, and keep…
waleedlatif1 Nov 10, 2026
6fa6641
Merge branch 'wip/platform-org-wiring' into wip/fx12-tests-e2e
waleedlatif1 Nov 10, 2026
b2a2063
test: trim restating cases and name tests after their owners
waleedlatif1 Nov 10, 2026
af09950
fix(platform): read the minute clock through the data seam and drop e…
waleedlatif1 Nov 10, 2026
e965db1
test(desktop): restore the panel focus tracker's tests
waleedlatif1 Nov 10, 2026
720ac70
Merge branch 'wip/fx12-tests-e2e' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
b57dd84
test(sso): pin how an edit keeps or replaces the OIDC client secret
waleedlatif1 Nov 10, 2026
cb712d2
refactor(mothership-chat): drop never-passed chat, input, and use-cha…
waleedlatif1 Nov 10, 2026
84aea7c
fix(secrets): overlay edits on the saved secrets instead of syncing p…
waleedlatif1 Nov 10, 2026
a9b6040
refactor(settings): remove the workspace settings plane and never-pas…
waleedlatif1 Nov 10, 2026
f3aa08e
test(admin-api): prove the operator key reaches only operations that …
waleedlatif1 Nov 10, 2026
3e67e5e
Merge branch 'wip/fx11-hygiene' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
e1c0311
test(uploads): refuse an Assistant image asked for under another work…
waleedlatif1 Nov 10, 2026
b3bde58
refactor(platform): collapse one-call aliases, route draft keys throu…
waleedlatif1 Nov 10, 2026
1ef722e
refactor(platform): inline row-link and preference factories, chat re…
waleedlatif1 Nov 10, 2026
c73a517
Merge branch 'wip/platform-org-wiring' into wip/fx13-deadcode
waleedlatif1 Nov 10, 2026
27ce26d
refactor(table): delete the unread table view-pin store and its writers
waleedlatif1 Nov 10, 2026
391d2a9
Merge branch 'wip/fx13-e' into wip/fx13-deadcode
waleedlatif1 Nov 10, 2026
136353d
test(billing): prove a failed Team acceptance leaves the personal org…
waleedlatif1 Nov 10, 2026
34284d3
chore(cleanup): reduce Resource to the table the logs preview renders…
waleedlatif1 Nov 10, 2026
729576c
chore(cleanup): drop unused global CSS tokens, editor connections hei…
waleedlatif1 Nov 10, 2026
f9e1074
Merge branch 'wip/fx13-b' into wip/fx13-deadcode
waleedlatif1 Nov 10, 2026
9744849
test(billing): check a personal organization's retention follows a pa…
waleedlatif1 Nov 10, 2026
05b3893
chore(cleanup): drop unreferenced exports, query keys, and the mcp ba…
waleedlatif1 Nov 10, 2026
80b69f4
chore(cleanup): remove internal API routes with no client
waleedlatif1 Nov 10, 2026
2e05094
Merge branch 'wip/fx13-a' into wip/fx13-deadcode
waleedlatif1 Nov 10, 2026
b083a23
test(memory): prove a personal workspace chat's graph against Postgres
waleedlatif1 Nov 10, 2026
b2bec62
refactor: delete or unexport exports only tests reached
waleedlatif1 Nov 10, 2026
74751e6
test(run-control): prove runs that outlive their chat's scope against…
waleedlatif1 Nov 10, 2026
a38845f
test(home): drive the merged inbox through the real email read
waleedlatif1 Nov 10, 2026
24a93e7
refactor: unexport types the cleanup left without importers
waleedlatif1 Nov 10, 2026
1eb97d0
Merge branch 'wip/fx13-c' into wip/fx13-deadcode
waleedlatif1 Nov 10, 2026
607b99e
test(organizations): make the kept-object cleanup case able to fail
waleedlatif1 Nov 10, 2026
2e91d93
fix: inline the search assistant draft slot after merging the draft-k…
waleedlatif1 Nov 10, 2026
4346df8
test(organizations): clean up queued events and wait on the right loc…
waleedlatif1 Nov 10, 2026
c3429c7
test(mentions): remove the ranking case's workflows when it ends
waleedlatif1 Nov 10, 2026
d94bbba
docs(settings): drop resource-row props and tile fill the cleanup rem…
waleedlatif1 Nov 10, 2026
de31123
chore: shrink ratchet baselines after the dead-code sweep
waleedlatif1 Nov 10, 2026
fb4387c
test(chats): prove the chat list breaks updatedAt ties by id in Postgres
waleedlatif1 Nov 10, 2026
2a4eff3
test(connected-accounts): prove workspace grants against the real pol…
waleedlatif1 Nov 10, 2026
edff8e0
test(organizations): refuse subscription transfers and member limits …
waleedlatif1 Nov 10, 2026
bd8d42f
chore(tests): drop exports the deleted settings resolvers left behind…
waleedlatif1 Nov 10, 2026
6871b73
Merge branch 'wip/platform-org-wiring' into wip/fx12-tests-unit
waleedlatif1 Nov 10, 2026
add4534
fix(compare): point the file-sharing source at the share modal's new …
waleedlatif1 Nov 10, 2026
ffde031
fix(workflows): fill the canvas block picker and point Add Block at t…
waleedlatif1 Nov 10, 2026
2b9f12a
Merge branch 'wip/fx14-canvas' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
4410335
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 10, 2026
edf1bc2
test(workflows): prove Add Block and Search Blocks focus the toolbar …
waleedlatif1 Nov 10, 2026
7de8deb
fix(integrations): keep fixture integration edits above the shell's p…
waleedlatif1 Nov 10, 2026
a538bd9
test(platform-live): sign out before signing in as another person
waleedlatif1 Nov 10, 2026
85e7430
test(platform-live): seed UUID workspaces and name the extension the …
waleedlatif1 Nov 10, 2026
80801f1
test(project-files): read the realtime proof's new file through its c…
waleedlatif1 Nov 10, 2026
ade7c61
test(browser-extension): make the workspace-chat refusal check able t…
waleedlatif1 Nov 10, 2026
c85d67e
test(assistant-actions): expect a disabled Connect integration on una…
waleedlatif1 Nov 10, 2026
ba718d8
Merge branch 'wip/fx16-http' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
9310074
fix(integrations): offer an OAuth connect only for a provider id the …
waleedlatif1 Nov 10, 2026
75e711a
fix(mothership): answer a chat for an unreachable workspace with 404,…
waleedlatif1 Nov 10, 2026
ffaf52c
test(browser-extension): send the refused follow-up to the server dir…
waleedlatif1 Nov 10, 2026
f2e285c
fix(organizations): keep members removed from the instance organizati…
waleedlatif1 Nov 10, 2026
c62705a
refactor(workflow-editor): remove the dead Copilot diff overlay
waleedlatif1 Nov 10, 2026
e4586a8
fix(compare): claim only deployment rollback now that Copilot edits a…
waleedlatif1 Nov 10, 2026
918252f
test(platform): stop waiting for hydration once a redirect has left t…
waleedlatif1 Nov 10, 2026
008a58a
Merge branch 'wip/fx17-backfill-removed' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
e40acfb
test(org-redesign): give a quiet page the content deadline to show te…
waleedlatif1 Nov 10, 2026
8584043
test(platform-live): steer once the turn is streaming, not as soon as…
waleedlatif1 Nov 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
21 changes: 12 additions & 9 deletions .agents/skills/add-block/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ path). A subblock whose meaning changes based on what the string looks like is i
about, forces the params function to sniff the value, and makes the field's type meaningless. Give
each alternative its own subblock outside the pair:

```typescript
```typescript illustrative
// ✓ Good — the pair is "a file"; other sources are their own fields
{ id: 'mediaFile', type: 'file-upload', canonicalParamId: 'media', mode: 'basic' },
{ id: 'mediaFileRef', type: 'short-input', canonicalParamId: 'media', mode: 'advanced' },
Expand Down Expand Up @@ -377,7 +377,7 @@ inputs: {

For multiple file uploads:

```typescript
```typescript illustrative
{
id: 'attachments',
title: 'Attachments',
Expand Down Expand Up @@ -660,7 +660,7 @@ outputs: {

When creating V2 blocks (alongside legacy V1):

```typescript
```typescript illustrative
// V1 Block - mark as legacy
export const ServiceBlock: BlockConfig = {
type: 'service',
Expand Down Expand Up @@ -700,7 +700,7 @@ export const ServiceV2Block: BlockConfig = {

Register the block in `apps/sim/blocks/registry-maps.ts` — add the import and an entry to each map alphabetically:

```typescript
```typescript illustrative
import { ServiceBlock, ServiceBlockMeta } from '@/blocks/blocks/{service}'

export const BLOCK_REGISTRY: Record<string, BlockConfig> = {
Expand All @@ -716,7 +716,7 @@ export const BLOCK_META_REGISTRY: Record<string, BlockMeta> = {

## Complete Example

```typescript
```typescript illustrative
import { ServiceIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
Expand Down Expand Up @@ -814,7 +814,7 @@ export const ServiceBlock: BlockConfig = {

If the service supports webhooks, connect the block to its triggers.

```typescript
```typescript illustrative
import { getTrigger } from '@/triggers'

export const ServiceBlock: BlockConfig = {
Expand Down Expand Up @@ -963,7 +963,9 @@ But if the same change also adds, edits **or removes** a tool, run `bun run gene

A visible integration block does require the generated integration catalog and docs to be refreshed:
`bun run generate:tool-metadata` (only when a tool changed), `bun run scripts/generate-docs.ts`,
`bun run generate:deployment-config`, then `bun run check:audits`. Also run
`bun run generate:deployment-config`, `bun scripts/sync-platform-integration-metadata.ts` (the
Platform integration catalog, checked by `check:platform-integration-metadata`), then
`bun run check:audits`. Also run
`bun run apps/sim/scripts/check-block-registry.ts origin/staging` (CI runs it outside `check:audits`). Commit the
full generator output. For what each check verifies, see the `validate-integration` skill →
Regenerate Derived Artifacts.
Expand All @@ -989,6 +991,7 @@ Regenerate Derived Artifacts.
- [ ] If any tool was added, changed or removed alongside the block: ran `bun run generate:tool-metadata` and committed the artifacts
- [ ] Ran `bun run scripts/generate-docs.ts`, reviewed the generated diff, and committed the integration catalog changes
- [ ] `bun run check:integration-catalog` passes
- [ ] Ran `bun scripts/sync-platform-integration-metadata.ts` and committed its output; `bun run check:platform-integration-metadata` passes
- [ ] `bun run check:docs` passes (CI gate — fails on any stale generated docs page)
- [ ] If icon missing: asked user to provide SVG
- [ ] If triggers exist: `triggers` config set, trigger subBlocks spread
Expand Down Expand Up @@ -1028,7 +1031,7 @@ A sub-block gets its choices from exactly one of two places. There is no third.
`apps/sim/lib/selectors/server/internal.ts`. Point the sub-block at that key. All remote selectors
execute through `selectors.execute`; never add a client provider module or selector-only fetch route.

```ts
```ts illustrative
{ id: 'triggerCredentials', type: 'oauth-input', canonicalParamId: 'oauthCredential', mode: 'trigger' },
{ id: 'labelIds', type: 'dropdown', multiSelect: true,
selectorKey: 'gmail.labels', dependsOn: ['triggerCredentials'], mode: 'trigger' },
Expand All @@ -1045,7 +1048,7 @@ legacy source id must be retained.

**`options` — everything else.** A static array, or a pure function of the block's own values for a list that narrows to a sibling's selection. No I/O.

```ts
```ts illustrative
options: (params) => {
const model = params?.values.model
return typeof model === 'string' ? effortsFor(model) : DEFAULT_EFFORTS
Expand Down
10 changes: 5 additions & 5 deletions .agents/skills/add-column-type/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Decide what a cell literally holds in `user_table_rows.data` (JSONB). This drive

## Step 2: Add the icon

Create `packages/emcn/src/icons/type-{name}.tsx`, copying the geometry conventions of its siblings exactly:
Create `packages/emcn-legacy/src/icons/type-{name}.tsx`, copying the geometry conventions of its siblings exactly:

```tsx
import type { SVGProps } from 'react'
Expand Down Expand Up @@ -82,7 +82,7 @@ export function Type{Pascal}(props: SVGProps<SVGSVGElement>) {

- `viewBox='-1.75 -1.5 24 24'` is the **`type-*` family** value, not the set-wide default. Match the family.
- Center the glyph on the viewBox's optical center (**y = 10.5**, **x = 10.25**) — every sibling does, and a few tenths off is visible at `size-[14px]`.
- Export alphabetically **by component name** in `packages/emcn/src/icons/index.ts`.
- Export alphabetically **by component name** in `packages/emcn-legacy/src/icons/index.ts`.

## Step 3: Write the type file

Expand Down Expand Up @@ -118,7 +118,7 @@ Prefer set-based SQL. When the transform genuinely needs JS (`currency`'s separa

- **Import cycles.** `column-types/select.ts` imports `lib/table/select-values.ts`, so `select-values.ts` must **not** import the registry — that closes a cycle and fails at module init. Inside a type's own helper module the string literal is the implementation, not a config leak.
- **The client-safe boundary.** `registry.ts` and everything it imports must stay free of `@sim/db`, `drizzle-orm`, and `next/server` — the tables grid imports it directly. A React icon is fine (it's a component *reference*, never called server-side). Only `registry.server.ts` may touch drizzle.
- **Don't re-export the registry from `@/lib/table`.** Dozens of server modules import that barrel; routing this through it pulls `@sim/emcn/icons` into all of them. Deep-import `@/lib/table/column-types`.
- **Don't re-export the registry from `@/lib/table`.** Dozens of server modules import that barrel; routing this through it pulls `@sim/emcn-legacy/icons` into all of them. Deep-import `@/lib/table/column-types`.
- **`import.ts`'s `coerceValue` is a SECOND write path and is not opt-in.** Importing into a column of your type always hits it, and its `default` arm silently `String(value)`s — so a missing `case` stores text in a column whose `jsonbCast` is numeric, and then every filter and sort on that column errors in Postgres. Add a `case`, even though the switch compiles without one. (It is deliberately separate from the registry's `coerce`: an import wants an unparseable value to survive as its raw string so the row error can name it.)
- **CSV inference** is an ordered heuristic in `import.ts`, deliberately not registry-driven. A new type is not inferred from a CSV unless you extend `inferColumnType` — usually you should not, since inference cannot supply configuration (an option set, a currency code).

Expand All @@ -134,7 +134,7 @@ Registering the *type* is compiler-enforced. Registering its *metadata* is not,
| `lib/api/contracts/v2/tables.ts` and `lib/table/application/columns.ts` — the same slots for the v2 API and its use cases | the v2 API silently drops it |
| `columns/service.ts` `addTableColumn` param type | callers cannot pass it |
| A metadata-only update in `lib/table/columns/service.ts` (`updateColumnCurrency` is the model) + a branch in `performUpdateTableColumn` in `lib/table/orchestration/columns.ts` | changing it on an existing column is a silent 200 no-op |
| `column-config-sidebar.tsx` | no UI to set it |
| `column-config.tsx` | no UI to set it |
| `table-grid.tsx` delete-column undo + `use-table-undo.ts` restore | undo silently resets it to the default |

`normalizeColumn`, `buildConvertedColumn`, and the undo snapshot read `TYPE_SPECIFIC_COLUMN_KEYS` generically, so those three are already zero-edit.
Expand All @@ -156,6 +156,6 @@ Copy `currency`'s service function and orchestration branch.

1. **`cd apps/sim && bun run type-check`** — must be clean. If any file *outside* `column-types/` errors, that file has a hardcoded type list; fix it to read the registry.
2. **Grep for leaks** — `grep -rnE "(===|!==) '{id}'|case '{id}':" apps/sim --include='*.ts' --include='*.tsx' | grep -v column-types/`. (All three forms: a plain `!==` and a `case` are how half of `currency`'s real branches are written.) Hits are expected; judge each. A hit is fine when it mounts a specific React component or encodes a genuinely one-off behavior (`json`'s mono textarea, `date`'s timezone-aware parsing). A hit is a **leak** when it restates something the registry could answer — an icon, a label, a colour, an operator set, a cast, a coercion. Leaks get a registry field, not a new branch.
3. **Run the suite** — `bun run --cwd apps/sim test lib/table 'app/workspace/[workspaceId]/tables' lib/api app/api/table app/api/v1`. Existing tests must pass **unchanged**; needing to edit one means you changed behavior for the other types.
3. **Run the suite** — `bun run --cwd apps/sim test lib/table components/tables lib/api app/api/table app/api/v1/tables app/api/v2/tables`. Existing tests must pass **unchanged**; needing to edit one means you changed behavior for the other types.
4. **`bun run lint`, `bun run check:api-validation:strict`, `bun run check:client-boundary`** from the repo root.
5. **Exercise it in the running app** on a table with one column of every type: create, edit inline / in the expanded popover / in the row modal, paste from a spreadsheet, filter, sort, convert to and from other types, export CSV, undo a column delete.
2 changes: 1 addition & 1 deletion .agents/skills/add-connector/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,7 @@ contentHash: `confluence:${page.id}:${page.version.number}`

### Implementation Pattern

```typescript
```typescript illustrative
// 1. Create a stub function (sync, no API calls)
function fileToStub(file: ServiceFile): ExternalDocument {
return {
Expand Down
10 changes: 5 additions & 5 deletions .agents/skills/add-enrichment/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ Why it matters: the cascade runner only bills (and only reads `output.cost.total

Create `apps/sim/enrichments/{id}/{id}.ts` and a barrel `index.ts`. Mirror the entries registered in `enrichments/registry.ts`.

```typescript
import { SomeIcon } from '@sim/emcn/icons'
```typescript illustrative
import { SomeIcon } from '@sim/emcn-legacy/icons'
import { filterUndefined } from '@sim/utils/object'
import { normalizeDomain, splitName, str, toolProvider } from '@/enrichments/providers'
import type { EnrichmentConfig } from '@/enrichments/types'
Expand Down Expand Up @@ -105,21 +105,21 @@ export const myEnrichment: EnrichmentConfig = {
}
```

```typescript
```typescript illustrative
// apps/sim/enrichments/{id}/index.ts
export { myEnrichment } from './my-enrichment'
```

Rules:
- Keep the file **client-safe**: import only `@sim/emcn/icons`, `@sim/utils/*`, `@/enrichments/providers`, and the types. **Never import `@/tools`** here — the runner does the tool call.
- Keep the file **client-safe**: import only `@sim/emcn-legacy/icons`, `@sim/utils/*`, `@/enrichments/providers`, and the types. **Never import `@/tools`** here — the runner does the tool call.
- `buildParams` returns `null` when inputs are insufficient (provider skipped). `mapOutput` returns `null`/empty for a miss (falls through). Use `filterUndefined` when assembling optional tool params; coerce numbers explicitly (don't pass `''` to number outputs).
- Output `id`s are the keys `mapOutput` returns; output `name`s are the default column names (the user can rename them in the config).

## Step 4: Register it

In `apps/sim/enrichments/registry.ts`, import and add the entry (catalog order is registration order):

```typescript
```typescript illustrative
import { myEnrichment } from '@/enrichments/{id}'

export const ENRICHMENT_REGISTRY: EnrichmentRegistry = {
Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/add-feature-flag/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Critically, **none of this is expressible in code** — gating (especially `admi

2. **Define the flag.** Add one entry to the `FEATURE_FLAGS` registry in `apps/sim/lib/core/config/feature-flags.ts`. Each entry is the flag's whole definition — name (kebab-case key), `description`, and the `fallback` secret consulted when AppConfig isn't the source of truth (truthy ⇒ on globally):

```ts
```ts illustrative
const FEATURE_FLAGS = {
'<flag-name>': {
description: '<what this gates>',
Expand Down
14 changes: 7 additions & 7 deletions .agents/skills/add-hosted-key/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ When a tool has hosted key support, Sim provides its own API key if the user has
| 2 | Research the API's pricing and rate limits | API docs / pricing page (before writing any code) |
| 3 | Add `hosting` config to the tool | `tools/{service}/{action}.ts` |
| 4 | Hide API key field when hosted | `blocks/blocks/{service}.ts` |
| 5 | Add to BYOK settings UI | BYOK settings component (`byok.tsx`) |
| 5 | Add to BYOK settings UI | BYOK settings `providers.ts` |
| 6 | Summarize pricing and throttling comparison | Output to user (after all code changes) |

## Step 1: Register the BYOK Provider ID
Expand Down Expand Up @@ -80,7 +80,7 @@ When choosing values for `requestsPerMinute` and any dimension limits:

Add a `hosting` object to the tool's `ToolConfig`. This tells the execution layer how to acquire hosted keys, calculate cost, and rate-limit.

```typescript
```typescript illustrative
hosting: {
envKeyPrefix: 'YOUR_SERVICE_API_KEY',
apiKeyParam: 'apiKey',
Expand All @@ -107,14 +107,14 @@ hosting: {

Keys use a numbered naming pattern driven by a count env var:

```
```text illustrative
YOUR_SERVICE_API_KEY_COUNT=3
YOUR_SERVICE_API_KEY_1=sk-...
YOUR_SERVICE_API_KEY_2=sk-...
YOUR_SERVICE_API_KEY_3=sk-...
```

The `envKeyPrefix` value (`YOUR_SERVICE_API_KEY`) determines which env vars are read at runtime. Adding more keys only requires bumping the count and adding the new env var.
The `envKeyPrefix` value (`<YOUR_SERVICE>_API_KEY`) determines which env vars are read at runtime. Adding more keys only requires bumping the count and adding the new env var.

### Pricing: Prefer API-Reported Cost

Expand Down Expand Up @@ -187,7 +187,7 @@ transformResponse: async (response: Response) => {

For async/polling tools, capture it in `postProcess` when the job completes:

```typescript
```typescript illustrative
if (jobData.status === 'completed') {
result.output = {
data: jobData.data,
Expand Down Expand Up @@ -253,9 +253,9 @@ To exclude multiple operations, use an array: `{ field: 'operation', value: ['op

## Step 5: Add to the BYOK Settings UI

Add an entry to the `PROVIDERS` array in the BYOK settings component so users can bring their own key. You need the service icon from `components/icons.tsx`:
Add an entry to the `PROVIDERS` array in the BYOK settings `providers.ts` so users can bring their own key. You need the service icon from `components/icons.tsx`:

```typescript
```typescript illustrative
{
id: 'your_service',
name: 'Your Service',
Expand Down
8 changes: 5 additions & 3 deletions .agents/skills/add-integration/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ export const BLOCK_META_REGISTRY: Record<string, BlockMeta> = {

### Trigger Registry (`apps/sim/triggers/registry.ts`) - If triggers exist

```typescript
```typescript illustrative
// Add import (alphabetically)
import {
{service}EventATrigger,
Expand Down Expand Up @@ -387,7 +387,9 @@ a resolvable capability must fail validation; an independent service account use
## Step 8: Generate and Validate the Catalog

Run `bun run generate:tool-metadata`, `bun run scripts/generate-docs.ts`,
`bun run generate:deployment-config`, then `bun run check:audits` (see the `validate-integration`
`bun run generate:deployment-config`, `bun scripts/sync-platform-integration-metadata.ts` (the
Platform integration catalog; `check:platform-integration-metadata` is in `check:audits`), then
`bun run check:audits` (see the `validate-integration`
skill → Regenerate Derived Artifacts for the full list and what each check verifies).

The docs generator creates `apps/docs/content/docs/integrations/{service}.mdx` — one page per service carrying the block's Actions and, if it has one, its Triggers section. Never hand-edit generated pages; the only editable region is the `{/* MANUAL-CONTENT */}` block (see `scripts/README.md`).
Expand Down Expand Up @@ -616,7 +618,7 @@ tools: {

#### 3. Define and register the in-process operation

```typescript
```typescript illustrative
export const {service}UploadTool: InternalToolConfig<Params, Response> = {
id: '{service}_upload',
// ...
Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/add-managed-cli/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ bun run --cwd apps/sim test \
lib/execution/remote-sandbox/cli-tools-boundary.test.ts \
lib/execution/remote-sandbox/spec.test.ts \
lib/execution/remote-sandbox/resolve.test.ts \
'app/workspace/[workspaceId]/settings/components/sandboxes/utils.test.ts'
'components/settings/sections/sandboxes/utils.test.ts'
```

From the repository root:
Expand Down
Loading
Loading