Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1746 commits
Select commit Hold shift + click to select a range
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
a37efa7
fix(chat): give a personal organization's chats their member's person…
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
0171c64
Merge branch 'wip/fx17-memory-scope' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
a69c99d
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 10, 2026
8cc1f19
fix(deps): restore staging's node-gyp undici 6.29.1 and swc libc fiel…
waleedlatif1 Nov 10, 2026
9055ce9
fix(organizations): keep the moved-chats workspace out of a team join…
waleedlatif1 Nov 10, 2026
a45d9dd
refactor(secrets): one SecretsEditor for organization, member and wor…
waleedlatif1 Nov 10, 2026
aafa936
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 10, 2026
b7544ac
fix(platform): offer no service-account setup the Platform dialog can…
waleedlatif1 Nov 10, 2026
f816223
test(platform): follow the catalog's Fireflies API key in the fixture…
waleedlatif1 Nov 10, 2026
4140cff
refactor(trace): one span inspector and payload for the table and Log…
waleedlatif1 Nov 10, 2026
c11f278
revert(search): restore Emir's Search surface and source row markup
waleedlatif1 Nov 10, 2026
b818ddf
revert(people): restore Emir's directory, import and directory sync m…
waleedlatif1 Nov 10, 2026
e4abd3f
revert(emcn-docs): drop the post-freeze tabIndex props from the stagi…
waleedlatif1 Nov 10, 2026
43474c2
revert(emcn): restore Emir's LoadMoreFooter
waleedlatif1 Nov 10, 2026
59e0dee
fix(chat): hold dashboard tabs with platform-preview and fill the pan…
waleedlatif1 Nov 10, 2026
aeb09f1
chore(emcn): fingerprint stylesheet values and source files in the fr…
waleedlatif1 Nov 10, 2026
0a04964
refactor(rename): one RenameDialog for folders, chats, workspaces and…
waleedlatif1 Nov 10, 2026
9cf6f11
fix(projects): grant inherited organization admin only in team organi…
waleedlatif1 Nov 10, 2026
68aa04d
refactor(skills): one SkillFields form for skill details, suggested s…
waleedlatif1 Nov 10, 2026
54038fe
fix(secrets): pass the workspace scope's props by name
waleedlatif1 Nov 10, 2026
065f4be
test(platform): wait for the content and writes the live checks asser…
waleedlatif1 Nov 10, 2026
79dee47
refactor(chat): keep fixture panels and the fixture session out of th…
waleedlatif1 Nov 10, 2026
177cd43
test(platform): restore the unsaved-draft regression cases next to th…
waleedlatif1 Nov 10, 2026
3f769ba
test(platform): name the Fireflies field inline so the product tree i…
waleedlatif1 Nov 10, 2026
b878467
Merge branch 'wip/fx20-token-sa' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
68ea285
test(platform): page cleanup past one batch, and keep a title's worst…
waleedlatif1 Nov 10, 2026
a5bbbc7
fix(workflows): route Fix in Chat through the chat handoff and regist…
waleedlatif1 Nov 10, 2026
4057a5a
fix(deploy): show the Chat tab whatever the deployment's chat module
waleedlatif1 Nov 10, 2026
86657e0
refactor(workflow-editor): one input mapping and one output picker
waleedlatif1 Nov 10, 2026
70d32b9
fix(workflows): leave Variables when Open Editor or Rename targets th…
waleedlatif1 Nov 10, 2026
624c5cc
fix(integrations): list collaborators' workspaces and 404 one that op…
waleedlatif1 Nov 10, 2026
15515a2
fix(logs): offer Export and the view switch in search, as legacy's lo…
waleedlatif1 Nov 10, 2026
8e29f0f
fix(integrations): offer a disabled Connect only when it explains som…
waleedlatif1 Nov 10, 2026
f7425f6
fix(undo): drop persisted undo entries for the removed diff operations
waleedlatif1 Nov 10, 2026
a8b0427
fix(integrations): settle the directory before painting and honor per…
waleedlatif1 Nov 10, 2026
b6c851f
refactor(integrations): use FailureNotice directly instead of the Que…
waleedlatif1 Nov 10, 2026
f0ed135
fix(workflows): gate edge deletion on edit access and remove dead edi…
waleedlatif1 Nov 10, 2026
ff231c8
docs(platform): mark parity rows Done only where a cited test proves …
waleedlatif1 Nov 10, 2026
8d03a2b
Merge branch 'wip/fx20-integrations' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
9c33c9c
Merge branch 'wip/fx20-editor' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
b5d8bc8
fix(platform): keep People's failed reads on FailureNotice and name L…
waleedlatif1 Nov 10, 2026
ffd48a0
Merge branch 'wip/fx20-emir' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
d8da7b3
test(org-redesign-e2e): wait for hydration after every document load …
waleedlatif1 Nov 10, 2026
35ef9cf
test(chat-steering-e2e): write the report first with a status, and fa…
waleedlatif1 Nov 10, 2026
6e4055b
test(platform): fail fixture geometry checks that would pass on a mis…
waleedlatif1 Nov 10, 2026
d452ac3
Merge branch 'wip/fx20-tests' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
61360c3
refactor(platform): drop never-varied props and inline single-consume…
waleedlatif1 Nov 10, 2026
c1a4bef
fix(canvas): follow the Platform theme in note code blocks and the co…
waleedlatif1 Nov 10, 2026
6624c2e
fix(billing): make team creation atomic, lock-ordered, and self-retrying
waleedlatif1 Nov 10, 2026
916bf09
fix(navigation): route upgrade, settings, chat, and retired-organizat…
waleedlatif1 Nov 10, 2026
2e40d70
fix(canvas): keep the code tokens with the canvas tokens, and the sec…
waleedlatif1 Nov 10, 2026
384149c
Merge branch 'wip/fx20-consolidate' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
faa847e
test: follow the join-sweep and conversion-lock changes in unit tests
waleedlatif1 Nov 10, 2026
c820b6f
fix(platform): reach the settings dirty store through the seam and ap…
waleedlatif1 Nov 10, 2026
78dc505
Merge branch 'wip/fx20-backend' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
df2d3d6
fix(platform): read who manages a workspace's plan through the seam
waleedlatif1 Nov 10, 2026
2ba7845
fix(platform): offer Leave on a workspace row the viewer can leave
waleedlatif1 Nov 10, 2026
b49d423
fix(platform): confirm destructive settings actions and close on succ…
waleedlatif1 Nov 10, 2026
9b44443
fix(platform): show failed reads with FailureNotice and Retry
waleedlatif1 Nov 10, 2026
2f77d89
fix(platform): small correctness fixes in tests, uploads, usage and logs
waleedlatif1 Nov 10, 2026
6dcc269
fix(platform): hide edit affordances from readers; Select all honors …
waleedlatif1 Nov 10, 2026
f32a30f
feat(credentials): add people to a credential in one request
waleedlatif1 Nov 10, 2026
0568700
Merge branch 'wip/fx20-states' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
42d2545
chore(credentials): keep the batch member cap file-local
waleedlatif1 Nov 10, 2026
7e04137
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 10, 2026
4323631
test(platform): read the sidebar locator outside the geometry poll
waleedlatif1 Nov 10, 2026
20bff2c
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 10, 2026
4c25110
feat(platform): set up AWS and Databricks credentials, keyless OIDC i…
waleedlatif1 Nov 10, 2026
4ef9e6e
fix(platform): restore Search's main landmark and hold the People imp…
waleedlatif1 Nov 10, 2026
3f85a70
fix(platform): follow the moved ChatPanelTrigger and the tests' curre…
waleedlatif1 Nov 10, 2026
5fcc8e9
test(platform): align the e2e checks with this round's deliberate pro…
waleedlatif1 Nov 10, 2026
4e634da
fix(integrations): offer Create skill and Connect MCP only to workspa…
waleedlatif1 Nov 10, 2026
59ce784
refactor(credentials): keep configuration descriptor field types modu…
waleedlatif1 Nov 10, 2026
ba51653
Merge branch 'wip/fx21-aws' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
708d170
fix(settings): confirm before removing a member from a workspace or r…
waleedlatif1 Nov 10, 2026
6925d1f
fix(credentials): show no member count while loading and a retry on a…
waleedlatif1 Nov 10, 2026
2478580
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 10, 2026
2c5ef4d
perf(logs): window the run list and refresh only its first page
waleedlatif1 Nov 10, 2026
465c626
fix(integrations): offer GitLab service accounts beside personal toke…
waleedlatif1 Nov 10, 2026
39c0535
fix(workspace): hide create controls from read-only members instead o…
waleedlatif1 Nov 10, 2026
bd99ab9
fix(docs,workspaces): render code samples without ligatures; drop the…
waleedlatif1 Nov 10, 2026
ef27257
perf(chats): list an organization's chats through indexed branches
waleedlatif1 Nov 10, 2026
863330a
fix(shell): apply the web shortcut guards to desktop menu commands an…
waleedlatif1 Nov 10, 2026
1bb3e8a
fix(search): report a failed Clear history and block a second clear w…
waleedlatif1 Nov 10, 2026
007c1a3
perf(credentials): read stored service-account blobs without the vali…
waleedlatif1 Nov 10, 2026
e0b2e88
fix(integrations): guard unsaved credential renames, take renames mad…
waleedlatif1 Nov 10, 2026
a9b4cd8
refactor(platform): read fixture query state through usePlatformHref …
waleedlatif1 Nov 10, 2026
f3085b5
fix(integrations): drop the duplicate discard dialogs skill and resou…
waleedlatif1 Nov 10, 2026
f7e857f
fix(settings): clear a custom block URL that names a deleted or unkno…
waleedlatif1 Nov 10, 2026
413b986
perf(integrations): read the page's workspaces once and in parallel
waleedlatif1 Nov 10, 2026
f716184
fix(organizations): close personal-organization edge cases in joins, …
waleedlatif1 Nov 10, 2026
8396601
Merge branch 'wip/fx21-backend' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
e407d0c
test(shell): name desktop commands without the bridge package
waleedlatif1 Nov 10, 2026
3b9cb60
fix(settings): list every registered keyboard shortcut, derived from …
waleedlatif1 Nov 10, 2026
a353d55
docs(platform): correct the table views parity row now that only the …
waleedlatif1 Nov 10, 2026
01cf808
fix(knowledge): open a chunk across pages from the page's query data …
waleedlatif1 Nov 10, 2026
e620953
chore(platform): allow the workspace rows and visit order Integration…
waleedlatif1 Nov 10, 2026
5feade5
perf(shell): start the viewer's first-paint reads alongside the organ…
waleedlatif1 Nov 10, 2026
b432129
refactor(workspaces): keep one shell-organization rule; name the acce…
waleedlatif1 Nov 10, 2026
3082ace
perf(canvas): select each ActionBar's run-from-block verdict, not eve…
waleedlatif1 Nov 10, 2026
4b7e12a
refactor(platform): sort names with compareText instead of the runtim…
waleedlatif1 Nov 10, 2026
afff1d9
fix(usage): show model provider marks in the usage breakdown and chec…
waleedlatif1 Nov 10, 2026
93d7cff
test(shell): rely on the shared config to restore stubs
waleedlatif1 Nov 10, 2026
706c580
Merge branch 'wip/fx21-ui' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
f243dc7
fix(types): type virtual row keys and the Integrations app list preci…
waleedlatif1 Nov 10, 2026
f627e7b
perf(shell): keep the live shell context stable across renders
waleedlatif1 Nov 10, 2026
72f1bf2
refactor(platform): give duplicated helpers one home (password, folde…
waleedlatif1 Nov 10, 2026
27dc11b
Merge branch 'wip/fx21-perf' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
c893735
test(platform): use the central workspaces mock and drop hooks the sh…
waleedlatif1 Nov 10, 2026
bf9226d
chore(platform): state comments in the present tense instead of narra…
waleedlatif1 Nov 10, 2026
cfb736d
refactor(workflows): drop the preview scope's unreachable workspace-h…
waleedlatif1 Nov 10, 2026
a44a91d
refactor: retire components/workspace-sidebar; fuzzy search to lib/se…
waleedlatif1 Nov 10, 2026
695ad2b
chore(platform): drop the workspace-host-context seam allowlist entry…
waleedlatif1 Nov 10, 2026
ef8a740
refactor: remove the unused DeleteBaseModal onDeleted and SubBlockInp…
waleedlatif1 Nov 10, 2026
caecf97
refactor(platform): keep the fixture-only settings model with its fix…
waleedlatif1 Nov 10, 2026
029abee
chore(credentials): log service-account save failures with static mes…
waleedlatif1 Nov 10, 2026
0998744
refactor(workflows): name the add-block canvas event once with a type…
waleedlatif1 Nov 10, 2026
6a0e825
fix: settle a saved API access in the info dialog, keep server failur…
waleedlatif1 Nov 10, 2026
3ac5336
refactor(connectors): share startingSourceConfig between the knowledg…
waleedlatif1 Nov 10, 2026
fdeb04d
fix(workspace): hide create entries in list right-click menus from re…
waleedlatif1 Nov 10, 2026
df299cd
fix(workflows): keep the canvas's add-block listener typed for the dr…
waleedlatif1 Nov 10, 2026
07c9c2f
fix(platform): keep usePlatformHref in a client module so server page…
waleedlatif1 Nov 10, 2026
58aa618
Merge branch 'wip/fx21-clean' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
6c04c1c
chore: shrink the unused-exports baseline
waleedlatif1 Nov 10, 2026
d706ee8
fix(logs): keep a deep reader's place when new runs join the list
waleedlatif1 Nov 10, 2026
cf36d3e
Merge branch 'wip/platform-org-wiring' into wip/fx22-rundetails
waleedlatif1 Nov 10, 2026
52c50a1
refactor(tables): show a table cell's run through the Logs adapter an…
waleedlatif1 Nov 10, 2026
3f705be
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 10, 2026
9334996
fix(types): name the sites field's placeholder and read the optional …
waleedlatif1 Nov 10, 2026
25182f7
fix(platform): type the platform test fixtures, read records with toR…
waleedlatif1 Nov 10, 2026
287347f
test(desktop): give the chat panel fixture the feature flags every pr…
waleedlatif1 Nov 10, 2026
20469a5
test(platform): read the windowed run list by row index, leave branch…
waleedlatif1 Nov 10, 2026
d5aac31
test(platform): confirm Revoke invite through its dialog and drop the…
waleedlatif1 Nov 10, 2026
dedb2dd
fix(organizations): offer no Invite in a personal organization, whose…
waleedlatif1 Nov 10, 2026
bbbd80c
fix(chat): open workflow folder tabs in Workflows, link tests only in…
waleedlatif1 Nov 10, 2026
f1d5974
docs(platform): record migration 0459 in the personal-organization ru…
waleedlatif1 Nov 10, 2026
855bbae
fix(platform): fold helper copy lines into labels, placeholders and o…
waleedlatif1 Nov 10, 2026
d5c5ea3
feat(platform): fail helper copy lines in check:platform-design
waleedlatif1 Nov 10, 2026
c725e3f
Merge branch 'wip/fx23-copy' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
5612ff7
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 10, 2026
b8fc702
fix(settings): drop the account rows' removed descriptions
waleedlatif1 Nov 10, 2026
1e0f6c7
fix(platform): confirm through ConfirmDialog with one title, verb and…
waleedlatif1 Nov 10, 2026
09fe993
fix(checks): resolve staging's skill references, drop the removed lin…
waleedlatif1 Nov 10, 2026
b8391be
fix(platform): one copy and status vocabulary across the Platform
waleedlatif1 Nov 10, 2026
be194d3
fix(platform): hide controls a viewer cannot use instead of disabling…
waleedlatif1 Nov 10, 2026
9cc1172
feat(platform): enforce confirm, copy, back, tab, alert and tooltip o…
waleedlatif1 Nov 10, 2026
7bca525
Merge branch 'wip/fx24-consistency' into wip/platform-org-wiring
waleedlatif1 Nov 10, 2026
a5405fc
Merge origin/staging into platform org wiring
waleedlatif1 Nov 11, 2026
03bd14f
chore(platform): regenerate integration and permission catalogs after…
waleedlatif1 Nov 11, 2026
a1de8e2
test(organizations): give the home key principals the access field
waleedlatif1 Nov 11, 2026
d095f67
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 11, 2026
4d8d951
chore(platform): regenerate the permission catalog after the staging …
waleedlatif1 Nov 11, 2026
ee09784
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 11, 2026
d4d8244
fix(platform): wire Search blocks and Add to skills to their sentence…
waleedlatif1 Nov 11, 2026
2b74302
test(platform): follow the consistency pass in specs and e2e checks
waleedlatif1 Nov 11, 2026
ed4445e
Merge branch 'wip/fx26-ci' into wip/platform-org-wiring
waleedlatif1 Nov 11, 2026
effe2f1
fix(platform): sentence-case the Remove from skills action and hold e…
waleedlatif1 Nov 11, 2026
56389ed
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 11, 2026
8343e63
fix(emcn): match SettingsSection surface and row geometry to Paper
waleedlatif1 Nov 11, 2026
e4197f7
fix(platform): settings frame, Personal navigation and page summaries…
waleedlatif1 Nov 11, 2026
94983c7
fix(platform): settings rows and dialogs carry Paper's description line
waleedlatif1 Nov 11, 2026
95f372a
fix(settings): pad the settings column like Paper's
waleedlatif1 Nov 11, 2026
3152876
fix(platform): Paper's no-results, destination and confirm copy, and …
waleedlatif1 Nov 11, 2026
0542cd1
Merge branch 'wip/fx28-paper' into wip/platform-org-wiring
waleedlatif1 Nov 11, 2026
6e6842b
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 11, 2026
c086c75
docs(skills): keep the illustrative fences when taking staging's refu…
waleedlatif1 Nov 11, 2026
8fb3a3c
Merge remote-tracking branch 'origin/staging' into wip/fx29-staging
waleedlatif1 Nov 11, 2026
7303d70
fix(merge): import staging's new code from this branch's module homes
waleedlatif1 Nov 11, 2026
8a1b530
feat(platform): offer #9869's credential methods where the Platform c…
waleedlatif1 Nov 11, 2026
86f21c5
feat(platform): one settings body and one header per settings page
waleedlatif1 Nov 11, 2026
6e06ce3
refactor(favicon): one site icon for the Platform and the legacy app
waleedlatif1 Nov 11, 2026
e40d8a2
fix(platform): keep usage Description at Settings width and follow th…
waleedlatif1 Nov 11, 2026
f0f5ad3
Merge branch 'wip/fx32-ci' into wip/platform-org-wiring
waleedlatif1 Nov 11, 2026
f4e0d14
fix(emcn): let text in any cell open an openable DataTable row
waleedlatif1 Nov 11, 2026
5c05133
feat(platform): shared settings parts, their rules, first-paint reads…
waleedlatif1 Nov 11, 2026
c563810
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 11, 2026
a6a7d80
Merge branch 'wip/fx30-shared' into wip/platform-org-wiring
waleedlatif1 Nov 11, 2026
5e511d5
chore(boundary): raise only the three entries the shared settings lay…
waleedlatif1 Nov 11, 2026
9f937fc
refactor(workspace-settings): api keys, BYOK, custom tools and custom…
waleedlatif1 Nov 11, 2026
2e264b2
refactor(workspace-settings): forks on the shared settings parts
waleedlatif1 Nov 11, 2026
a9937b0
refactor(settings): adopt shared settings parts on security, data ret…
waleedlatif1 Nov 11, 2026
429da77
refactor(workspace-settings): Sim Mailer on the shared settings parts
waleedlatif1 Nov 11, 2026
795ea88
fix(settings): Preferences without fixture branches in its views, sha…
waleedlatif1 Nov 11, 2026
c52a422
fix(settings): show the reader's platform keys on Keyboard shortcuts
waleedlatif1 Nov 11, 2026
9c22043
fix(settings): Desktop, Browser and Terminal on shared rows, queries …
waleedlatif1 Nov 11, 2026
2c95e32
refactor(workspace-settings): MCP tools and MCP servers on the shared…
waleedlatif1 Nov 11, 2026
bb4c7f4
refactor(workspace-settings): sandboxes, teammates and recently delet…
waleedlatif1 Nov 11, 2026
f680868
fix(settings): members, billing and insights on the shared settings p…
waleedlatif1 Nov 11, 2026
2404595
fix(settings): credential groups on the shared parts, with one People…
waleedlatif1 Nov 11, 2026
bf70436
fix(settings): whitelabeling, recently deleted, requests and links on…
waleedlatif1 Nov 11, 2026
a9213a0
Merge branch 'wip/fx33-b' into wip/platform-org-wiring
waleedlatif1 Nov 11, 2026
f99912c
refactor(workspace-settings): secrets on the shared settings parts
waleedlatif1 Nov 11, 2026
227d5ea
fix(workspace-settings): drop two exports nothing imports and read BY…
waleedlatif1 Nov 11, 2026
757b594
Merge branch 'wip/fx33-e' into wip/platform-org-wiring
waleedlatif1 Nov 11, 2026
803b4f5
fix(emcn): space several controls in a settings row's control slot, a…
waleedlatif1 Nov 11, 2026
a49677e
refactor(settings): one prop-driven Sources list, SSO sub-views and U…
waleedlatif1 Nov 11, 2026
93cd7f1
Merge branch 'wip/fx33-c' into wip/platform-org-wiring
waleedlatif1 Nov 11, 2026
3689c1e
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 11, 2026
cf584f1
fix(inbox): page tasks with the contract's named page limit
waleedlatif1 Nov 11, 2026
8bdc71c
revert(settings): restore the Insights page as it was before the sett…
waleedlatif1 Nov 11, 2026
4eed49a
fix(settings): answer a closed section with the product's not-found p…
waleedlatif1 Nov 11, 2026
54a4ab7
test(desktop): give the settings fixture the query client the product…
waleedlatif1 Nov 11, 2026
b91be10
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 11, 2026
bca74ad
fix(credentials): reopen a Platform reconnect on the credential's sto…
waleedlatif1 Nov 11, 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.
23 changes: 13 additions & 10 deletions .agents/skills/add-block/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ A block that takes a secret inline keeps running for existing workflows; the sav
version is a new block type that spreads it. Keep the successor an object literal with the picker
written inline, because the docs generator reads the source text:

```typescript
```typescript illustrative
export const ServiceV2Block: BlockConfig = {
...ServiceBlock,
type: 'service_v2',
Expand Down Expand Up @@ -354,7 +354,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 @@ -438,7 +438,7 @@ inputs: {

For multiple file uploads:

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

When creating V2 blocks (alongside legacy V1):

```typescript
```typescript illustrative
// V1 Block - mark as legacy. A credential-only successor is the exception: the
// successor keeps the legacy block's name, so neither block is renamed.
export const ServiceBlock: BlockConfig = {
Expand Down Expand Up @@ -762,7 +762,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 @@ -778,7 +778,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 @@ -876,7 +876,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 @@ -1025,7 +1025,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 @@ -1051,6 +1053,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 @@ -1090,7 +1093,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 @@ -1107,7 +1110,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
10 changes: 6 additions & 4 deletions .agents/skills/add-integration/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ supported paths and choose the simplest supported setup for the intended user:
| Customer-owned client credentials | Saved `service_account` credential with a client ID and secret | Internal-app eligibility, grant activation, scope syntax, token lifetime and revocation behavior |
| API token or personal access token | Saved token service account when reusable connections are useful | Token permissions, identity verification, expiry and rotation |
| Private key, certificate, or service-account JSON | Existing key-based service-account framework | Signing algorithm, audience, subject, tenant binding and key rotation |
| Cloud workload identity (AWS role, Databricks/Snowflake/Entra/GCP federation) | Keyless saved credential: Sim signs a short-lived OIDC token the customer's cloud trusts. Add the provider to every table in `lib/credentials/workload-identity/audiences.ts` (`WORKLOAD_IDENTITY_PROVIDERS`, its service-account provider ID map, `WORKLOAD_IDENTITY_KEYLESS_CONFIGS`, `WORKLOAD_IDENTITY_AUDIENCES`) and to `MIXED_MODE_PROVIDERS` in `lib/credentials/application/prepare-workload-identity.ts` | Issuer and audience the provider accepts, how the trust pins the subject, token lifetime |
| Cloud workload identity (AWS role, Databricks/Snowflake/Entra/GCP federation) | Keyless saved credential: Sim signs a short-lived OIDC token the customer's cloud trusts. Add the provider to every table in `lib/credentials/workload-identity/audiences.ts` (`WORKLOAD_IDENTITY_PROVIDERS`, its service-account provider ID map, `WORKLOAD_IDENTITY_KEYLESS_CONFIGS`, `WORKLOAD_IDENTITY_AUDIENCES`) | Issuer and audience the provider accepts, how the trust pins the subject, token lifetime |

API, CLI, and MCP callers set up keyless in two steps: `POST /api/v2/credentials/workload-identity/subjects`
(or `sim credentials keyless-subject <providerId> --output json`) returns the subject to trust and a
Expand Down Expand Up @@ -373,7 +373,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 @@ -437,7 +437,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 @@ -667,7 +669,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