Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
308 commits
Select commit Hold shift + click to select a range
f3c2212
mothership agent cli: grep --in accepts the world/resource path a mat…
Sg312 Sep 2, 2026
99be56f
workflow lint, block catalog, tables, files, sandbox tools: fixes fro…
Sg312 Sep 2, 2026
481317b
sim-cli: --output json prints the API data verbatim; the single-key u…
Sg312 Sep 2, 2026
8e8c38b
route and connection validation, trigger defaults on add, table folde…
Sg312 Sep 2, 2026
387a0c9
sim-cli: the operations apply confirmation describes the batch as wri…
Sg312 Sep 2, 2026
80284d1
sandbox export keeps the code's result; --trigger implies --manual; d…
Sg312 Sep 2, 2026
6e9e18d
sim-cli: runs get --select-output takes block names; groups delete sa…
Sg312 Sep 2, 2026
39f5913
null-safe block.error, strict start-trigger coercion, lint checks ref…
Sg312 Sep 2, 2026
51965bb
same-workspace import keeps or warns about workspace bindings; generi…
Sg312 Sep 2, 2026
296d6ae
table groups default to the deployed version and refuse a dispatch wi…
Sg312 Sep 2, 2026
b507b30
agent cli grep: the searchable text leads with the resource's name an…
Sg312 Sep 2, 2026
24ee91c
Catalog hides sunset blocks unless includeSunset; enrichment get retu…
Sg312 Sep 3, 2026
26acb68
Sandbox exports decode by the path rule the reader used: a .jpg decla…
Sg312 Sep 3, 2026
0b98917
Chat uploads resolve by uploads/<name> for reads, sandbox mounts, and…
Sg312 Sep 3, 2026
acedce1
grep: resolve --in against listings, fetch only the named resources
Sg312 Sep 3, 2026
247dcf4
mothership: model-facing strings name only what exists on the CLI sur…
Sg312 Sep 3, 2026
ed7ab3f
docs: every model-searchable page states the current surface
Sg312 Sep 3, 2026
ab62dab
mothership: prepare_file_edit create + new_file pass input validation
Sg312 Sep 3, 2026
91daffc
mothership: the embedded CLI answers v2 in-process; grep memoizes bot…
Sg312 Sep 3, 2026
94ba868
mothership: take the embedded CLI off the in-process transport until …
Sg312 Sep 3, 2026
a821072
grep: share in-flight builds, bound nested requests process-wide, cac…
Sg312 Sep 3, 2026
1f822d1
grep: an exact block id answers before the tool catalog is built
Sg312 Sep 3, 2026
02ff9f6
grep: honour -A and -B context flags
Sg312 Sep 3, 2026
88a4c4b
sandbox pricing: normalize COST_MULTIPLIER at the boundary
Sg312 Sep 3, 2026
ac49e91
sandbox pricing: cost-multiplier imports env relatively — next.config…
Sg312 Sep 3, 2026
781e6c7
mothership: pack a workspace inventory with every chat request
Sg312 Sep 3, 2026
6ec3f4d
grep: the tool catalog is one use-case call when the engine has the c…
Sg312 Sep 3, 2026
f38a99b
mothership: background tasks — subscriptions, wake turn, task pill (2…
Sg312 Sep 4, 2026
6fca4b2
mothership tasks: resolve the pill by task id (jsonb text spacing bro…
Sg312 Sep 4, 2026
b121c9d
task pill: icons from @sim/emcn (lucide-react is not an app dependenc…
Sg312 Sep 4, 2026
2b0ab4e
mothership: checkpoint Sim interaction and workbench boundary repairs
Sg312 Sep 6, 2026
77d7a4a
mothership: authorize table snapshot mounts and honor folder references
Sg312 Sep 6, 2026
872d397
mothership: stream workbench downloads with atomic publication
Sg312 Sep 6, 2026
3cdf14f
mothership: stream uploads and imports from workbench snapshots
Sg312 Sep 6, 2026
b6e3904
mothership: bind upload requests to the snapshot lifetime
Sg312 Sep 6, 2026
e7dd292
fix(mothership): preserve and bound embedded CLI output
Sg312 Sep 6, 2026
aabc089
fix(mothership): preserve file provenance through host CLI reads
Sg312 Sep 6, 2026
20b72b3
test(mothership): guard current CLI catalog entry points
Sg312 Sep 6, 2026
c6abe9a
fix(mothership): make search current, isolated, and explicit about co…
Sg312 Sep 6, 2026
87352a6
fix(mothership): bind file mounts to one canonical version
Sg312 Sep 6, 2026
29d75f0
feat(mothership): persist private upload source classification
Sg312 Sep 6, 2026
d086da2
fix(mothership): preserve classification across workbench file copies
Sg312 Sep 6, 2026
dd6431a
fix(mothership): retain source evidence for saved CLI output
Sg312 Sep 6, 2026
0447c1f
test(mothership): exercise CSV composition through the Sim runtime
Sg312 Sep 6, 2026
763f974
test(mothership): connect CLI workflow runs to report publication
Sg312 Sep 6, 2026
2da1d68
fix(mothership): preserve raw CLI data with scoped presentation
Sg312 Sep 6, 2026
bd9a56c
fix(mothership): expose canonical workflow identity for watches
Sg312 Sep 6, 2026
6691ad3
fix(mothership): preserve watches across transcript replay
Sg312 Sep 6, 2026
bbbc2dd
fix(mothership): convert code execution timeouts once
Sg312 Sep 6, 2026
a0fab70
fix(mothership): preserve child failures across transcript recovery
Sg312 Sep 6, 2026
5ac52a0
test(mothership): distinguish replay from executable handoff
Sg312 Sep 6, 2026
888f74f
test(mothership): verify persisted run diagnostics through CLI
Sg312 Sep 6, 2026
6d078a4
test(mothership): verify workflow execution log readback
Sg312 Sep 6, 2026
8df798e
test(mothership): verify controller execution and resume recovery
Sg312 Sep 6, 2026
23d4422
fix(mothership): acknowledge text received before stream retries
Sg312 Sep 6, 2026
14cd1c3
fix(mothership): reconcile response text across reconnects
Sg312 Sep 6, 2026
9656b3c
test(mothership): verify automatic relay interruption recovery
Sg312 Sep 6, 2026
fa67427
fix(mothership): unify replayable child lifecycle handling
Sg312 Sep 6, 2026
e274d15
test(mothership): verify child recovery after worker exit
Sg312 Sep 6, 2026
89f900f
fix(mothership): distinguish tool history from executable handoffs
Sg312 Sep 6, 2026
ac93088
fix(mothership): acknowledge received activity between stream legs
Sg312 Sep 6, 2026
7afd76f
test(mothership): recover missing initial relay frames
Sg312 Sep 6, 2026
8f9c9a0
test(mothership): cover overlapping relay attachments
Sg312 Sep 6, 2026
80996af
fix(mothership): observe results owned by overlapping controllers
Sg312 Sep 6, 2026
2caf748
fix(mothership): preserve long CLI command budgets
Sg312 Sep 6, 2026
49bf997
test(mothership): verify table pipeline against real execution
Sg312 Sep 6, 2026
da0fb0a
fix(mothership): recover one-shot response delivery
Sg312 Sep 6, 2026
6471593
fix(mothership): align one-shot MCP discovery guidance
Sg312 Sep 6, 2026
f53facf
fix(mothership): make inbox attachments readable
Sg312 Sep 6, 2026
17518d2
fix(mothership): scope upload names to the requesting chat
Sg312 Sep 6, 2026
baad62e
fix(mothership): preserve worker history when forking chats
Sg312 Sep 6, 2026
ddd42fe
fix(mothership): cancel only response-owned workflow executions
Sg312 Sep 6, 2026
691f2a1
fix(mothership): serialize workflow pickup with run Stop
Sg312 Sep 6, 2026
47a269f
fix(mothership): track browser workflow execution through Stop
Sg312 Sep 6, 2026
804846e
fix(mothership): require settlement for Stop before chat attachment
Sg312 Sep 6, 2026
3fd2ea3
fix(mothership): preserve canonical history when stopping a response
Sg312 Sep 6, 2026
03b6ccf
fix(mothership): handle abort failures while Stop history persists
Sg312 Sep 6, 2026
6171ac7
fix(mothership): retain queued Stop dependencies through retries
Sg312 Sep 6, 2026
6522eda
fix(mothership): recover outgoing handoffs through the durable queue
Sg312 Sep 6, 2026
bac48e0
fix(mothership): bind queued retries to the active Stop operation
Sg312 Sep 6, 2026
1e46f47
test(mothership): exercise physical workflow edits and oracle execution
Sg312 Sep 6, 2026
4f1ad2a
test(mothership): verify extracted workflow invocation through saved …
Sg312 Sep 6, 2026
1241433
test(mothership): verify build-only consent through physical run history
Sg312 Sep 6, 2026
49c3647
fix(mothership): retain terminal failures in saved chats
Sg312 Sep 6, 2026
730fd38
fix(mothership): retain active runs through worker connection loss
Sg312 Sep 6, 2026
1994bda
fix(mothership): persist Stop before worker delivery
Sg312 Sep 6, 2026
5e11e47
fix(mothership): recover interactive streams after Sim process loss
Sg312 Sep 6, 2026
4d60862
fix(mothership): durably admit chat turns before worker dispatch
Sg312 Sep 6, 2026
4c2d1ce
fix(mothership): recover lost tool handlers with fenced execution leases
Sg312 Sep 7, 2026
0b3ff21
fix(mothership): finalize steered answers by turn identity
Sg312 Sep 7, 2026
f08947a
fix(mothership): separate committed tool outcomes from stream publica…
Sg312 Sep 7, 2026
434f69e
fix(mothership): serialize saved resource panel changes
Sg312 Sep 7, 2026
63aa8fc
fix(mothership): persist resource effects once before publication
Sg312 Sep 7, 2026
16d136e
fix(mothership): preserve complete saved resource addresses
Sg312 Sep 7, 2026
82a67f9
fix(mothership): preserve saved table views in chat context
Sg312 Sep 7, 2026
b886763
fix(mothership): follow the current embedded table view
Sg312 Sep 7, 2026
6887ef9
fix(mothership): preserve exact table selection identities
Sg312 Sep 7, 2026
a1737ac
fix(mothership): attach usable file folder references
Sg312 Sep 7, 2026
cf2c076
fix(mothership): render saved file folder resources
Sg312 Sep 7, 2026
d96a3f5
Revert "fix(mothership): render saved file folder resources"
Sg312 Sep 7, 2026
1551dc0
fix(mothership): align attachment context with available tools
Sg312 Sep 7, 2026
7ffe4a6
fix(mothership): authorize MCP calls as the chat subject
Sg312 Sep 7, 2026
01cbef2
fix(mothership): keep workbench policy out of the public CLI
Sg312 Sep 7, 2026
65f42ff
fix(mothership): preserve composed code export outcomes
Sg312 Sep 7, 2026
c13dc4c
fix(mothership): retain completed files after export failure
Sg312 Sep 7, 2026
21c9691
test(mothership): verify hosted workbenches and task compositions
Sg312 Sep 7, 2026
bf025dc
ci: restore staging jobs and keep Mothership acceptance local
Sg312 Sep 7, 2026
25bbe51
feat(mothership): receive private Sim controls over outbound transport
Sg312 Sep 7, 2026
d9e1bd6
fix(mothership): bound stream reconnection attempts
Sg312 Sep 7, 2026
859d4e6
fix(mothership): export chat sandbox files through workspace storage
Sg312 Sep 7, 2026
160f0b4
fix(cli): isolate embedded output from host process logging
Sg312 Sep 7, 2026
9f07f69
fix(mothership): preserve file intents and workflow result contracts
Sg312 Sep 7, 2026
3107be0
perf(mothership): trace CLI and tool persistence boundaries
Sg312 Sep 7, 2026
18052a3
fix(mothership): preserve resource effects and execution recovery
Sg312 Sep 7, 2026
54f4c6f
fix(mothership): reconcile staging contracts and consolidate migrations
Sg312 Sep 7, 2026
d538fa0
fix(mothership): share and verify billing callback contracts
Sg312 Sep 7, 2026
415e3ca
fix(mothership): preserve catalog curation and embedded CLI access
Sg312 Sep 8, 2026
d5f5a99
fix(mothership): mount code secrets explicitly
Sg312 Sep 8, 2026
0c1fa32
fix(mothership): own sandbox profile at the code tool boundary
Sg312 Sep 8, 2026
6c61106
fix(workflows): validate field values before full-state writes
Sg312 Sep 8, 2026
7127bce
fix(chat): collapse main tool groups into action summaries
Sg312 Sep 8, 2026
9648b3a
fix(mothership): restore workspace API key dispatch
Sg312 Sep 8, 2026
f899109
fix(chat): label workflow dry runs as validation
Sg312 Sep 8, 2026
f53e9b5
feat(chat): expose model, reasoning effort and Astra Fast controls
Sg312 Sep 8, 2026
1403967
fix(chat): align composer model and effort controls
Sg312 Sep 8, 2026
cdc3088
Group Mothership tools by activity and show scoped resource names
Sg312 Sep 8, 2026
456da24
Report requested Mothership model without legacy telemetry defaults
Sg312 Sep 8, 2026
e36aa87
Restore Mothership Slack bot connection from stored secrets
Sg312 Sep 8, 2026
9be2768
Preserve execution events for deployed Copilot workflow runs
Sg312 Sep 8, 2026
d9a02d9
Expose active workflow API details to Mothership
Sg312 Sep 8, 2026
2b7ebb7
Restore desktop parity and preserve interrupted chat progress
Sg312 Sep 8, 2026
5ca476e
Keep Mothership resource panels and activity groups in sync
Sg312 Sep 14, 2026
8578ba6
Show active tools before completed activity summaries
Sg312 Sep 14, 2026
30bd322
Fix shared agent tool execution and discovery boundaries
Sg312 Sep 14, 2026
296f63d
Port Assistant to shared Mothership runtime and repair resource recovery
Sg312 Sep 15, 2026
7793904
Refresh CLI docs and desktop validation after staging rebase
Sg312 Sep 15, 2026
3ebac9c
Restore staging image inventory commands
Sg312 Sep 15, 2026
3284898
Fail migrations correctly and resolve empty direct database URLs
Sg312 Sep 15, 2026
047a2eb
Match chat attachment guidance to supported file capabilities
Sg312 Sep 15, 2026
8e664f4
fix(ci): retain the latest published desktop prereleases
Sg312 Sep 15, 2026
a7ab61f
fix(mothership): read file contents through one adaptive command
Sg312 Sep 15, 2026
524db6d
fix(chat): simplify pending tool activity label
Sg312 Sep 15, 2026
b8b76ac
feat(chat): inspect scratch files and preserve inline images
Sg312 Sep 15, 2026
cd289fb
fix(chat): keep tool failures in expanded history
Sg312 Sep 15, 2026
4ab6bcb
fix(db): avoid repeated dev index builds and search backfills
Sg312 Sep 15, 2026
95e5660
fix(chat): preview inline images with shared lightbox
Sg312 Sep 15, 2026
fcd04b3
feat(mothership): operate across organization workspaces
Sg312 Sep 15, 2026
c0390af
feat(mothership): manage settings and workflow file inputs
Sg312 Sep 16, 2026
6c3e84c
fix(mothership): preserve stopped chat admission and queued corrections
Sg312 Sep 16, 2026
9a99048
fix(mothership): show sequential activity intent and concrete tools
Sg312 Sep 16, 2026
690c6ed
fix(mothership): expose canonical model hints in internal discovery
Sg312 Sep 16, 2026
d8a8d59
fix(mothership): unify scoped CLI and organization resource panels
Sg312 Sep 16, 2026
3080a06
feat(assistant): connect and use personal organization integrations
Sg312 Sep 16, 2026
7c53ee3
feat(chat): unify Home modes and search resource tabs
Sg312 Sep 16, 2026
3bd5e76
feat(chat): tailor Home controls and starters to the selected mode
Sg312 Sep 16, 2026
4843f3b
fix(mothership): preserve file upload and preview resource context
Sg312 Sep 16, 2026
64f6898
fix(mothership): stabilize Home search panels and add optional Fast S…
Sg312 Sep 16, 2026
6fe24f1
fix(mothership): preserve staging authorization and resumed billing
Sg312 Sep 17, 2026
2d98f27
fix(db): make development schema pushes noninteractive (#7906)
icecrasher321 Sep 17, 2026
2aeb43d
feat(search): unify Home search levels and composer
Sg312 Sep 17, 2026
8a14489
fix(db): retire file size bridge before forced schema push
Sg312 Sep 17, 2026
886aeed
fix(ci): restore test isolation and memory file scope checks
Sg312 Sep 17, 2026
f8982a0
fix(ci): keep metadata imports pure and narrow component graphs
Sg312 Sep 17, 2026
177997e
fix(mothership): refresh client settings after scoped mutations
Sg312 Sep 17, 2026
4fb2770
fix(db): repair partial member sync status on existing databases
Sg312 Sep 17, 2026
5e01fae
fix(home): reuse the shared loading fallback
Sg312 Sep 17, 2026
c924a27
fix(mothership): remove eager catalogs and bulky admission saves
Sg312 Sep 17, 2026
6f68fda
fix(mothership): keep reads out of resource panels
Sg312 Sep 17, 2026
d9926f4
test(search): assert lazy integration catalog in headless chat
Sg312 Sep 17, 2026
d1cc188
fix(search): label balanced search level Auto
Sg312 Sep 17, 2026
ef0d68d
fix(mothership): provide authorized context for chat titles
Sg312 Sep 17, 2026
e5127f1
fix(search): restore standalone search and refine chat mode controls
Sg312 Sep 17, 2026
ab101f8
fix(search): align mode selector with the standard search icon
Sg312 Sep 17, 2026
61f6a3a
fix(mothership): resolve integration discovery service identities
Sg312 Sep 17, 2026
5a0a8db
fix(desktop): reuse Sim login for authenticated browser previews
Sg312 Sep 17, 2026
c1fb01c
fix(chat): preserve configured origin in deployment URLs
Sg312 Sep 17, 2026
c5c5236
fix(search): recover GitHub installation setup and verify ownership
Sg312 Sep 18, 2026
6b6b1aa
fix(search): retain sync failures and resume reconnected accounts
Sg312 Sep 18, 2026
064fb57
fix(chat): restore thinking indicator after tools finish
Sg312 Sep 18, 2026
5efd005
fix(mothership): expose and validate tool attachment identities
Sg312 Sep 18, 2026
e760f27
feat(mothership): inspect configured workflow tool bindings
Sg312 Sep 18, 2026
0fbfe28
feat(mothership): support dynamic Sim Chat tool modes
Sg312 Sep 18, 2026
97b4786
fix(mothership): continue Sim Chat block conversations
Sg312 Sep 18, 2026
38a5b09
feat(mothership): create organization workspaces through CLI
Sg312 Sep 18, 2026
5abb8c6
perf(desktop): observe browser state in action calls
Sg312 Sep 19, 2026
a9d9059
fix(mothership): repair background wakes and simplify watch activity
Sg312 Sep 19, 2026
623e515
fix(mothership): clarify tool permissions and folder context
Sg312 Sep 19, 2026
f15b881
fix: reconcile staging rebase contracts and migrations
Sg312 Sep 19, 2026
1c30cdc
fix(db): reconcile staging search migrations in dev
Sg312 Sep 19, 2026
6f46c82
fix(chat): preserve live turns and recover interrupted streams
Sg312 Sep 21, 2026
183d432
fix(workflows): scope custom block schemas during authoring
Sg312 Sep 21, 2026
41e7c9e
fix: reconcile staging search and file contracts after rebase
Sg312 Sep 21, 2026
c7f5b6e
style(db): format rebased migration snapshots
Sg312 Sep 21, 2026
409b869
fix(slack): deliver Sim Chat text and tool progress reliably
Sg312 Sep 21, 2026
66186b2
test(slack): verify Agent and Sim Chat thinking parity
Sg312 Sep 21, 2026
5884a60
fix(slack): bound each long-answer append request
Sg312 Sep 21, 2026
6cd8f16
fix(slack): continue long streams across message limits
Sg312 Sep 21, 2026
f23589f
fix(slack): recover explicitly rejected size overflows
Sg312 Sep 21, 2026
d0ddd33
fix(mothership): simplify saved results display label
Sg312 Sep 21, 2026
a09adba
fix(slack): clean up long-response continuations
Sg312 Sep 22, 2026
8406f9b
feat(mothership): simplify Build picker to Astra effort levels
Sg312 Sep 22, 2026
9952888
fix(mothership): hide mode selection after the first message
Sg312 Sep 22, 2026
f890e5f
feat(search): add feature-flagged live provider retrieval
Sg312 Sep 22, 2026
0739908
fix(search): scope repository retrieval and add Coda MCP OAuth
Sg312 Sep 22, 2026
94a8d0a
fix(search): restore account hooks client directive
Sg312 Sep 22, 2026
eb22479
Fix GitHub connected-account tools in Search Assistant
Sg312 Sep 22, 2026
c011716
Add organization-scoped live search and admin-managed GitLab
Sg312 Sep 22, 2026
9221551
Add date-aware live enterprise search and bounded listings
Sg312 Sep 22, 2026
fef222f
Polish live Search results, citations, and effort controls
Sg312 Sep 22, 2026
77273e3
fix(mothership): preserve hosted service billing through cutover
Sg312 Sep 22, 2026
f55aa8c
fix(search): restore live citations and streamed source panel
Sg312 Sep 22, 2026
023f272
fix(search): replace live results tab with cited sources
Sg312 Sep 22, 2026
92e66ee
feat(search): simplify federated sources and add scoped secrets
icecrasher321 Sep 22, 2026
0db78fd
fix(search): make service account setup directly accessible
icecrasher321 Sep 22, 2026
2f5d127
feat(mothership): add dev-gated Plan mode across chat surfaces
Sg312 Sep 22, 2026
5fb095f
fix(search): preserve account connection links in Slack
icecrasher321 Sep 22, 2026
27b6d5b
fix(search): remove indexing language from live search
icecrasher321 Sep 22, 2026
d428711
fix(search): keep admin setup out of member integrations
icecrasher321 Sep 22, 2026
f54ff0e
fix(search): route Search MCP through live retrieval
icecrasher321 Sep 22, 2026
bdc3598
fix(plan): normalize the runtime feature flag to a boolean
Sg312 Sep 22, 2026
126cc14
ci(dev): deploy Trigger tasks independently of app images
Sg312 Sep 22, 2026
e3db48d
feat(mothership): set organization Generic Secrets in chat
Sg312 Sep 22, 2026
28fe5b3
fix(search): verify federated connectors and align setup docs
icecrasher321 Sep 22, 2026
32233bd
fix(search): remove stale Slack indexing copy
icecrasher321 Sep 22, 2026
5d5ab7d
docs(search): document Generic Secrets and clarify source setup
icecrasher321 Sep 23, 2026
266fb26
fix(mothership): allow authorized organization code secrets in Build …
Sg312 Sep 23, 2026
8714297
fix(search): restore live integration connection chips
Sg312 Sep 23, 2026
8e78a7b
fix(search): include Gmail in live connection inventory
icecrasher321 Sep 23, 2026
d370714
fix(search): expand composer around image attachments
icecrasher321 Sep 23, 2026
7f82c65
Merge origin/staging into feat/mothership-revamp
icecrasher321 Sep 23, 2026
4f08a0a
fix(mothership): restore saved Plan chat history
Sg312 Sep 23, 2026
7fa4cad
fix(mothership): address review findings and CI regressions
icecrasher321 Sep 23, 2026
4868a9a
test(deploy): align promotion expectation with Trigger CLI
icecrasher321 Sep 23, 2026
65a9a0c
improvement(desktop): make saved password autofill field-aware
waleedlatif1 Sep 23, 2026
ce4ee7d
fix(mothership): preserve trace filters and shared app workers
icecrasher321 Sep 23, 2026
d15d96a
fix(desktop): dismiss credential picker when browser hides
icecrasher321 Sep 23, 2026
ddb9ca6
feat(mothership): simplify model controls and add native desktop files
Sg312 Sep 23, 2026
e8f399b
fix(desktop): preserve password picker focus and lifetime
waleedlatif1 Sep 23, 2026
749545d
chore(mothership): align model and deployment test expectations
waleedlatif1 Sep 23, 2026
19e8407
fix(mothership): resolve model and Plan controls from AppConfig
Sg312 Sep 23, 2026
2ea36a2
Merge remote-tracking branch 'origin/feat/mothership-revamp' into fea…
Sg312 Sep 23, 2026
e315770
fix(desktop): contain native imports and preserve UTF-8 pages
waleedlatif1 Sep 23, 2026
4d8f61a
fix(credentials): preserve unrelated setup controls
waleedlatif1 Sep 23, 2026
2a54297
feat(browser): file transfer, popups, PDFs, click gestures, and dialo…
waleedlatif1 Sep 23, 2026
ee60695
chore(chat): provide runtime flags in composer tests
waleedlatif1 Sep 23, 2026
74f6e48
fix(browser): isolate actions and bound file transfers
waleedlatif1 Sep 23, 2026
2d6db97
fix(browser): retain upload input identity through dispatch
waleedlatif1 Sep 23, 2026
07b0c8c
fix(mothership): validate complete billing protocol headers
Sg312 Sep 23, 2026
bbb1608
fix(browser): preserve upload dispatch before acknowledgement
icecrasher321 Sep 23, 2026
60436b0
fix(browser): distinguish unconfirmed upload outcomes
waleedlatif1 Sep 23, 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
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .agents/skills/add-connector/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ argument-hint: <service-name> [api-docs-url]

# Add Connector Skill

## Choose the connector runtime first

For **Sim Search**, use the live provider workflow in [the federated Search developer guide](../../../apps/sim/lib/sim-search/live/README.md#adding-a-live-search-connector). Its browser-safe provider catalog owns provider IDs, API origins, credential aliases, and account modes; its typed runtime registry requires both search and read handlers. `ConnectorMeta` remains the owner of logos and setup fields. Member mode has no admin resource filters. Service mode requires independent live source verification and shared selectors. Do not implement a Search source by adding a crawler, embeddings, or a scheduled ACL build.

The ingestion instructions below apply to **ordinary knowledge-base connectors** and the explicit legacy Search backend (`SIM_SEARCH_LIVE=false`). If a provider supports both, implement and test both runtimes; adding `search: true` to metadata alone does not implement federated search. Preserve indexing documentation and behavior for those KB/legacy callers.

You are an expert at adding knowledge base connectors to Sim. A connector syncs documents from an external source (Confluence, Google Drive, Notion, etc.) into a knowledge base.

## Your Task
Expand Down
6 changes: 6 additions & 0 deletions .agents/skills/validate-connector/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ argument-hint: <service-name> [api-docs-url]

# Validate Connector Skill

## Identify the runtime under review

For **Sim Search**, validate the [live provider registration and access pipeline](../../../apps/sim/lib/sim-search/live/README.md#adding-a-live-search-connector): catalog and metadata parity, both search/read handlers, current member grants, service-source restrictions, safe scoped references, pagination, provenance, and provider failure behavior. Test real localhost setup/search/read with authorized fixtures when available, and distinguish those results from mocked provider tests. Live Search must not enqueue content indexing or background ACL/directory builds; GitLab still computes request-time permissions or uses current CSV grants.

The ingestion-specific checks below apply to ordinary workspace KB connectors and legacy Search selected with `SIM_SEARCH_LIVE=false`. Keep those checks for providers supporting both runtimes; do not require a live-only provider to implement content hashes, ingestion cursors, embeddings, or stored ACL snapshots.

You are an expert auditor for Sim knowledge base connectors. Your job is to thoroughly validate that an existing connector is correct, complete, and follows all conventions.

## Your Task
Expand Down
2 changes: 2 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,8 @@ If you prefer not to use Docker. **All commands run from the repository root unl

For ad-hoc schema iteration during development you can also use `bun run db:push` from `packages/db`, but `db:migrate` is the canonical command for staging and production. `db:push` reconciles directly to the current schema without running versioned migration guards. For disposable local/dev databases, `bun run db:push --force` accepts Drizzle's data-loss prompts, including column drops.

`db:push` treats added and removed columns, tables, and other schema objects as separate creations and deletions. It never infers a rename. For an intentional rename during local development, run `bun run db:push --interactive-renames` in a terminal and select the old object in Drizzle's chooser. This flag does not approve data loss; `--force` controls that separately. After schema reconciliation succeeds, the wrapper reconciles credential policies and OAuth providers, then backfills search vectors. A failure stops subsequent steps. Staging and production changes still use reviewed versioned migrations with expand/contract deployment steps.

4. **Run the Development Servers:**

```bash
Expand Down
6 changes: 6 additions & 0 deletions .github/actions/docker-build/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ inputs:
tags:
description: Comma-separated list of tags to push.
required: true
build-args:
description: Newline-separated Docker build arguments.
required: false
default: ''
max-cache-size-mb:
description: >-
Layer cache to retain after this action prunes, in MB. Must stay above one
Expand Down Expand Up @@ -72,6 +76,7 @@ runs:
platforms: ${{ inputs.platforms }}
push: true
tags: ${{ inputs.tags }}
build-args: ${{ inputs.build-args }}
provenance: false
sbom: false

Expand Down Expand Up @@ -177,5 +182,6 @@ runs:
platforms: ${{ inputs.platforms }}
push: true
tags: ${{ inputs.tags }}
build-args: ${{ inputs.build-args }}
provenance: false
sbom: false
45 changes: 26 additions & 19 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ jobs:
echo "ℹ️ No comparable base commit; skipping desktop prerelease"
exit 0
fi
if git diff --name-only "$BEFORE" HEAD | grep -qE '^(apps/desktop/|packages/desktop-bridge/|packages/browser-protocol/)'; then
if git diff --name-only "$BEFORE" HEAD | grep -qE '^(apps/desktop/|packages/desktop-bridge/|packages/browser-protocol/|\.github/workflows/(ci|desktop-release)\.yml$)'; then
echo "changed=true" >> "$GITHUB_OUTPUT"
echo "✅ Desktop shell code changed"
else
Expand Down Expand Up @@ -221,15 +221,18 @@ jobs:
file: ${{ matrix.dockerfile }}
platforms: linux/amd64
tags: ${{ steps.login-ecr.outputs.registry }}/${{ steps.ecr-repo.outputs.name }}:${{ github.sha }}-dev
build-args: |
SIM_SEARCH_LIVE_DEFAULT=true
MSHIP_PLAN_MODE_DEFAULT=true
max-cache-size-mb: ${{ matrix.cache_mb }}

# Build and upload tasks alongside tests and images. The unpromoted version
# cannot serve new runs; promote-images waits for it and successful migrations.
# Staging/production coordinate task releases with app traffic cutover.
# Dev tasks deploy independently in deploy-trigger-dev.yml.
prepare-trigger:
name: Prepare Trigger.dev
if: >-
github.event_name == 'push' &&
(github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/dev')
(github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging')
runs-on: ${{ (vars.CI_PROVIDER == '' || vars.CI_PROVIDER == 'blacksmith') && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }}
timeout-minutes: 30
outputs:
Expand Down Expand Up @@ -265,7 +268,6 @@ jobs:
case "$GITHUB_REF" in
refs/heads/main) TRIGGER_ENV=prod; TRIGGER_BRANCH='' ;;
refs/heads/staging) TRIGGER_ENV=staging; TRIGGER_BRANCH='' ;;
refs/heads/dev) TRIGGER_ENV=preview; TRIGGER_BRANCH=dev-sim ;;
*) echo "ERROR: unsupported Trigger release ref: $GITHUB_REF" >&2; exit 1 ;;
esac
echo "environment=$TRIGGER_ENV" >> "$GITHUB_OUTPUT"
Expand Down Expand Up @@ -426,8 +428,9 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
max-cache-size-mb: ${{ matrix.cache_mb }}

# Promote the sha-tagged ECR images once tests, migrations, and the Trigger
# upload pass. Pushing the ECR latest/staging tag is what triggers
# Promote the sha-tagged ECR images once their build and migrations pass.
# Staging/production also require the Trigger upload; dev never waits for it.
# Pushing the ECR latest/staging/dev tag is what triggers
# CodePipeline, so this seconds-long manifest retag is the deploy gate —
# the image builds themselves run in parallel with the tests. A single job
# (not a matrix) so all four sha manifests are verified before any tag
Expand All @@ -438,9 +441,9 @@ jobs:
# Explicit results: see migrate's comment.
if: >-
!cancelled() && github.event_name == 'push' &&
needs.prepare-trigger.result == 'success' &&
(
((github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging') &&
needs.prepare-trigger.result == 'success' &&
needs.migrate.result == 'success' &&
needs.build-amd64.result == 'success') ||
(github.ref == 'refs/heads/dev' &&
Expand Down Expand Up @@ -546,7 +549,7 @@ jobs:
fi
done

# Promote the parked Trigger.dev version after observing the ECS
# Staging/production: promote the parked Trigger.dev version after observing the ECS
# traffic cutover (CodeDeploy AllowTraffic on every target). The image retag
# triggers the ECS pipeline; this job correlates it via the digest + retag epoch
# (rejecting a stale execution reusing the digest) and promotes at cutover.
Expand All @@ -560,14 +563,13 @@ jobs:
if: >-
!cancelled() &&
github.event_name == 'push' &&
(github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/dev') &&
(github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging') &&
needs.promote-images.result == 'success' &&
needs.prepare-trigger.result == 'success' &&
needs.promote-images.outputs.promoted == 'true'
runs-on: ${{ (vars.CI_PROVIDER == '' || vars.CI_PROVIDER == 'blacksmith') && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }}
# Leave setup/promotion headroom above the cutover poll (dev: 20 min;
# staging/prod: 70 min, including a deploy queued behind a long bake).
timeout-minutes: ${{ github.ref == 'refs/heads/dev' && 40 || 90 }}
# Leave setup/promotion headroom above the 70-minute cutover poll.
timeout-minutes: 90
permissions:
contents: read
id-token: write
Expand Down Expand Up @@ -599,14 +601,13 @@ jobs:
with:
role-to-assume: ${{ github.ref == 'refs/heads/main' && secrets.AWS_ROLE_TO_ASSUME || github.ref == 'refs/heads/dev' && secrets.DEV_AWS_ROLE_TO_ASSUME || secrets.STAGING_AWS_ROLE_TO_ASSUME }}
aws-region: ${{ github.ref == 'refs/heads/main' && secrets.AWS_REGION || github.ref == 'refs/heads/dev' && secrets.DEV_AWS_REGION || secrets.STAGING_AWS_REGION }}
# Match each environment's session budget; both outlast their polls.
role-duration-seconds: ${{ github.ref == 'refs/heads/dev' && 2400 || 5400 }}
role-duration-seconds: 5400

# An unchanged tag may belong to a failed or still-running earlier deploy.
# Verify its latest cutover rather than treating tag equality as success.
- name: Wait for ECS traffic cutover
env:
OVERALL_TIMEOUT: ${{ github.ref == 'refs/heads/dev' && 1200 || 4200 }}
OVERALL_TIMEOUT: 4200
APP_IMAGE_CHANGED: ${{ needs.promote-images.outputs.app_image_changed }}
DIGEST: ${{ needs.promote-images.outputs.app_image_digest }}
PIPELINE: sim-${{ github.ref == 'refs/heads/main' && 'production' || github.ref == 'refs/heads/dev' && 'dev' || 'staging' }}-us-east-1-app-deployment
Expand Down Expand Up @@ -1311,24 +1312,30 @@ jobs:
name: Prune Desktop Prereleases
runs-on: ${{ (vars.CI_PROVIDER == '' || vars.CI_PROVIDER == 'blacksmith') && 'blacksmith-2vcpu-ubuntu-2404' || 'ubuntu-latest' }}
timeout-minutes: 5
needs: [publish-desktop-prerelease]
needs: [create-desktop-prerelease, publish-desktop-prerelease]
permissions:
contents: read
env:
GH_TOKEN: ${{ secrets.DESKTOP_RELEASE_TOKEN }}
GH_REPO: simstudioai/sim-desktop-releases
CURRENT_TAG: ${{ needs.create-desktop-prerelease.outputs.version }}
steps:
- name: Delete stale prereleases
run: |
set -euo pipefail
: "${CURRENT_TAG:?Current publication tag is required before pruning}"
if [ -z "$GH_TOKEN" ]; then
echo "::error::DESKTOP_RELEASE_TOKEN is required to prune desktop prereleases."
exit 1
fi
if [ "$GITHUB_REF" = "refs/heads/dev" ]; then CHANNELS='(dev|alpha)'; else CHANNELS='(staging|beta)'; fi
gh release list --limit 100 --json tagName,isPrerelease,isDraft,createdAt \
--jq "[.[] | select(.isPrerelease and (.isDraft | not) and (.tagName | test(\"-${CHANNELS}\\\\.\")))] | sort_by(.createdAt) | reverse | .[5:] | .[].tagName" |
# createdAt follows the tag's commit: published releases in the release-only
# repository can all share it. Retain by publication time, with deterministic ties.
gh release list --limit 100 --json tagName,isPrerelease,isDraft,publishedAt \
--jq "[.[] | select(.isPrerelease and (.isDraft | not) and (.tagName | test(\"-${CHANNELS}\\\\.\")))] | sort_by(.publishedAt, .tagName) | reverse | .[5:] | .[].tagName" |
while read -r TAG; do
[ -n "$TAG" ] || continue
[ "$TAG" != "$CURRENT_TAG" ] || continue
echo "Deleting stale prerelease $TAG"
gh release delete "$TAG" --cleanup-tag --yes
done
Expand Down
75 changes: 75 additions & 0 deletions .github/workflows/deploy-trigger-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Deploy Dev Tasks

# Independent of app CI: task packaging and deployment must never delay dev images.
on:
push:
branches: [dev]

permissions:
contents: read

# Serialize promotions without cancelling an external deployment in flight.
# Pending pushes coalesce to the newest run while the current run finishes.
concurrency:
group: deploy-trigger-dev
cancel-in-progress: false

jobs:
deploy:
name: Deploy Trigger.dev preview
runs-on: ${{ (vars.CI_PROVIDER == '' || vars.CI_PROVIDER == 'blacksmith') && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout code
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6

- name: Setup Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
with:
bun-version: 1.4.1

- name: Cache Bun dependencies
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
with:
path: |
~/.bun/install/cache
node_modules
**/node_modules
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-

- name: Install dependencies
run: bun install --frozen-lockfile --ignore-scripts

- name: Upload preview version
id: deploy
working-directory: ./apps/sim
env:
TRIGGER_ACCESS_TOKEN: ${{ secrets.TRIGGER_ACCESS_TOKEN }}
TRIGGER_PROJECT_ID: ${{ secrets.TRIGGER_PROJECT_ID }}
run: |
set -euo pipefail
: "${TRIGGER_ACCESS_TOKEN:?TRIGGER_ACCESS_TOKEN must be configured}"
: "${TRIGGER_PROJECT_ID:?TRIGGER_PROJECT_ID must be configured}"
bunx trigger.dev@4.5.16 deploy --env preview --branch dev-sim --skip-promotion

- name: Promote current dev preview
working-directory: ./apps/sim
env:
GH_TOKEN: ${{ github.token }}
TRIGGER_ACCESS_TOKEN: ${{ secrets.TRIGGER_ACCESS_TOKEN }}
TRIGGER_PROJECT_ID: ${{ secrets.TRIGGER_PROJECT_ID }}
VERSION: ${{ steps.deploy.outputs.deploymentVersion }}
run: |
set -euo pipefail
if ! [[ "$VERSION" =~ ^[0-9]{8}\.[0-9]+$ ]]; then
echo "ERROR: Trigger.dev did not report a valid deploymentVersion output" >&2
exit 1
fi
CURRENT_SHA=$(gh api "repos/$GITHUB_REPOSITORY/git/ref/heads/dev" --jq '.object.sha')
if [ "$CURRENT_SHA" != "$GITHUB_SHA" ]; then
echo "::notice::Skipping superseded dev task version $VERSION"
exit 0
fi
bunx trigger.dev@4.5.16 promote "$VERSION" --env preview --branch dev-sim
13 changes: 3 additions & 10 deletions .github/workflows/migrations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ jobs:
MIGRATION_DATABASE_URL: ${{ inputs.environment == 'production' && secrets.MIGRATION_DATABASE_URL || inputs.environment == 'staging' && secrets.STAGING_MIGRATION_DATABASE_URL || '' }}
ENVIRONMENT: ${{ inputs.environment }}
run: |
set -euo pipefail

if [ -z "$DATABASE_URL" ]; then
echo "ERROR: no database URL secret resolved for environment '${ENVIRONMENT}'" >&2
exit 1
Expand All @@ -73,16 +75,7 @@ jobs:
echo "Dev environment — pushing schema directly (db:push)"
# Dev deliberately forces direct schema reconciliation; staging and
# production use guarded versioned migrations in the other branch.
# drizzle-kit push needs a TTY to resolve ambiguous renames (--force only
# covers data-loss). In CI it throws "Interactive prompts require a TTY
# terminal" but still exits 0, so the job goes green without applying the
# change. tee keeps the output live in the log; we then fail on drizzle's
# own TTY error. A genuine non-zero exit already fails via `set -e`.
bun run db:push --force < /dev/null 2>&1 | tee /tmp/db-push.log
if grep -q "Interactive prompts require a TTY terminal" /tmp/db-push.log; then
echo "ERROR: db:push needs an interactive rename decision; land it as a versioned migration instead of relying on push." >&2
exit 1
fi
SIM_DEV_DB_PUSH=1 bun run db:push --force < /dev/null
else
echo "Applying versioned migrations (db:migrate)"
bun run ./scripts/migrate.ts
Expand Down
11 changes: 10 additions & 1 deletion .github/workflows/test-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,12 @@ jobs:
- name: Install dependencies
run: bun install --frozen-lockfile --ignore-scripts

- name: Verify direct schema push compatibility
working-directory: packages/db
env:
DB_PUSH_TEST_DATABASE_URL: postgresql://postgres:postgres@127.0.0.1:5432/postgres
run: bunx vitest run scripts/push.postgres.test.ts

- name: Provision a fresh database through the supported command
working-directory: packages/db
run: |
Expand Down Expand Up @@ -233,14 +239,16 @@ jobs:
if-no-files-found: ignore
retention-days: 7

- name: Verify durable provenance, concurrent memory writes, and attachment replay
- name: Verify durable provenance, concurrent memory writes, and browser download admission
working-directory: apps/sim
env:
BROWSER_FILE_TRANSFER_TEST_DATABASE_URL: postgresql://postgres:postgres@127.0.0.1:5432/sim_auth_scim
TABLE_PROVENANCE_TEST_DATABASE_URL: postgresql://postgres:postgres@127.0.0.1:5432/sim_auth_scim
MEMORY_PROVENANCE_TEST_DATABASE_URL: postgresql://postgres:postgres@127.0.0.1:5432/sim_auth_scim
AGENT_MEMORY_TEST_DATABASE_URL: postgresql://postgres:postgres@127.0.0.1:5432/sim_auth_scim
run: >-
bunx vitest run
lib/mothership/async-runs/browser-download-claim.postgres.test.ts
lib/table/rows/secret-provenance.postgres.test.ts
lib/memory/message-provenance.postgres.test.ts
lib/memory/conversation-store.postgres.test.ts
Expand All @@ -256,6 +264,7 @@ jobs:
script-migrations/0016_backfill_search_vectors.postgres.test.ts
script-migrations/0018_repair_workspace_file_content_revision.postgres.test.ts
script-migrations/0019_tin_keyword_projection.postgres.test.ts
member-sync-status-migration.postgres.test.ts

- name: Verify Search progress, pagination, and outbox scheduling in PostgreSQL
working-directory: apps/sim
Expand Down
Loading
Loading