Repository navigation
feat(synthos): add GCH Night Riders workspace and scoped agent workflows - #1
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 00f79721c2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| export function synthosContextRequiredScope(command: SynthosContextCommand): AuthEnvironmentScope { | ||
| return command.type === "save_settings" ? "orchestration:operate" : "orchestration:read"; |
There was a problem hiding this comment.
Enforce filesystem authorization before returning vault excerpts
With an Obsidian vault configured and notes pinned or approved for recall, a session holding only orchestration:read can call context preview and receive their contents. SynthosContext.build reads those notes directly through vault.read, whereas the explicit obsidian.read operation requires filesystem:read in synthosConnectionRequiredScope. A session with orchestration:operate can also configure arbitrary vault note paths without that filesystem permission. Apply the same filesystem access boundary to context configuration and retrieval so these endpoints cannot bypass the existing vault-read restriction.
Useful? React with 👍 / 👎.
| const revision = yield* Effect.tryPromise(() => | ||
| runGit("git", ["rev-parse", "HEAD"], { cwd: root, timeout: 5000 }), |
There was a problem hiding this comment.
Freeze initial context against the requested workflow base
When a workflow is created with a valid baseRef pointing to a different commit than the project's current HEAD, its first dispatch always fails with context_source_changed: context assembly records HEAD here, but SynthosRuntime.launch passes workflow.baseRef to validate, which compares that ref's revision against the recorded revision. Retrying rebuilds the same mismatched manifest. Pass the requested base into context assembly and read its repository guidance and revision consistently before launching the initial worktree.
Useful? React with 👍 / 👎.
| world.update(state, clock); | ||
| render(); | ||
| } | ||
| frame = requestAnimationFrame(tick); |
There was a problem hiding this comment.
Replace continuous highway rendering with bounded updates
While a selected workflow's provider is running, the cockpit enables motion by default and this loop continuously updates and redraws the WebGL scene for the entire turn. Visibility checks and the 30-fps cap limit the work but do not stop persistent GPU rendering during normal foreground use. Render on state changes or use bounded transitions instead of a continuously repainting animation, as explicitly required by the repository's performance guidance.
AGENTS.md reference: AGENTS.md:L209-L209
Useful? React with 👍 / 👎.
| export const buildPairingAppLink = (pairingUrl: string): string => | ||
| `t3code://pair?${new URLSearchParams([[PAIRING_APP_LINK_PARAM, pairingUrl]])}`; | ||
| `synthos://pair?${new URLSearchParams([[PAIRING_APP_LINK_PARAM, pairingUrl]])}`; |
There was a problem hiding this comment.
Keep generated app links compatible with the mobile schemes
On iOS and Android, the generated pairing app links now use synthos://, but apps/mobile/app.config.ts:78-99 still registers only the t3code channel schemes and apps/mobile/src/App.tsx:125 accepts only those prefixes. Consequently these links cannot open the mobile client; scanning one inside the app also fails because extractPairingUrlFromQrPayload only unwraps t3code:. The changed default in promptLinkDeepLink similarly breaks the phone's hosted “Open in app” flow. Preserve a mobile-compatible scheme in shared link generation or update the native registration, navigation, and QR parsing together.
AGENTS.md reference: AGENTS.md:L70-L70
Useful? React with 👍 / 👎.
SynthOS adds a GCH control room to this T3 Code fork, sharing its projects, threads, provider execution, editor, terminal and authentication. The Night Riders cockpit brings the synthwave car-and-bike interface together with durable multi-model crew roles, scoped memory and graph evidence, reviewed mail/device intake, usage reconciliation and fixed CLI version probes.
Context packets preserve the GCH policy and freeze source/version evidence. Apple silicon packaging uses the SynthOS app identity and separate desktop state. This branch also integrates the current main without application-code conflicts.
Validation:
vp run check:changed origin/mainpassed on integrated head00f79721c2d82d53c30070a571fb5d3fccc47519: 541 tests across 70 files, all 36 affected package typechecks, lint, formatting, both knip passes, generated GraphQL checks, and unused-patch verification. The tracked worktree remains clean. Earlier native macOS ARM64 run 40840599058 passed, and its exact archive, internal checksums, app identity and architecture were independently verified. The synthetic context benchmark passes 8/8 routed cases versus 2/8 packet-only, with zero model calls; it does not establish model quality or billing savings.This merges the implemented development platform. The five independent QA reviews and consolidated seven-batch refinement plan are saved separately in the portable Mac handoff. Private-context authorization, accepted-launch recovery/usage settlement, and fork-safe managed SSH remain priority follow-ups. Use local/manual qualified fork connections for continued development. Real Obsidian vault linkage, hosted Braintrust evaluation and physical hardware qualification remain unverified. The existing desktop artifact is unsigned, not notarized, and has not been launch-tested on the intended Mac.
Model/harness: Codex (GPT-6).