AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證pgAgent — 原生 macOS 與 iPadOS PostgreSQL 與 SSH 工作區:終端、SFTP 與資料庫工具,基於記憶體安全的 Rust 核心,透過 UniFFI 與 Swift 橋接。
AI 翻譯
pgAgent — native macOS & iPadOS PostgreSQL & SSH workspace: terminal, SFTP, and database tooling over a memory-safe Rust core bridged to Swift with UniFFI.
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Native macOS / iPadOS SSH workspace. AppKit + SwiftUI shell, SwiftTerm for the PTY, ssh-commander-core for the protocol layer, uniffi for the FFI bridge.
• Apple silicon Mac on macOS 27+ with Xcode 27+ (Swift 6.4+) and command-line tools (xcode-select --install) — the apps deploy at macOS 27 / iOS 27
• PostgreSQL 14+ for database connections and fleet monitoring
• Rust 1.95+ (edition 2024) — rustup default stable
• just — brew install just
• xcodegen — brew install xcodegen (auto-installed by just mac-bootstrap)檢視完整 README ↗Native macOS / iPadOS SSH workspace. AppKit + SwiftUI shell, SwiftTerm for the PTY, ssh-commander-core for the protocol layer, uniffi for the FFI bridge.
| Layer | Lives in | Notes |
|---|---|---|
| App shell | PgAgentApp/, PgAgentMobile/ | AppKit window + SwiftUI views, SwiftTerm |
| Swift framework | Sources/PgAgentMacOS/ | Cross-target models, stores |
| FFI bridge | src/ | Rust → Swift via uniffi proc-macros |
| Generated bindings | bindings/ | midnight_ssh.swift, midnight_sshFFI.h, module.modulemap |
| Protocol layer | crates.io: ssh-commander-core, ssh-commander-pg-parquet | external |
| Xcode project | Mc-Ssh.xcodeproj | generated from project.yml by xcodegen |
xcode-select --install) — the apps deploy at macOS 27 / iOS 27rustup default stablejust — brew install justxcodegen — brew install xcodegen (auto-installed by just mac-bootstrap)Verified backup and restore jobs run on the profile's SSH execution host. That
host needs compatible pg_dump / pg_restore / psql binaries and a mode-0600
~/.pgpass entry. Direct managed-cloud databases can use a small SSH runner or
jump host with network access to the provider endpoint.
just bootstrap # one-time: xcodegen + macOS + iOS Rust targets
# Native macOS app (ad-hoc signed, opens Finder window)
just mac-build
just mac-run
# iPad simulator (boots a sim, installs, launches)
just run-on-ipad-sim "iPad Pro"
# Physical iPad connected over USB/Wi-Fi (auto-provisions, installs, launches)
just run-on-ipad Dashboard
# Full local CI pass
just ci-local
Run just (no args) for the full recipe list.
# 1. Edit src/ffi.rs or src/lib.rs
# 2. Regenerate Swift bindings
just mac-bindings
# 3. Rebuild
just mac-build
The bindings under bindings/ are committed — regenerate and commit them whenever the FFI changes. Hand-patching bindings/midnight_ssh.swift will appear to work but the per-function uniffi checksums will diverge from what the Rust lib reports at runtime, and rshellInit() will panic with _assertionFailure.
project.ymljust mac-gen # regenerate Mc-Ssh.xcodeproj
The xcodeproj is gitignored — mac-gen is automatic before any mac-* build via _ensure-xcodeproj.
export APPLE_SIGNING_IDENTITY="Developer ID Application: Your Name (TEAMID)"
export APPLE_ID="…"
export APPLE_TEAM_ID="…"
export APPLE_APP_SPECIFIC_PASSWORD="…"
just mac-release true # build → DMG → notarize → staple
For a build-only DMG without notarization, drop the env vars and run just mac-release (defaults to false).
just mac-sparkle-keygen # one-time, populate Info.plist with the public key
just mac-sparkle-appcast ./dist # generate appcast.xml from a folder of DMGs
.
├── Cargo.toml # FFI crate manifest
├── build.rs # uniffi build hook
├── uniffi-bindgen.rs # bindgen entry point (cargo run --bin uniffi-bindgen)
├── src/ # Rust FFI bridge (bridge.rs, ffi.rs, monitor.rs)
├── bindings/ # generated Swift bindings (committed)
├── project.yml # XcodeGen manifest (single source of truth)
├── Mc-Ssh.xcodeproj/ # generated; gitignored
├── Package.swift # SPM wrapper around the static lib
├── Sources/PgAgentMacOS/ # cross-target Swift framework (models + stores)
├── PgAgentApp/ # macOS app target — SwiftUI views + managers
├── PgAgentMobile/ # iPadOS / iOS app target
├── Tests/ # XCTest harness (PgAgentMacOS + PgAgentApp + Beta smoke)
├── scripts/ # release, notarize, find-sparkle-tool helpers
├── justfile # command surface
├── README.md # you are here
├── AGENTS.md # AI-agent code tour
└── TOOLS.md # in-app feature catalog
error: There is no XCFramework found at .../Sparkle.xcframework — stale Xcode SourcePackages cache pinned to the old absolute path. Wipe and regenerate:
rm -rf build .build Mc-Ssh.xcodeproj
just mac-gen
just mac-build
Thread 3 Crashed: rshellInit() → _assertionFailure — uniffi binding checksums don't match the rebuilt Rust lib. Always regenerate via just mac-bindings after touching the FFI; never hand-edit the generated Swift.
Build is slow on first run — russh and parquet (transitive via ssh-commander-pg-parquet) compile from source. Subsequent incremental builds are fast.