failproofai 0.0.11-beta.7 → 0.0.11-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +1 -0
- package/.next/standalone/.next/build-manifest.json +6 -6
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/routes-manifest.json +6 -0
- package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/audit/invite/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/audit/invite/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/audit/invite/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/audit/invite/route.js +7 -0
- package/.next/standalone/.next/server/app/api/audit/invite/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/audit/invite/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/audit/run/route.js +1 -1
- package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-request/route.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-verify/route.js +2 -2
- package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route.js +2 -2
- package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/reminder/route.js +2 -2
- package/.next/standalone/.next/server/app/api/auth/reminder/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/status/route.js +2 -2
- package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/audit/page.js +2 -2
- package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +15 -15
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/policies/page.js +2 -2
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page.js +3 -3
- package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +3 -3
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/projects/page.js +3 -3
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +1 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1_mqemn._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1r1h8v9._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1rhmvod._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1uatkiv._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1y6gxxb._.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_audit_invite_route_actions_0-2n5sy.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_0-tu4ot._.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_0ttxbz7._.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_1bnh1y0._.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_1epycqa._.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_1wpdcgo._.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_17k9e3w.js +8 -8
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js +1 -1
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_09z9-p7._.js +1 -1
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4v._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0808sha._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1cd25c7._.js → [root-of-the-server]__0e4-6d8._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__08gyb62._.js → [root-of-the-server]__0e446gb._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ehe24g._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1-scthx._.js → [root-of-the-server]__0f62vu9._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g253ve._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0l13qf2._.js → [root-of-the-server]__0k65l27._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0vxf0_g._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__08v7sn2._.js → [root-of-the-server]__0wprfyc._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12mcauo._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0989_dx._.js → [root-of-the-server]__1e-x7j4._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1mt35_w._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1pcxxwg._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1uvfwgr._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/_05whahf._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0il3fl1._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_11_p9y8._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1kje4fm._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47._.js +21 -21
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpc._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/node_modules_html-to-image_es_index_0y4a-0q.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_html-to-image_es_index_1ao30b1.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuzn._.js +1 -1
- package/.next/standalone/.next/server/functions-config-manifest.json +0 -3
- package/.next/standalone/.next/server/middleware-build-manifest.js +6 -6
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +10 -10
- package/.next/standalone/.next/static/chunks/{0hmxjseydp6as.js → 07_d165p5h5ys.js} +1 -1
- package/.next/standalone/.next/static/chunks/0f7d7hnbh4djs.js +1 -0
- package/.next/standalone/.next/static/chunks/0h7auy7hzjyhw.js +1 -0
- package/.next/standalone/.next/static/chunks/168k-8z6k7e8z.css +1 -0
- package/.next/standalone/.next/static/chunks/{3n28elq6kwpy3.js → 1kvadxkgnapyj.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0fpw1jzeg66_x.js → 277oc363p56n6.js} +2 -2
- package/.next/standalone/.next/static/chunks/28mkxkl_d91-l.js +1 -0
- package/.next/standalone/.next/static/chunks/28x7jvo3kxd3u.js +41 -0
- package/.next/standalone/.next/static/chunks/29nrs5xs9c4hx.css +2 -0
- package/.next/standalone/.next/static/chunks/{41vwoxpkauj1w.js → 29tg7deqmq32l.js} +1 -1
- package/.next/standalone/.next/static/chunks/{3w8d8k_dca5rp.js → 2h0dkzyy0vocp.js} +1 -1
- package/.next/standalone/.next/static/chunks/{1eq7f419t6ln3.js → 2z42u62k-8-_q.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0avgb78edu0i-.js → 3nj6g3xu9uy78.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0xkxbaa-oo180.js → 3ty6dhcuogout.js} +1 -1
- package/.next/standalone/.next/static/chunks/3zkg2s2vzxc3d.js +1 -0
- package/.next/standalone/.next/static/chunks/{turbopack-00qy7zfa7m--m.js → turbopack-3lrm4f20fz89b.js} +1 -1
- package/.next/standalone/app/api/audit/_state.ts +40 -33
- package/.next/standalone/app/api/audit/invite/route.ts +183 -0
- package/.next/standalone/app/api/audit/run/route.ts +30 -16
- package/.next/standalone/app/api/audit/status/route.ts +1 -0
- package/.next/standalone/app/audit/_components/audit-dashboard.tsx +33 -65
- package/.next/standalone/app/audit/_components/audit-poster.tsx +322 -0
- package/.next/standalone/app/audit/_components/audit-progress-strip.tsx +1 -1
- package/.next/standalone/app/audit/_components/auth-dialog.tsx +21 -49
- package/.next/standalone/app/audit/_components/come-back-better-section.tsx +316 -0
- package/.next/standalone/app/audit/_components/empty-state.tsx +8 -2
- package/.next/standalone/app/audit/_components/how-to-improve-section.tsx +187 -0
- package/.next/standalone/app/audit/_components/invite-dialog.tsx +227 -0
- package/.next/standalone/app/audit/_components/quirks-section.tsx +75 -0
- package/.next/standalone/app/audit/_components/rerun-button.tsx +43 -14
- package/.next/standalone/app/audit/_components/run-progress.tsx +2 -2
- package/.next/standalone/app/audit/_components/share-templates.ts +23 -22
- package/.next/standalone/app/audit/_components/sigil.tsx +9 -66
- package/.next/standalone/app/audit/_components/strengths-section.tsx +20 -32
- package/.next/standalone/app/audit/audit-styles.css +781 -1784
- package/.next/standalone/app/components/sessions-list.tsx +77 -80
- package/.next/standalone/app/globals.css +214 -32
- package/.next/standalone/app/layout.tsx +1 -10
- package/.next/standalone/app/policies/hooks-client.tsx +12 -4
- package/.next/standalone/app/project/[name]/page.tsx +23 -79
- package/.next/standalone/app/projects/page.tsx +14 -23
- package/.next/standalone/assets/audit/poster-styles.css +1 -1
- package/.next/standalone/assets/audit/styles.css +11 -11
- package/.next/standalone/components/navbar.tsx +2 -37
- package/.next/standalone/lib/auth/api-server-client.ts +25 -0
- package/.next/standalone/node_modules/@next/env/package.json +2 -2
- package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
- package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +1 -1
- package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
- package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
- package/.next/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
- package/.next/standalone/node_modules/next/package.json +15 -15
- package/.next/standalone/package.json +18 -15
- package/.next/standalone/server.js +1 -1
- package/dist/cli.mjs +2 -2
- package/lib/auth/api-server-client.ts +25 -0
- package/package.json +18 -15
- package/src/audit/dashboard-cache.ts +13 -6
- package/src/audit/social-proof.ts +34 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07tgnzi._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0oeun7z._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12pit4m._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__13ra2jq._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1b9z5-i._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ixjiy8._.js +0 -3
- package/.next/standalone/.next/server/chunks/_1-1804f._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__00jkjmt._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__013du6r._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0e85wxv._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0gfxvb1._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1hlrq6y._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1ihxdo5._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1vvfde2._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/node_modules_html2canvas_dist_html2canvas_esm_0q4m0_h.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_html2canvas_dist_html2canvas_esm_1n-0xws.js +0 -3
- package/.next/standalone/.next/static/chunks/09ueq8s1as8xs.css +0 -2
- package/.next/standalone/.next/static/chunks/0qassxjx1ef04.js +0 -1
- package/.next/standalone/.next/static/chunks/2452blhu4bcdr.js +0 -41
- package/.next/standalone/.next/static/chunks/2so39wg7mjbi7.js +0 -1
- package/.next/standalone/.next/static/chunks/3gti1qdk5epqn.js +0 -1
- package/.next/standalone/.next/static/chunks/3osmt-t2hsrng.js +0 -1
- package/.next/standalone/.next/static/chunks/3wycox197ouus.css +0 -1
- package/.next/standalone/app/audit/_components/findings-section.tsx +0 -135
- package/.next/standalone/app/audit/_components/identity-section.tsx +0 -126
- package/.next/standalone/app/audit/_components/policies-section.tsx +0 -194
- package/.next/standalone/app/audit/_components/return-section.tsx +0 -416
- package/.next/standalone/app/audit/_components/score-section.tsx +0 -179
- package/.next/standalone/app/audit/_components/share-dock.tsx +0 -265
- package/.next/standalone/app/audit/_components/show-off-cta.tsx +0 -135
- /package/.next/standalone/.next/static/{90NFQus9VOnEzD6sP0EyP → NYPiJP6Rv_exQdSFVS8HP}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{90NFQus9VOnEzD6sP0EyP → NYPiJP6Rv_exQdSFVS8HP}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{90NFQus9VOnEzD6sP0EyP → NYPiJP6Rv_exQdSFVS8HP}/_ssgManifest.js +0 -0
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
/** Projects page — lists all Claude Agent SDK project folders.
|
|
2
|
-
*
|
|
3
|
-
* Wrapped in the audit `.report` + `.section` chrome so the page picks up
|
|
4
|
-
* the unified design system: mono fonts, section masthead with the ━━
|
|
5
|
-
* glyph + green eyebrow label, and the dashed-frame `.panel` around the
|
|
6
|
-
* project list when it's populated. The inner ProjectList component is
|
|
7
|
-
* unchanged — every Tailwind utility it uses (bg-card, text-foreground,
|
|
8
|
-
* border-border, …) now resolves to the audit palette globally.
|
|
9
|
-
*/
|
|
1
|
+
/** Projects page — lists all Claude Agent SDK project folders. */
|
|
10
2
|
import { Suspense } from "react";
|
|
11
3
|
import { notFound } from "next/navigation";
|
|
12
4
|
import { getCachedProjectFolders } from "@/lib/projects";
|
|
@@ -26,17 +18,17 @@ export default async function ProjectsPage() {
|
|
|
26
18
|
return (
|
|
27
19
|
<main className="report">
|
|
28
20
|
<section className="section" data-screen-label="projects">
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
21
|
+
<h2
|
|
22
|
+
style={{
|
|
23
|
+
fontFamily: "var(--font-mono)",
|
|
24
|
+
fontSize: 24,
|
|
25
|
+
fontWeight: 600,
|
|
26
|
+
letterSpacing: "-0.01em",
|
|
27
|
+
color: "var(--ink)",
|
|
28
|
+
margin: "0 0 24px",
|
|
29
|
+
}}
|
|
30
|
+
>
|
|
31
|
+
Projects
|
|
40
32
|
</h2>
|
|
41
33
|
|
|
42
34
|
{count === 0 ? (
|
|
@@ -54,7 +46,6 @@ export default async function ProjectsPage() {
|
|
|
54
46
|
padding: 12,
|
|
55
47
|
border: "1px solid var(--line-2)",
|
|
56
48
|
background: "var(--bg)",
|
|
57
|
-
boxShadow: "4px 4px 0 0 var(--accent-pink-shadow)",
|
|
58
49
|
}}
|
|
59
50
|
>
|
|
60
51
|
{Array.from({ length: 36 }).map((_, i) => {
|
|
@@ -72,7 +63,7 @@ export default async function ProjectsPage() {
|
|
|
72
63
|
</div>
|
|
73
64
|
</div>
|
|
74
65
|
<p style={{ color: "var(--ink-2)", marginBottom: 8 }}>
|
|
75
|
-
|
|
66
|
+
No projects found in the <code>.claude/projects</code> directory.
|
|
76
67
|
</p>
|
|
77
68
|
<p
|
|
78
69
|
style={{
|
|
@@ -81,7 +72,7 @@ export default async function ProjectsPage() {
|
|
|
81
72
|
letterSpacing: "0.05em",
|
|
82
73
|
}}
|
|
83
74
|
>
|
|
84
|
-
|
|
75
|
+
Run an agent in any folder and it will show up here.
|
|
85
76
|
</p>
|
|
86
77
|
</div>
|
|
87
78
|
) : (
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
.poster {
|
|
57
57
|
position: relative;
|
|
58
58
|
background:
|
|
59
|
-
repeating-linear-gradient(0deg, rgba(228,88,
|
|
59
|
+
repeating-linear-gradient(0deg, rgba(228, 88, 124,0.03) 0 1px, transparent 1px 16px),
|
|
60
60
|
repeating-linear-gradient(90deg, rgba(102,209,181,0.025) 0 1px, transparent 1px 16px),
|
|
61
61
|
var(--bg-2);
|
|
62
62
|
border: 1px solid var(--line-2);
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
--dim: #5e5c58;
|
|
22
22
|
--line: #25252b;
|
|
23
23
|
--line-2: #32323a;
|
|
24
|
-
--accent-pink: #
|
|
25
|
-
--accent-pink-soft: rgba(228, 88,
|
|
24
|
+
--accent-pink: #e4587c;
|
|
25
|
+
--accent-pink-soft: rgba(228, 88, 124, 0.7);
|
|
26
26
|
--accent-pink-shadow: #a83a5a;
|
|
27
|
-
--accent-pink-bg: rgba(228, 88,
|
|
27
|
+
--accent-pink-bg: rgba(228, 88, 124, 0.12);
|
|
28
28
|
--accent-green: #66d1b5;
|
|
29
29
|
--accent-green-shadow: #3e9a82;
|
|
30
30
|
--accent-green-bg: rgba(102, 209, 181, 0.10);
|
|
@@ -52,7 +52,7 @@ html, body, #root {
|
|
|
52
52
|
body {
|
|
53
53
|
background-color: var(--bg);
|
|
54
54
|
background-image:
|
|
55
|
-
radial-gradient(ellipse 1200px 800px at 70% -10%, rgba(228, 88,
|
|
55
|
+
radial-gradient(ellipse 1200px 800px at 70% -10%, rgba(228, 88, 124, 0.055) 0%, transparent 60%),
|
|
56
56
|
radial-gradient(ellipse 1000px 700px at 0% 100%, rgba(102, 209, 181, 0.04) 0%, transparent 55%),
|
|
57
57
|
radial-gradient(ellipse 100% 100% at 50% 50%, transparent 50%, rgba(0,0,0,0.45) 100%),
|
|
58
58
|
linear-gradient(180deg, #16161a 0%, #0f0f12 100%);
|
|
@@ -216,7 +216,7 @@ a { color: inherit; text-decoration: none; }
|
|
|
216
216
|
position: relative;
|
|
217
217
|
border: 1px solid var(--line-2);
|
|
218
218
|
background:
|
|
219
|
-
repeating-linear-gradient(0deg, rgba(228,88,
|
|
219
|
+
repeating-linear-gradient(0deg, rgba(228, 88, 124,0.025) 0 1px, transparent 1px 16px),
|
|
220
220
|
repeating-linear-gradient(90deg, rgba(102,209,181,0.025) 0 1px, transparent 1px 16px),
|
|
221
221
|
var(--bg-2);
|
|
222
222
|
padding: 56px 56px 48px;
|
|
@@ -805,8 +805,8 @@ a { color: inherit; text-decoration: none; }
|
|
|
805
805
|
padding: 28px 32px;
|
|
806
806
|
border: 1px solid var(--line-2);
|
|
807
807
|
background:
|
|
808
|
-
repeating-linear-gradient(0deg, rgba(228,88,
|
|
809
|
-
repeating-linear-gradient(90deg, rgba(228,88,
|
|
808
|
+
repeating-linear-gradient(0deg, rgba(228, 88, 124,0.025) 0 1px, transparent 1px 16px),
|
|
809
|
+
repeating-linear-gradient(90deg, rgba(228, 88, 124,0.025) 0 1px, transparent 1px 16px),
|
|
810
810
|
var(--bg-2);
|
|
811
811
|
color: var(--ink);
|
|
812
812
|
text-decoration: none;
|
|
@@ -816,8 +816,8 @@ a { color: inherit; text-decoration: none; }
|
|
|
816
816
|
.showoff-cta:hover {
|
|
817
817
|
border-color: var(--ink-2);
|
|
818
818
|
background:
|
|
819
|
-
repeating-linear-gradient(0deg, rgba(228,88,
|
|
820
|
-
repeating-linear-gradient(90deg, rgba(228,88,
|
|
819
|
+
repeating-linear-gradient(0deg, rgba(228, 88, 124,0.04) 0 1px, transparent 1px 16px),
|
|
820
|
+
repeating-linear-gradient(90deg, rgba(228, 88, 124,0.04) 0 1px, transparent 1px 16px),
|
|
821
821
|
var(--bg-3);
|
|
822
822
|
}
|
|
823
823
|
.showoff-cta::before {
|
|
@@ -995,8 +995,8 @@ a { color: inherit; text-decoration: none; }
|
|
|
995
995
|
.share-card {
|
|
996
996
|
border: 1px solid var(--accent-pink);
|
|
997
997
|
background:
|
|
998
|
-
repeating-linear-gradient(0deg, rgba(228,88,
|
|
999
|
-
repeating-linear-gradient(90deg, rgba(228,88,
|
|
998
|
+
repeating-linear-gradient(0deg, rgba(228, 88, 124,0.02) 0 1px, transparent 1px 16px),
|
|
999
|
+
repeating-linear-gradient(90deg, rgba(228, 88, 124,0.02) 0 1px, transparent 1px 16px),
|
|
1000
1000
|
var(--bg-2);
|
|
1001
1001
|
padding: 32px;
|
|
1002
1002
|
position: relative;
|
|
@@ -16,9 +16,9 @@ import { RefreshButton } from "@/app/components/refresh-button";
|
|
|
16
16
|
import { usePostHog } from "@/contexts/PostHogContext";
|
|
17
17
|
|
|
18
18
|
const NAV_LINKS = [
|
|
19
|
+
{ href: "/projects", label: "projects" },
|
|
19
20
|
{ href: "/policies", label: "policies" },
|
|
20
21
|
{ href: "/audit", label: "audit" },
|
|
21
|
-
{ href: "/projects", label: "projects" },
|
|
22
22
|
];
|
|
23
23
|
|
|
24
24
|
const REMOTE_LOGO_URL =
|
|
@@ -51,11 +51,7 @@ const useBrandLogo = (): string => {
|
|
|
51
51
|
|
|
52
52
|
export const Navbar: React.FC<{
|
|
53
53
|
disabledPages?: string[];
|
|
54
|
-
|
|
55
|
-
* a small chip is rendered next to the Audit nav link. Undefined → no
|
|
56
|
-
* chip (no cache yet, or audit disabled). */
|
|
57
|
-
auditSlippingCount?: number;
|
|
58
|
-
}> = ({ disabledPages = [], auditSlippingCount }) => {
|
|
54
|
+
}> = ({ disabledPages = [] }) => {
|
|
59
55
|
const pathname = usePathname();
|
|
60
56
|
const { capture } = usePostHog();
|
|
61
57
|
const logoSrc = useBrandLogo();
|
|
@@ -90,10 +86,6 @@ export const Navbar: React.FC<{
|
|
|
90
86
|
const active = href === "/projects"
|
|
91
87
|
? pathname === "/projects" || pathname.startsWith("/project/")
|
|
92
88
|
: pathname.startsWith(href);
|
|
93
|
-
const showAuditBadge =
|
|
94
|
-
href === "/audit"
|
|
95
|
-
&& typeof auditSlippingCount === "number"
|
|
96
|
-
&& auditSlippingCount > 0;
|
|
97
89
|
return (
|
|
98
90
|
<Link
|
|
99
91
|
key={href}
|
|
@@ -105,37 +97,10 @@ export const Navbar: React.FC<{
|
|
|
105
97
|
capture("audit_nav_clicked", {
|
|
106
98
|
from_path: pathname,
|
|
107
99
|
is_active_tab: active,
|
|
108
|
-
has_badge: showAuditBadge,
|
|
109
|
-
slipping_count: typeof auditSlippingCount === "number" ? auditSlippingCount : null,
|
|
110
100
|
});
|
|
111
101
|
}}
|
|
112
102
|
>
|
|
113
|
-
<span style={{ color: "var(--dim)", letterSpacing: "-2px", marginRight: 2 }}>━━</span>
|
|
114
103
|
{label}
|
|
115
|
-
{showAuditBadge && (
|
|
116
|
-
<span
|
|
117
|
-
role="status"
|
|
118
|
-
style={{
|
|
119
|
-
display: "inline-flex",
|
|
120
|
-
alignItems: "center",
|
|
121
|
-
justifyContent: "center",
|
|
122
|
-
minWidth: "1.4rem",
|
|
123
|
-
height: "1rem",
|
|
124
|
-
padding: "0 6px",
|
|
125
|
-
fontFamily: "var(--font-mono)",
|
|
126
|
-
fontSize: 10,
|
|
127
|
-
letterSpacing: "0.05em",
|
|
128
|
-
background: "var(--amber-bg)",
|
|
129
|
-
color: "var(--amber)",
|
|
130
|
-
border: "1px solid var(--amber)",
|
|
131
|
-
marginLeft: 2,
|
|
132
|
-
}}
|
|
133
|
-
aria-label={`${auditSlippingCount} action${auditSlippingCount === 1 ? "" : "s"} slipping through your policies`}
|
|
134
|
-
title={`${auditSlippingCount} slipping through`}
|
|
135
|
-
>
|
|
136
|
-
{auditSlippingCount}
|
|
137
|
-
</span>
|
|
138
|
-
)}
|
|
139
104
|
</Link>
|
|
140
105
|
);
|
|
141
106
|
})}
|
|
@@ -239,6 +239,31 @@ export async function cancelReminder(accessToken: string): Promise<void> {
|
|
|
239
239
|
throw await parseError(res);
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
+
export interface InviteSendResult {
|
|
243
|
+
/** Recipients that were dispatched successfully. */
|
|
244
|
+
sent: string[];
|
|
245
|
+
/** Recipients that failed (bad address, bounce, rate-limit, etc.). */
|
|
246
|
+
failed: string[];
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Send invite emails to a batch of friends. The api-server pulls the sender's
|
|
251
|
+
* email from the access-token claims and Cc's them on every outbound message
|
|
252
|
+
* so the recipient sees who invited them.
|
|
253
|
+
*
|
|
254
|
+
* Contract is handed over to the platform team separately.
|
|
255
|
+
*/
|
|
256
|
+
export async function sendInvites(
|
|
257
|
+
accessToken: string,
|
|
258
|
+
to: string[],
|
|
259
|
+
): Promise<InviteSendResult> {
|
|
260
|
+
return postJson<InviteSendResult>(
|
|
261
|
+
"/v0/invite",
|
|
262
|
+
{ to },
|
|
263
|
+
{ accessToken },
|
|
264
|
+
);
|
|
265
|
+
}
|
|
266
|
+
|
|
242
267
|
interface JwtClaims {
|
|
243
268
|
sub: string;
|
|
244
269
|
email: string;
|
|
@@ -134,7 +134,7 @@ var HmrTarget = /*#__PURE__*/ function(HmrTarget) {
|
|
|
134
134
|
HmrTarget["Server"] = "server";
|
|
135
135
|
return HmrTarget;
|
|
136
136
|
}({});
|
|
137
|
-
const nextVersion = "16.2.
|
|
137
|
+
const nextVersion = "16.2.9";
|
|
138
138
|
const ArchName = (0, _os.arch)();
|
|
139
139
|
const PlatformName = (0, _os.platform)();
|
|
140
140
|
function infoLog(...args) {
|