Skip to content

Commit c7ccee5

Browse files
committed
Merge remote-tracking branch 'origin/staging' into feat/files-set-file-type
2 parents 214bf61 + e6a17b0 commit c7ccee5

308 files changed

Lines changed: 6963 additions & 5225 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/skills/ship/SKILL.md

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -65,21 +65,10 @@ When the user runs `/ship`:
6565
echo "❌ block registry audit failed — do not ship"
6666
exit 1
6767
}
68-
rm -f /tmp/ship-audit-results
69-
for s in check:boundaries check:api-validation:strict check:desktop-bridge check:desktop-ipc \
70-
check:utils check:zustand-v5 \
71-
check:react-query check:client-boundary check:bare-icons check:icon-paths \
72-
check:realtime-prune check:tool-registry-boundary check:tool-request-boundary \
73-
tool-metadata:check \
74-
integration-catalog:check skills:check agent-stream-docs:check; do
75-
( bun run "$s" >"/tmp/ship-audit-${s//:/-}.log" 2>&1; echo "$? $s" >>/tmp/ship-audit-results ) &
76-
done
77-
wait
78-
# any non-zero line is a failing audit — read its /tmp/ship-audit-<name>.log and fix before shipping.
79-
# `exit 1` on failure preserves the original sequential checks' semantics (their non-zero exit is
80-
# what an agent gates on); never use `grep … && echo ❌ || echo ✅` here — it always exits 0.
81-
if grep -vE '^0 ' /tmp/ship-audit-results; then echo "❌ audit(s) failed — do not ship"; exit 1; fi
82-
echo "✅ all audits passed"
68+
# Runs every audit CI runs, concurrently, and replays the output of any that fail.
69+
# Do not hand-list the audits here: the list is derived in scripts/run-audits.ts, and the
70+
# copy that used to live in this file had already drifted five audits behind package.json.
71+
bun run check:audits || { echo "❌ audit(s) failed — do not ship"; exit 1; }
8372
```
8473
If Phase A regenerated a file, its matching `:check` in Phase B now passes trivially — that parity is the point. Do not ship with any generator or audit failing; fix the cause (never silence it) and re-run. `check:migrations` and `type-check` are covered by steps 5 and CI respectively and are not repeated here.
8574
7. **Stage and commit** the changes with the generated message — including any files Phase A regenerated in step 6

.claude/commands/ship.md

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -64,21 +64,10 @@ When the user runs `/ship`:
6464
echo "❌ block registry audit failed — do not ship"
6565
exit 1
6666
}
67-
rm -f /tmp/ship-audit-results
68-
for s in check:boundaries check:api-validation:strict check:desktop-bridge check:desktop-ipc \
69-
check:utils check:zustand-v5 \
70-
check:react-query check:client-boundary check:bare-icons check:icon-paths \
71-
check:realtime-prune check:tool-registry-boundary check:tool-request-boundary \
72-
tool-metadata:check \
73-
integration-catalog:check skills:check agent-stream-docs:check; do
74-
( bun run "$s" >"/tmp/ship-audit-${s//:/-}.log" 2>&1; echo "$? $s" >>/tmp/ship-audit-results ) &
75-
done
76-
wait
77-
# any non-zero line is a failing audit — read its /tmp/ship-audit-<name>.log and fix before shipping.
78-
# `exit 1` on failure preserves the original sequential checks' semantics (their non-zero exit is
79-
# what an agent gates on); never use `grep … && echo ❌ || echo ✅` here — it always exits 0.
80-
if grep -vE '^0 ' /tmp/ship-audit-results; then echo "❌ audit(s) failed — do not ship"; exit 1; fi
81-
echo "✅ all audits passed"
67+
# Runs every audit CI runs, concurrently, and replays the output of any that fail.
68+
# Do not hand-list the audits here: the list is derived in scripts/run-audits.ts, and the
69+
# copy that used to live in this file had already drifted five audits behind package.json.
70+
bun run check:audits || { echo "❌ audit(s) failed — do not ship"; exit 1; }
8271
```
8372
If Phase A regenerated a file, its matching `:check` in Phase B now passes trivially — that parity is the point. Do not ship with any generator or audit failing; fix the cause (never silence it) and re-run. `check:migrations` and `type-check` are covered by steps 5 and CI respectively and are not repeated here.
8473
7. **Stage and commit** the changes with the generated message — including any files Phase A regenerated in step 6

.cursor/commands/ship.md

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -59,21 +59,10 @@ When the user runs `/ship`:
5959
echo "❌ block registry audit failed — do not ship"
6060
exit 1
6161
}
62-
rm -f /tmp/ship-audit-results
63-
for s in check:boundaries check:api-validation:strict check:desktop-bridge check:desktop-ipc \
64-
check:utils check:zustand-v5 \
65-
check:react-query check:client-boundary check:bare-icons check:icon-paths \
66-
check:realtime-prune check:tool-registry-boundary check:tool-request-boundary \
67-
tool-metadata:check \
68-
integration-catalog:check skills:check agent-stream-docs:check; do
69-
( bun run "$s" >"/tmp/ship-audit-${s//:/-}.log" 2>&1; echo "$? $s" >>/tmp/ship-audit-results ) &
70-
done
71-
wait
72-
# any non-zero line is a failing audit — read its /tmp/ship-audit-<name>.log and fix before shipping.
73-
# `exit 1` on failure preserves the original sequential checks' semantics (their non-zero exit is
74-
# what an agent gates on); never use `grep … && echo ❌ || echo ✅` here — it always exits 0.
75-
if grep -vE '^0 ' /tmp/ship-audit-results; then echo "❌ audit(s) failed — do not ship"; exit 1; fi
76-
echo "✅ all audits passed"
62+
# Runs every audit CI runs, concurrently, and replays the output of any that fail.
63+
# Do not hand-list the audits here: the list is derived in scripts/run-audits.ts, and the
64+
# copy that used to live in this file had already drifted five audits behind package.json.
65+
bun run check:audits || { echo "❌ audit(s) failed — do not ship"; exit 1; }
7766
```
7867
If Phase A regenerated a file, its matching `:check` in Phase B now passes trivially — that parity is the point. Do not ship with any generator or audit failing; fix the cause (never silence it) and re-run. `check:migrations` and `type-check` are covered by steps 5 and CI respectively and are not repeated here.
7968
7. **Stage and commit** the changes with the generated message — including any files Phase A regenerated in step 6

.github/workflows/test-build.yml

Lines changed: 5 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -117,70 +117,11 @@ jobs:
117117
- name: Lint code
118118
run: bun run lint:check
119119

120-
- name: Enforce monorepo boundaries
121-
run: bun run check:boundaries
122-
123-
- name: API contract boundary audit
124-
run: bun run check:api-validation:strict
125-
126-
- name: Desktop bridge contract audit
127-
run: bun run check:desktop-bridge
128-
129-
# Complements the bridge audit above, which compares against a snapshot
130-
# this same PR is allowed to regenerate. This one derives every fact from
131-
# the source both sides execute, so it has no such blind spot.
132-
- name: Desktop IPC contract audit
133-
run: bun run check:desktop-ipc
134-
135-
- name: Shared utils enforcement audit
136-
run: bun run check:utils
137-
138-
- name: Zustand v5 selector audit
139-
run: bun run check:zustand-v5
140-
141-
- name: React Query pattern audit
142-
run: bun run check:react-query
143-
144-
- name: Client boundary import audit
145-
run: bun run check:client-boundary
146-
147-
- name: Bare-icon theme-safety audit
148-
run: bun run check:bare-icons
149-
150-
- name: Icon SVG path validity audit
151-
run: bun run check:icon-paths
152-
153-
- name: Verify realtime prune graph
154-
run: bun run check:realtime-prune
155-
156-
- name: Tool registry client-boundary audit
157-
run: bun run check:tool-registry-boundary
158-
159-
- name: Tool request transport boundary audit
160-
run: bun run check:tool-request-boundary
161-
162-
- name: Trigger/block initialization cycle audit
163-
run: bun run check:trigger-block-cycle
164-
165-
# This job builds with webpack; devs run Turbopack. A specifier only webpack
166-
# resolves passes here and breaks every dev server.
167-
- name: Import specifier hygiene audit
168-
run: bun run check:import-specifiers
169-
170-
- name: SQL Date binding audit
171-
run: bun run check:sql-date-binding
172-
173-
- name: Verify generated tool metadata is in sync
174-
run: bun run tool-metadata:check
175-
176-
- name: Verify integration deployment metadata is in sync
177-
run: bun run integration-catalog:check
178-
179-
- name: Verify skill projections are in sync
180-
run: bun run skills:check
181-
182-
- name: Verify agent stream capability docs are in sync
183-
run: bun run agent-stream-docs:check
120+
# Every zero-argument `check:*` script, run concurrently. The list is derived in
121+
# scripts/run-audits.ts, which also writes the per-audit timing table to the job
122+
# summary and annotates failures. Audits needing a base ref stay separate below.
123+
- name: Repo audits
124+
run: bun run check:audits
184125

185126
- name: Migration safety (zero-downtime) audit
186127
run: |
@@ -192,12 +133,6 @@ jobs:
192133
fi
193134
bun run check:migrations "$BASE_REF"
194135
195-
# Runs before the type-check itself: if a bare `tsc` has fallen back to the
196-
# JavaScript TypeScript 6 compiler that `@typescript/typescript6` drags in
197-
# transitively, the type-check below still passes — it just takes ~10x longer.
198-
- name: Native type-check audit
199-
run: bun run check:native-typecheck
200-
201136
# Every workspace, not just realtime. packages/emcn, packages/utils,
202137
# apps/desktop and apps/docs had no type check in CI at all; apps/sim's
203138
# source was covered only as a side effect of `next build` in the separate
@@ -236,21 +171,6 @@ jobs:
236171
fi
237172
echo "✅ Schema and migrations are in sync"
238173
239-
# DEAD PATH: nothing generates `apps/sim/coverage`. The test step runs
240-
# `vitest run` without `--coverage`, and vitest.config.ts declares no
241-
# coverage provider, so this uploads nothing and still reports success in
242-
# ~1s (`fail_ci_if_error: false` hides it). `@vitest/coverage-v8` IS
243-
# installed, so wiring it up is possible — but coverage instrumentation
244-
# costs test time and nothing gates on the result today. Left in place
245-
# pending a decision to either enable coverage or drop this step; do not
246-
# read its green tick as "coverage was published".
247-
- name: Upload coverage to Codecov
248-
uses: codecov/codecov-action@0fb7174895f61a3b6b78fc075e0cd60383518dac # v5
249-
with:
250-
directory: ./apps/sim/coverage
251-
fail_ci_if_error: false
252-
verbose: true
253-
254174
# Next.js production build, in parallel with lint + tests. Sticky disks are
255175
# cloned from the last committed snapshot per job and committed last-writer-
256176
# wins, so concurrent mounts are safe. The bun/node_modules disks are shared

apps/desktop/src/main/channel-identity.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
import { describe, expect, it } from 'vitest'
1+
import { describe, expect, it, vi } from 'vitest'
2+
3+
vi.mock('electron', () => import('@/test/electron-mock'))
4+
25
import { APP_NAME_FOR_CHANNEL, channelForOrigin, DEFAULT_ORIGIN } from '@/main/config'
36
import { classifyNavigation } from '@/main/navigation'
47
import { DEV, identityForOrigin, LOCAL, PROD, STAGING } from '../../scripts/channels'

apps/docs/content/docs/en/integrations/a2a.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Use the A2A (Agent-to-Agent) protocol to call external AI agents over the latest
2828

2929
## Tools
3030

31-
### `a2a_send_message`
31+
### A2A Send Message
3232

3333
Send a message to an external A2A agent and return its response.
3434

@@ -54,7 +54,7 @@ Send a message to an external A2A agent and return its response.
5454
| `state` | string | Task lifecycle state: `submitted`, `working`, `input-required`, `auth-required`, `completed`, `failed`, `canceled`, or `rejected` |
5555
| `artifacts` | array | Structured task output artifacts |
5656

57-
### `a2a_get_task`
57+
### A2A Get Task
5858

5959
Retrieve the current state and result of an A2A task.
6060

@@ -77,7 +77,7 @@ Retrieve the current state and result of an A2A task.
7777
| `state` | string | Task lifecycle state |
7878
| `artifacts` | array | Structured task output artifacts |
7979

80-
### `a2a_cancel_task`
80+
### A2A Cancel Task
8181

8282
Request cancellation of an in-progress A2A task.
8383

@@ -97,7 +97,7 @@ Request cancellation of an in-progress A2A task.
9797
| `state` | string | Task lifecycle state after cancellation |
9898
| `canceled` | boolean | Whether the task reached the canceled state |
9999

100-
### `a2a_get_agent_card`
100+
### A2A Get Agent Card
101101

102102
Fetch the Agent Card (discovery document) for an external A2A agent.
103103

0 commit comments

Comments
 (0)