79 Commits

Author SHA1 Message Date
42b336173e docs(protocol): enshrine black-box delegation and pre-review summary gate
- Add Section 3.5 to AGENTS.md for agent orchestration and tool autonomy
- Add Section E to tasks/GUIDELINES.md with pre-review summary gate
- Update tasks/do.md dispatch template with DRY positive acceptance criteria
- Align task lifecycle state machine to keep in-flight work in tasks/new/
2026-08-26 10:37:22 -07:00
google-labs-jules[bot]
afaecdaa26 Extract WebAuthn Components & Deduplicate Assets
- Extracted `PasskeyTable` and `WebAuthnScript` into `ui/components/auth/`.
- Refactored `PasskeysPage.tsx` and `RegisterPage.tsx` to use the new components instead of inline scripts and HTML.
- Deleted the duplicate `ui/public/ui/utils/bip39_wordlist.ts` and `ui/public/ui/utils/bip39.ts`.
- Updated all import references to use `ui/utils/bip39_wordlist.ts` and `/public/utils/bip39.ts`.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 06:54:29 +00:00
f5935a49a7 docs(tasks): move ui decomposition ph1 to complete and format subcomponents 2026-08-25 23:39:39 -07:00
dc2b5488c8 docs(tasks): establish discrete phase task files ph1 through ph3 for ui decomposition roadmap 2026-08-25 22:48:17 -07:00
google-labs-jules[bot]
0249938459 chore: Create UI Component Decomposition Roadmap task spec
Creates `tasks/new/2026-0825.01.jul.story.arch.ui-decomposition-roadmap-2300.md` containing the architectural analysis and phased execution plan for modularizing `ui/` monoliths into pure SSR JSX components while maintaining testability.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 05:46:56 +00:00
97edc7b89b docs(tasks): mark entire monolith decomposition roadmap epic complete 2026-08-25 22:33:00 -07:00
google-labs-jules[bot]
0d59c2ac75 refactor(test): decompose main.test.ts into domain specific test files
Extracted the 1,577-line monolithic `server/main.test.ts` into five isolated, domain-specific files under `server/tests/`:
- `forward_auth.test.ts`: ForwardAuth bypass, cookie scoping, and sandbox.
- `rpc.test.ts`: ConnectRPC SPIFFE and RBAC tests.
- `auth.test.ts`: Audit ledger, WebAuthn PRF, passkey magic links.
- `events.test.ts`: Multi-claim join endpoints and killswitch.
- `scopes.test.ts`: Zero-trust guards and self-revocations.

Successfully maintained all tests cleanly isolated via standard mocking and deleted `main.test.ts` after migrating and executing `deno test --allow-all` with zero failures.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 05:12:08 +00:00
e0c12bdef6 docs(tasks): move ph3.1 task spec to complete 2026-08-25 21:39:32 -07:00
google-labs-jules[bot]
752bfcf03e Refactor infra/setup/cli.ts into smaller command and prompt modules
Decomposes the monolith `infra/setup/cli.ts` into clean `infra/setup/prompts/` and `infra/setup/commands/` directories while adhering to Cliffy idiomatic modularity. Validated via `deno check`, tests, and format.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 04:37:41 +00:00
e7a2aa8df3 docs(tasks): establish refined modularization specs ph3.1 and ph4.1 2026-08-25 20:31:09 -07:00
google-labs-jules[bot]
88821b80af feat: Phase 3 Monolith decomposition of server/main.ts
- Extracts Auth, Registration, and Passkey routes into `server/routes/auth.ts`.
- Extracts all Admin API endpoints into `server/routes/admin.ts`.
- Extracts RPC Connect setup and mTLS listener into `server/rpc.ts`.
- Extracts global rate limiters and IP helpers into `server/middleware.ts`.
- Reduces `server/main.ts` purely to an entrypoint mounting orchestrator.
- Ensures all existing tests and quality gates pass with zero regressions.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 03:23:20 +00:00
67bbe0d1e9
Merge pull request #34 from mrteye/refactor-infra-setup-modules-16584207009061218557
Refactor: Decompose infra/setup.ts into modular sub-modules
2026-08-25 17:37:44 -07:00
google-labs-jules[bot]
4c7d8d4af7 feat(ui): decompose admin pages into reusable AdminTable and AdminModal components
Refactored AdminInvitesPage, AdminUserDetailsPage, AdminRolesPage, and AdminAppsPage to use the new pure Hono SSR JSX stateless components.
Fixed missing import definitions in AdminRolesPage.
Moved task file to complete state.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 00:34:29 +00:00
google-labs-jules[bot]
779f890b2f Refactored the 1,000+ line setup.ts into sub-modules
- Extracted CLI commands into infra/setup/cli.ts
- Extracted docker compose configuration to infra/setup/compose.ts
- Extracted env variable generation to infra/setup/env.ts
- Extracted build commands to infra/setup/build.ts
- Retained infra/setup.ts as a simple entrypoint orchestrator

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 00:34:24 +00:00
7df39bd27a docs(tasks): complete phase 1 ui sessions decomposition and format subcomponents 2026-08-25 16:22:32 -07:00
f912241937 docs(tasks): establish discrete phase task files ph1 through ph6 for monolith decomposition roadmap 2026-08-25 16:17:18 -07:00
5de9bdf18c
Merge pull request #32 from mrteye/ui-redesign-sessions-drawer-17867567827419767189
Redesign the Sessions management page header and drawer
2026-08-25 15:53:32 -07:00
google-labs-jules[bot]
64a9b2cd1d refactor(ui): Redesign and consolidate sessions and passes drawer
- Removed the dual top buttons from SessionsPage.tsx.
- Removed the `#eventDrawer` and wrapped its fields, buttons, and modal under `<form id="eventForm">` inside `#tabWorkshopPass` of `#delegateDrawer`.
- Wrapped the 1:1 Direct pass form fields, buttons, and modal under `<form id="delegateForm">` inside `#tabDirectPass` of `#delegateDrawer`.
- Added a vanilla Javascript tab switching logic for UI interaction without client-side frameworks.
- Removed deprecated `openEventDrawer` and `closeEventDrawer`.
- Replaced the single main button to trigger `openDelegateDrawer`.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-25 22:53:20 +00:00
6a5a769203 sec(auth-api): implement zero-trust scope guards and permission middleware 2026-08-25 15:39:54 -07:00
google-labs-jules[bot]
e54496b51f feat(protocol): add universal agent framework task specification
Drafts a task specification file `tasks/new/2026-0825.01.jul.story.protocol.universal-agent-framework-1945.md` outlining the extraction of the multi-agent orchestration workflow from Auth-Yes into a clean, reusable, repository-agnostic blueprint. This specification adheres to `tasks/GUIDELINES.md` and covers both a foundational architecture guide and a drop-in scaffolding template bundle.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-25 22:26:32 +00:00
d0a1492f6c docs(tasks): establish tasks/do.md execution protocol and link from path.md 2026-08-25 12:08:59 -07:00
36bad05b35
Merge pull request #29 from mrteye/jul-monolith-audit-16234354212497883361
story(arch): draft monolith decomposition roadmap
2026-08-25 11:56:17 -07:00
google-labs-jules[bot]
1353153df2 story(arch): draft monolith decomposition roadmap
Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-25 18:56:02 +00:00
f64777602d
Merge pull request #28 from mrteye/chore-ui-redesign-sessions-drawer-task-13578358291952217030
chore(tasks): add UI redesign task for sessions drawer
2026-08-25 11:19:43 -07:00
google-labs-jules[bot]
ad5cc14858 chore(tasks): add UI redesign task for sessions drawer
Create a system analysis task plan in `tasks/new/` detailing how to redesign
the Sessions management page's header and unified drawer, strictly adhering to
the Auth-Yes SSR JSX standards and vanilla JS implementations.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-25 18:19:28 +00:00
google-labs-jules[bot]
dad21ff257 sec(tasks): draft task for zero-trust scope guards
Drafts a comprehensive task specification for implementing zero-trust
scope guards on internal API routes and SSR UI pages, as requested.
The file adheres strictly to the repository's Kanban and Markdown
metadata guidelines.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-25 18:19:16 +00:00
a82136fc95 feat(cockpit): add live event metrics, seat roster, and master kill-switch 2026-08-25 09:33:44 -07:00
62fc91eb25 docs(tasks): point task 3 targets to server/routes/events.ts 2026-08-25 08:31:55 -07:00
40804fd813 feat(passes): implement ephemeral 1-click magic links, event passes, PIN join portal, and CLI 1-liner 2026-08-25 08:14:16 -07:00
google-labs-jules[bot]
2d34aa15a7 feat: implement ephemeral 1-click magic link redemption (/pass)
Implements the GET /pass?token=... endpoint for validating session tokens, resolving the correct target application domain dynamically, and routing users seamlessly using ephemeral 1-click magic links.
Also updates the Sessions Hub UI hand-off modal to display the 1-Click Magic Link and adds full test coverage.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-25 08:25:31 +00:00
7033c532b2 docs(plan): add plan and tasks for ephemeral magic links and multi-claim event passes 2026-08-25 00:40:33 -07:00
509e6019b0 feat(ui): adapt admin management screens into responsive mobile cards and timeline feed 2026-08-24 22:20:47 -07:00
7ab1405459 feat(ui): implement adaptive card decks for launchpad, sessions, and passkeys with emergency recovery backup 2026-08-24 22:20:10 -07:00
a3f5c5c286 feat(ui): implement hero passkey authentication, conditional UI autofill, and 12-word recovery setup 2026-08-24 22:19:20 -07:00
029c32e022 feat(ui): implement design tokens and mobile-first adaptive navigation shell 2026-08-24 22:18:34 -07:00
8e7efcc1d1 docs(tasks): include Recovery PIN setup and 12-word voucher generation in task specs 2026-08-24 22:16:28 -07:00
449b428cea docs(tasks): add 4 phased task specifications for mobile-first UI revamp 2026-08-24 22:11:32 -07:00
7230a4d7ea
Merge branch 'main' into feat-tier-1-ingress-control-217564989939913720 2026-08-24 15:13:20 -07:00
google-labs-jules[bot]
2ac6252bff feat(auth-api): implement Tier 1 Traefik Ingress Control & Bypass Matrix
- Add idempotent migrations for `is_public`, `bypass_paths`, and `allowed_cidrs` in `server/db.ts`.
- Update `AppRecord` and `getAppByHost` in `server/auth-session.ts` to cache bypass rules in Valkey.
- Implement native Deno, fast-path prefix (`isPathBypassed`) and CIDR matchers (`isIpAllowed`).
- Update `GET /api/forward-auth` to evaluate dynamic rules and properly return 302/403 for unregistered domains.
- Create `ui/components/UnregisteredAppPage.tsx` SSR view for browser fallbacks.
- Update `AdminAppsPage.tsx` to handle the new ingress settings visually and post to `/api/admin/apps`.
- Add `POST /api/guests/sandbox` to generate ephemeral Valkey guest sessions.
- Update `POST /api/register/verify` to detect `upgrade_session` and promote guests to full users in-flight.
- Add `docs/TIER1_INGRESS_SPEC.md`.
- Ensure tests run cleanly and add comprehensive unit test cases for the bypass matrix.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-24 22:08:43 +00:00
google-labs-jules[bot]
e52f931edb feat(ui): implement App Launchpad and secure logout redirect
- Add isSafeRedirectUrl utility to prevent open-redirect vulnerabilities.
- Update GET /logout to handle ?redirect=, clear cookies safely, and log audit events.
- Create AppLaunchpadPage.tsx using pure Hono SSR JSX for application visibility and SSO launching.
- Update GET /dashboard and AuthenticatedLayout.tsx to mount the Launchpad as the default authenticated view with Zero-Knowledge querying.
- Add HYBRID_INGRESS_PLAYBOOK.md documentation for Traefik ForwardAuth routing.
- Implement exhaustive unit tests in server/main.test.ts for redirect preservation, anomaly logging, and Zero-Knowledge role filtering.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-24 21:58:36 +00:00
cd1d866077 docs(tasks): standardize and upgrade Task 4.1 and Task 4.2 to 100% rubric compliance 2026-08-24 14:15:38 -07:00
226d04228b
Merge pull request #21 from mrteye/feat/auth-api-traefik-ingress-control-task-6742583984777370201
feat(tasks): create Traefik Universal Edge Ingress task file
2026-08-24 14:13:08 -07:00
google-labs-jules[bot]
5f31989137 feat(tasks): create Traefik Universal Edge Ingress task file
Generates `tasks/new/2026-0824.01.jul.feat.auth-api.traefik-ingress-control-2105.md` outlining the architecture and implementation steps for:
- Traefik global default-deny ForwardAuth setup
- Valkey-cached dynamic database bypass matrix (`is_public`, `bypass_paths`)
- Hybrid universal path and CIDR exemptions
- Dual-response error handling (302 vs 403) for unregistered apps
- Ephemeral guest sandbox flow with passkey promotion

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-24 21:12:30 +00:00
google-labs-jules[bot]
b0dd2d098c docs: draft phase 4 sso launchpad and logout spec
Drafted the task markdown file for Phase 4 covering Central SSO Application Launchpad, Logout Return-Path Preservation, Hybrid Ingress Gateway Protocol, and Strict Additive Security Audit.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-24 21:10:17 +00:00
a0a05da03c
Merge pull request #19 from mrteye/feat-sss-recovery-matrix-4307830478024114673
feat: 2-of-3 Shamir's Secret Sharing Recovery Matrix
2026-08-24 00:50:26 -07:00
google-labs-jules[bot]
f63d0c9afe feat: implement 2-of-3 SSS recovery matrix using Wasm/Rust
- Scaffolds a new Rust crate `wasm/sss_recovery` for constant-time Shamir's Secret Sharing over GF(256) with strict Wasm `zeroize`
- Implements purely typed BIP-39 fallback mapped via Deno WebCrypto in `ui/utils/bip39.ts`
- Migrates `server/recovery.ts` logic mapping Device/Voucher + Server shares with Valkey rate-limiting
- Applies mandatory in-memory JS zeroization on all reconstructed buffers

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-24 07:49:34 +00:00
4ed20be4a2
Merge pull request #18 from mrteye/feat-webauthn-prf-8747559092824518798
feat: WebAuthn PRF Extension for KEK Derivation
2026-08-24 00:46:51 -07:00
google-labs-jules[bot]
e1555f14fc feat: implement WebAuthn PRF extension for client-side HKDF key derivation
* Added `prf_enabled` and `prf_salt` columns to the `passkeys` table.
* Updated registration API endpoints to request and store the PRF extension capability and generate a secure salt.
* Updated the login API endpoints to map stored PRF salts into the `evalByCredential` array for the WebAuthn challenge.
* Enhanced the client-side WebAuthn SDK (`auth-client.js`) to extract the PRF Base64URL string output, decode it into a `Uint8Array`, and securely derive a 256-bit AES-GCM Key Encryption Key (KEK) via `crypto.subtle.deriveKey` using the `auth-yes:prf:device-share:v1` info string.
* Implemented graceful fallbacks throughout the stack to ensure registration and standard logins proceed if PRF is unsupported.
* Added corresponding unit tests to verify PRF flow and rejection logic.
* Verified visual and functional changes for the optional username input on the login page via Playwright scripts.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-24 07:46:22 +00:00
google-labs-jules[bot]
97336a95be feat(server): add RFC 6962 Merkle Tree Audit Ledger
- Expanded database schema to include `leaf_hash` in `audit_records` and added `audit_sths` table.
- Implemented `server/audit_merkle.ts` for native WebCrypto RFC 6962 tree computations and inclusion proofs.
- Created asynchronous micro-batcher in `server/audit.ts` to compute STH, sign with SPIFFE key, save to DB, and broadcast via Valkey.
- Refactored `auditLog` to compute leaf hashes synchronously before database inserts.
- Added hermetic unit tests with mock fallback patterns for SPIFFE/FFI in `server/audit_merkle.test.ts`.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-24 06:19:23 +00:00
b34475b4fb
Merge pull request #14 from mrteye/feat-webauthn-prf-task-9777533714682100655
feat(docs): Add task for WebAuthn PRF extension
2026-08-23 22:52:43 -07:00