failproofai 1.0.2-beta.1 → 1.0.2-beta.3
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/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +1 -1
- 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 +6 -6
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- 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.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 +14 -14
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +13 -13
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/audit/status/route.js.nft.json +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.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- 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/server-reference-manifest.json +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 +14 -14
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +13 -13
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +14 -14
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- 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/server-reference-manifest.json +14 -14
- 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/server-reference-manifest.json +1 -1
- 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/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.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/server-reference-manifest.json +1 -1
- 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/settings/page/server-reference-manifest.json +4 -4
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o07qi9._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0tovk6q._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0trp3yc._.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]__013jr2b._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01wy8d-._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02npjtd._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__07gm3zl._.js +4 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08zpry-._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0da85px._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ftmoxc._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0oa1lav._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0p-5p8u._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s740oi._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1p2otjt._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_08x1r5t._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_11opd9e._.js +23 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0ns6k3a._.js → _15xtekm._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1u8-lu2._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1zopuov._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47._.js +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_settings_settings-client_tsx_20lq-mq._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- 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 +19 -19
- package/.next/standalone/.next/static/chunks/{3tbbs_d8xrvyp.js → 01nuy-aqshahr.js} +1 -1
- package/.next/standalone/.next/static/chunks/{01u1cf8js2yd6.js → 10pok-mrqv426.js} +1 -1
- package/.next/standalone/.next/static/chunks/{22rqvlr7p_1mv.js → 1mk3vmmc673hu.js} +1 -1
- package/.next/standalone/.next/static/chunks/1pl7h8vllvoi2.js +1 -0
- package/.next/standalone/.next/static/chunks/1yywl_a87108w.js +6 -0
- package/.next/standalone/.next/static/chunks/2efnffq2ipgr_.js +1 -0
- package/.next/standalone/.next/static/chunks/2ey_ih6j6cm15.js +1 -0
- package/.next/standalone/.next/static/chunks/2gd07pinz0i7f.js +1 -0
- package/.next/standalone/.next/static/chunks/{0izgu7nqh2zp-.js → 2jsomd79g7kn0.js} +1 -1
- package/.next/standalone/.next/static/chunks/3cs_rf5p765v0.js +1 -0
- package/.next/standalone/package.json +9 -9
- package/.next/standalone/server.js +1 -1
- package/bin/failproofai.mjs +4 -4
- package/dist/cli.mjs +98 -157
- package/dist/worker.mjs +1 -2
- package/package.json +9 -9
- package/src/hooks/configure-wizard.ts +22 -86
- package/src/hooks/fp-reset.ts +9 -26
- package/src/hooks/manager.ts +44 -16
- package/src/hooks/pack-cli.ts +73 -1
- package/src/hooks/pack-store.ts +12 -3
- package/src/hooks/tui.ts +24 -8
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0l4748x._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0bwu160._.js +0 -23
- package/.next/standalone/.next/static/chunks/0u4-org_e7zde.js +0 -1
- package/.next/standalone/.next/static/chunks/1tynnrrh711lr.js +0 -1
- package/.next/standalone/.next/static/chunks/2whxqyskpirbk.js +0 -1
- package/.next/standalone/.next/static/chunks/31mwk8k0q3_3g.js +0 -6
- package/.next/standalone/.next/static/chunks/3ms6gxfm82t6s.js +0 -1
- package/.next/standalone/.next/static/chunks/43nlc236oo898.js +0 -1
- /package/.next/standalone/.next/static/{I5kEb9kSgYS63j4iqfVLO → G-faMkpZioETgewZ4X4wX}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{I5kEb9kSgYS63j4iqfVLO → G-faMkpZioETgewZ4X4wX}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{I5kEb9kSgYS63j4iqfVLO → G-faMkpZioETgewZ4X4wX}/_ssgManifest.js +0 -0
|
@@ -89,7 +89,6 @@ import {
|
|
|
89
89
|
import {
|
|
90
90
|
detectSetupState,
|
|
91
91
|
isConfigured,
|
|
92
|
-
buildTargetChoices,
|
|
93
92
|
scopesFor,
|
|
94
93
|
type SetupTarget,
|
|
95
94
|
} from "./setup-state";
|
|
@@ -893,86 +892,24 @@ export async function runConfigureWizard(io: WizardIO = {}): Promise<WizardResul
|
|
|
893
892
|
|
|
894
893
|
// 0 — Recommended, or choose everything yourself?
|
|
895
894
|
//
|
|
896
|
-
//
|
|
897
|
-
// harnesses, cloud — of somebody who has just installed the tool and does not
|
|
898
|
-
// yet know what any of them mean. Every one of those answers has a defensible
|
|
899
|
-
// default, so asking for all four up front is making the person least able to
|
|
900
|
-
// answer do the most work.
|
|
895
|
+
// ONE linear flow, and no opening fork.
|
|
901
896
|
//
|
|
902
|
-
//
|
|
903
|
-
//
|
|
904
|
-
//
|
|
905
|
-
//
|
|
906
|
-
//
|
|
907
|
-
// reading code.
|
|
897
|
+
// Setup used to ask "Recommended or Customize?" before anything else, which
|
|
898
|
+
// is a question about the wizard rather than about the machine — you cannot
|
|
899
|
+
// answer it until you know what the alternatives are, and you only learn that
|
|
900
|
+
// by picking one. Recommended then silently took global scope, the detected
|
|
901
|
+
// CLIs, and fifteen policies nobody had seen.
|
|
908
902
|
//
|
|
909
|
-
//
|
|
910
|
-
//
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
value: "recommended",
|
|
919
|
-
hint: recommendedClis.length
|
|
920
|
-
? `${recommendedClis.length} detected ${recommendedClis.length === 1 ? "CLI" : "CLIs"} · global`
|
|
921
|
-
: "global",
|
|
922
|
-
},
|
|
923
|
-
{
|
|
924
|
-
label: "Customize",
|
|
925
|
-
value: "customize",
|
|
926
|
-
hint: "choose scope and harnesses",
|
|
927
|
-
},
|
|
928
|
-
],
|
|
929
|
-
stdin,
|
|
930
|
-
stdout,
|
|
931
|
-
});
|
|
932
|
-
if (mode === null) return cancel();
|
|
933
|
-
|
|
934
|
-
// 1 — Where? Inferred from cwd, then confirmed.
|
|
935
|
-
//
|
|
936
|
-
// Running from inside a project and running from a home directory are two
|
|
937
|
-
// different intents, and asking a context-free "global or project?" made the
|
|
938
|
-
// user restate something they had already expressed by choosing where to run
|
|
939
|
-
// the command. So the choices are built from what actually exists here — and
|
|
940
|
-
// labelled Update vs Set up accordingly — with the likelier target first.
|
|
941
|
-
const setupState = detectSetupState(cwd);
|
|
942
|
-
const targetChoices = buildTargetChoices(setupState);
|
|
943
|
-
|
|
944
|
-
let target: SetupTarget;
|
|
945
|
-
if (mode === "recommended") {
|
|
946
|
-
// Global, always. A project-scoped install guards the one directory the
|
|
947
|
-
// command happened to be run from and silently leaves every other repo on
|
|
948
|
-
// the machine unguarded — which is the opposite of what somebody choosing
|
|
949
|
-
// "Recommended" is asking for.
|
|
950
|
-
target = "user";
|
|
951
|
-
} else if (targetChoices.length === 1) {
|
|
952
|
-
// From a home directory there is no project to configure, so there is no
|
|
953
|
-
// question to ask. Say what is about to happen rather than silently
|
|
954
|
-
// deciding it.
|
|
955
|
-
target = targetChoices[0].value;
|
|
956
|
-
stdout.write(`Configuring ${targetChoices[0].label.toLowerCase()} — ${targetChoices[0].hint}.\n\n`);
|
|
957
|
-
} else {
|
|
958
|
-
const chosen = await selectOne<SetupTarget>({
|
|
959
|
-
message: "What are we configuring?",
|
|
960
|
-
choices: targetChoices.map((c) => ({
|
|
961
|
-
label: c.label,
|
|
962
|
-
value: c.value,
|
|
963
|
-
hint: c.hint,
|
|
964
|
-
})),
|
|
965
|
-
stdin,
|
|
966
|
-
stdout,
|
|
967
|
-
});
|
|
968
|
-
if (chosen === null) return cancel();
|
|
969
|
-
target = chosen;
|
|
970
|
-
}
|
|
903
|
+
// What is left is three questions, in the order the machine needs them:
|
|
904
|
+
// the daemon (already installed above, because it is the only step that needs
|
|
905
|
+
// a password), then which harnesses, then whether to connect. Scope is not
|
|
906
|
+
// among them: it is GLOBAL, always. A project-scoped install guards the one
|
|
907
|
+
// directory the command happened to be run from and silently leaves every
|
|
908
|
+
// other repo on the machine unguarded — `failproofai policies --install
|
|
909
|
+
// --scope project` is still there for someone who genuinely wants that, and
|
|
910
|
+
// knows they do.
|
|
911
|
+
const target: SetupTarget = "user";
|
|
971
912
|
const scopes = scopesFor(target);
|
|
972
|
-
// The scope whose CURRENT state seeds the pickers below. With "Both" the
|
|
973
|
-
// project is the more specific of the two and the one the user is standing
|
|
974
|
-
// in, so it wins; anything it does not define still falls back to global at
|
|
975
|
-
// merge time, which is exactly the layering the policy loader already does.
|
|
976
913
|
const primaryScope: HookScope = scopes.includes("project") ? "project" : "user";
|
|
977
914
|
|
|
978
915
|
// 2 — Which harnesses?
|
|
@@ -1001,15 +938,14 @@ export async function runConfigureWizard(io: WizardIO = {}): Promise<WizardResul
|
|
|
1001
938
|
// An "Everything available" row protects every supported CLI (detected +
|
|
1002
939
|
// set-up-ahead); when ticked it wins over the individual boxes.
|
|
1003
940
|
//
|
|
1004
|
-
//
|
|
1005
|
-
//
|
|
1006
|
-
//
|
|
1007
|
-
//
|
|
1008
|
-
//
|
|
941
|
+
// Always asked, never inferred. This is the one decision setup genuinely
|
|
942
|
+
// cannot make for you: which agents on this machine should be guarded. The
|
|
943
|
+
// detected ones are pre-ticked, so the common answer is a single keypress.
|
|
944
|
+
//
|
|
945
|
+
// No `allowBack`: with the policy step and the scope fork both gone, there is
|
|
946
|
+
// nothing inside setup to return to.
|
|
1009
947
|
let clisSel: string[];
|
|
1010
|
-
|
|
1011
|
-
clisSel = recommendedClis;
|
|
1012
|
-
} else {
|
|
948
|
+
{
|
|
1013
949
|
const picked = await multiSelect<string>({
|
|
1014
950
|
message: "Which harnesses should it protect?",
|
|
1015
951
|
choices: [
|
package/src/hooks/fp-reset.ts
CHANGED
|
@@ -98,7 +98,6 @@ import {
|
|
|
98
98
|
isDaemonSupportedPlatform,
|
|
99
99
|
probeDaemonEndToEnd,
|
|
100
100
|
} from "./daemon-service";
|
|
101
|
-
import { readHooksConfig } from "./hooks-config";
|
|
102
101
|
|
|
103
102
|
export interface ResetOutcome {
|
|
104
103
|
/** Paths that existed and were removed. */
|
|
@@ -965,33 +964,17 @@ export function resetHome(from: number, to: number = LAYOUT_VERSION): ResetOutco
|
|
|
965
964
|
// straight out of the same file. Both paths end at the same key, and only one
|
|
966
965
|
// of them represents something a person typed.
|
|
967
966
|
if (telemetryOptOut) updateConfig({ telemetry: { enabled: false } });
|
|
968
|
-
//
|
|
969
|
-
// enforcement floor. Restore it from the installed package before declaring
|
|
970
|
-
// the migration complete; third-party packs remain explicitly re-fetchable.
|
|
967
|
+
// No pack is installed here, deliberately.
|
|
971
968
|
//
|
|
972
|
-
//
|
|
973
|
-
//
|
|
974
|
-
//
|
|
975
|
-
//
|
|
976
|
-
// before the upgrade and allowing after, with nothing said.
|
|
977
|
-
const carried = (() => {
|
|
978
|
-
try {
|
|
979
|
-
const names = readHooksConfig().enabledPolicies ?? [];
|
|
980
|
-
return names.length > 0 ? { only: names } : undefined;
|
|
981
|
-
} catch {
|
|
982
|
-
return undefined;
|
|
983
|
-
}
|
|
984
|
-
})();
|
|
985
|
-
// Deliberately does NOT install a pack. There is no copy in this package to
|
|
986
|
-
// install any more, and `resetHome` is synchronous and runs inside
|
|
987
|
-
// `failproofai update` — an upgrade that blocks on github.com, and fails when
|
|
988
|
-
// it is unreachable, is a worse upgrade than one that finishes.
|
|
969
|
+
// There is no copy in this package to install — our policies are fetched from
|
|
970
|
+
// their GitHub release like anybody else's — and `resetHome` is SYNCHRONOUS
|
|
971
|
+
// and runs inside `failproofai update`. An upgrade that blocks on github.com,
|
|
972
|
+
// and fails when it is unreachable, is a worse upgrade than one that finishes.
|
|
989
973
|
//
|
|
990
|
-
//
|
|
991
|
-
// so a machine mid-upgrade keeps
|
|
992
|
-
// `failproofai policies add core`
|
|
993
|
-
//
|
|
994
|
-
void carried;
|
|
974
|
+
// Nothing needs carrying either: `enabledPolicies` is left exactly where it
|
|
975
|
+
// is, and the no-pack fallback reads it, so a machine mid-upgrade keeps
|
|
976
|
+
// enforcing precisely what it enforced before. `failproofai policies add core`
|
|
977
|
+
// turns those names into a real pack, carrying the same selection into it.
|
|
995
978
|
// The step's OWN target, not LAYOUT_VERSION.
|
|
996
979
|
//
|
|
997
980
|
// Every step used to end stamping the current layout, which was harmless
|
package/src/hooks/manager.ts
CHANGED
|
@@ -867,25 +867,53 @@ export async function listHooks(cwd?: string): Promise<void> {
|
|
|
867
867
|
return 0;
|
|
868
868
|
}
|
|
869
869
|
})();
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
870
|
+
// `installedScopes` is about HOOKS — whether any agent CLI is wired to call
|
|
871
|
+
// us — and it says nothing about whether policies exist. Reporting it as
|
|
872
|
+
// "not installed" above a listing of an installed pack was a flat
|
|
873
|
+
// contradiction, and it hid the state that actually matters: a machine can
|
|
874
|
+
// hold thirty-eight policies and enforce none of them, because nothing is
|
|
875
|
+
// calling failproofai at all. That is the worst of the three states and it
|
|
876
|
+
// used to read like the emptiest.
|
|
877
|
+
const packsPresent = (() => {
|
|
878
|
+
try {
|
|
879
|
+
return readInstalledPacks().packs.length > 0;
|
|
880
|
+
} catch {
|
|
881
|
+
return false;
|
|
882
|
+
}
|
|
883
|
+
})();
|
|
884
|
+
const subtitle =
|
|
885
|
+
installedScopes.length > 0
|
|
886
|
+
? `${installedScopes.join(" + ")} · ${packCount} on`
|
|
887
|
+
: packsPresent
|
|
888
|
+
? `${packCount} on · NOT ENFORCING`
|
|
889
|
+
: "nothing installed";
|
|
890
|
+
groups.push(title("failproofai policies", subtitle, opts));
|
|
879
891
|
|
|
880
892
|
if (installedScopes.length === 0) {
|
|
881
893
|
groups.push(
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
894
|
+
packsPresent
|
|
895
|
+
? warning(
|
|
896
|
+
[
|
|
897
|
+
// ONE string, not four hand-broken ones. `warning` wraps each
|
|
898
|
+
// element to the terminal, so pre-wrapped prose keeps its author's
|
|
899
|
+
// line breaks as paragraph breaks and then wraps again inside
|
|
900
|
+
// them — which at 60 columns left the word "them." alone on a
|
|
901
|
+
// line. The command stays separate because it is not prose and
|
|
902
|
+
// must never be split across a wrap.
|
|
903
|
+
"These policies are installed but NOTHING is running them. No agent " +
|
|
904
|
+
"CLI on this machine is wired to call failproofai, so every policy " +
|
|
905
|
+
"below is inert. Wire it up with:",
|
|
906
|
+
" failproofai config",
|
|
907
|
+
],
|
|
908
|
+
opts,
|
|
909
|
+
)
|
|
910
|
+
: nextStep(
|
|
911
|
+
"failproofai config",
|
|
912
|
+
config.enabledPolicies.length > 0
|
|
913
|
+
? "These are configured but NOT installed — no hook is running them:"
|
|
914
|
+
: "Nothing is set up yet. Get started with:",
|
|
915
|
+
opts,
|
|
916
|
+
),
|
|
889
917
|
);
|
|
890
918
|
}
|
|
891
919
|
// Held back to the end rather than printed here. Everything below this point
|
package/src/hooks/pack-cli.ts
CHANGED
|
@@ -601,6 +601,46 @@ export async function runPublishCommand(rest: string[]): Promise<PackCliResult>
|
|
|
601
601
|
return publish(rest);
|
|
602
602
|
}
|
|
603
603
|
|
|
604
|
+
/**
|
|
605
|
+
* The pack's own list, defaults pre-ticked, before anything is installed.
|
|
606
|
+
*
|
|
607
|
+
* Reads the MANIFEST only — `fetchPackPreview` never downloads the entry
|
|
608
|
+
* artifact — so the code of a pack you are still deciding about is never
|
|
609
|
+
* fetched, let alone imported.
|
|
610
|
+
*
|
|
611
|
+
* Returns null when the user cancelled, which must not be confused with an
|
|
612
|
+
* empty selection: one means "install nothing", the other means "do nothing".
|
|
613
|
+
*/
|
|
614
|
+
async function pickFromSource(
|
|
615
|
+
source: string,
|
|
616
|
+
io: { stdin: TTYIn; stdout: TTYOut },
|
|
617
|
+
): Promise<string[] | null> {
|
|
618
|
+
const preview = await fetchPackPreview(source);
|
|
619
|
+
const categories = [...new Set(preview.policies.map((p) => p.category))];
|
|
620
|
+
const rows: MultiChoice<string>[] = [];
|
|
621
|
+
for (const category of categories) {
|
|
622
|
+
for (const policy of preview.policies.filter((p) => p.category === category)) {
|
|
623
|
+
rows.push({
|
|
624
|
+
label: policy.name,
|
|
625
|
+
value: policy.name,
|
|
626
|
+
hint: policy.description,
|
|
627
|
+
checked: policy.defaultEnabled,
|
|
628
|
+
section: `${category} · ${slugifyCategory(category)}`,
|
|
629
|
+
});
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
const on = preview.policies.filter((p) => p.defaultEnabled).length;
|
|
633
|
+
const picked = await multiSelect<string>({
|
|
634
|
+
message: `${preview.id}@${preview.version} — which of these should be on?`,
|
|
635
|
+
choices: rows,
|
|
636
|
+
summaryNoun: "policies",
|
|
637
|
+
hint: `space toggles · ctrl+a all · ↵ confirm · ${on} of ${rows.length} are the publisher's defaults`,
|
|
638
|
+
stdin: io.stdin,
|
|
639
|
+
stdout: io.stdout,
|
|
640
|
+
});
|
|
641
|
+
return picked;
|
|
642
|
+
}
|
|
643
|
+
|
|
604
644
|
async function add(rest: string[]): Promise<PackCliResult> {
|
|
605
645
|
const source = packAddSource(rest);
|
|
606
646
|
const selection = selectionFrom(rest);
|
|
@@ -627,6 +667,31 @@ async function add(rest: string[]): Promise<PackCliResult> {
|
|
|
627
667
|
return fail(["--category needs at least one category, comma-separated"]);
|
|
628
668
|
}
|
|
629
669
|
|
|
670
|
+
// CHOOSE, then install. A pack's `defaultEnabled` flags are the publisher's
|
|
671
|
+
// recommendation, and taking them silently turns a recommendation into a
|
|
672
|
+
// decision made on the user's behalf — announced only afterwards, by which
|
|
673
|
+
// point the policies are already on their machine.
|
|
674
|
+
//
|
|
675
|
+
// So a human at a terminal who named no flags gets the list first, with the
|
|
676
|
+
// publisher's defaults pre-ticked. The manifest is read WITHOUT downloading
|
|
677
|
+
// the entry artifact, so deciding about a stranger's pack still never runs a
|
|
678
|
+
// stranger's code.
|
|
679
|
+
//
|
|
680
|
+
// Skipped entirely when a selection was passed (`--policy`, `--category`,
|
|
681
|
+
// `--all`) or when there is no terminal: a script asked a precise question and
|
|
682
|
+
// must get a precise answer, not a prompt it cannot see.
|
|
683
|
+
const io = { stdin: process.stdin as TTYIn, stdout: process.stdout as TTYOut };
|
|
684
|
+
const chose = !selection.only && !selection.categories && !selection.all;
|
|
685
|
+
if (chose && io.stdin.isTTY && io.stdout.isTTY) {
|
|
686
|
+
const picked = await pickFromSource(resolvedSource!, io);
|
|
687
|
+
if (picked === null) return ok(["Nothing installed."]);
|
|
688
|
+
selection.only = picked;
|
|
689
|
+
// An empty pick is a real answer — install the pack, enable none of it —
|
|
690
|
+
// but `{only: []}` is indistinguishable from "no selection" downstream, so
|
|
691
|
+
// it is carried as an explicit empty list the resolver can see.
|
|
692
|
+
if (picked.length === 0) selection.only = [];
|
|
693
|
+
}
|
|
694
|
+
|
|
630
695
|
try {
|
|
631
696
|
const result = await addPack(resolvedSource!, selection);
|
|
632
697
|
const lines = [
|
|
@@ -647,7 +712,14 @@ async function add(rest: string[]): Promise<PackCliResult> {
|
|
|
647
712
|
carried: "your existing selection",
|
|
648
713
|
all: "everything in the pack",
|
|
649
714
|
}[result.selection];
|
|
650
|
-
|
|
715
|
+
// `summarise([])` is the empty string, which would print a line ending in a
|
|
716
|
+
// colon and nothing else — the one outcome that most needs saying out loud,
|
|
717
|
+
// rendered as if something had gone missing.
|
|
718
|
+
lines.push(
|
|
719
|
+
result.enabled.length === 0
|
|
720
|
+
? ` enabled (0/${result.available.length}, ${why}): none — the pack is installed and enforcing nothing`
|
|
721
|
+
: ` enabled (${result.enabled.length}/${result.available.length}, ${why}): ${summarise(result.enabled)}`,
|
|
722
|
+
);
|
|
651
723
|
|
|
652
724
|
if (skipped.length > 0) {
|
|
653
725
|
lines.push(` not enabled (${skipped.length}): ${summarise(skipped)}`);
|
package/src/hooks/pack-store.ts
CHANGED
|
@@ -554,14 +554,23 @@ function resolveSelection(
|
|
|
554
554
|
}
|
|
555
555
|
for (const n of opts.only) picked.add(n);
|
|
556
556
|
}
|
|
557
|
-
|
|
557
|
+
// An EXPRESSED selection wins, even when it is empty.
|
|
558
|
+
//
|
|
559
|
+
// `opts.only = []` means "install the pack, enable none of it" — which is what
|
|
560
|
+
// the picker sends when somebody unticks everything and confirms. Testing
|
|
561
|
+
// `picked.size > 0` made that indistinguishable from passing no flags at all,
|
|
562
|
+
// so it fell through and installed the publisher's defaults: the exact
|
|
563
|
+
// opposite of what was chosen, reported as "the pack's defaults". Presence of
|
|
564
|
+
// the key is the signal, not its length.
|
|
565
|
+
if (opts?.only !== undefined || opts?.categories?.length) {
|
|
558
566
|
// Kept in the pack's declared order, which is the order everything else
|
|
559
567
|
// presents them in.
|
|
560
568
|
return { enabled: available.filter((n) => picked.has(n)), reason: "selected" };
|
|
561
569
|
}
|
|
562
570
|
|
|
563
|
-
// No
|
|
564
|
-
// policy back on because the user did not repeat themselves is not
|
|
571
|
+
// No selection expressed. An upgrade keeps whatever the machine already had —
|
|
572
|
+
// switching a policy back on because the user did not repeat themselves is not
|
|
573
|
+
// an upgrade.
|
|
565
574
|
if (previouslyInstalled) {
|
|
566
575
|
return { enabled: previous === null ? null : (previous ?? null), reason: "carried" };
|
|
567
576
|
}
|
package/src/hooks/tui.ts
CHANGED
|
@@ -108,7 +108,7 @@ const RADIO_OFF = "○";
|
|
|
108
108
|
export const CHECK_ON = "◼";
|
|
109
109
|
export const CHECK_OFF = "◻";
|
|
110
110
|
export const CARET = "❯";
|
|
111
|
-
const
|
|
111
|
+
const MARK = "\u25AE\u25AE"; // ▮▮ — the brand mark, per the design system
|
|
112
112
|
|
|
113
113
|
// ── color ─────────────────────────────────────────────────────────────────
|
|
114
114
|
// The single source of truth for the brand palette — exported (via `paint`)
|
|
@@ -380,7 +380,7 @@ export function renderBrandLogo(stdout: TTYOut = process.stdout): string[] {
|
|
|
380
380
|
const c = paint(colorsEnabled(stdout));
|
|
381
381
|
const cols = stdout.columns || 80;
|
|
382
382
|
if (cols < LOGO_MIN_COLS) {
|
|
383
|
-
return [`${c.
|
|
383
|
+
return [`${c.pink(MARK)} fa${c.pink("il")}proof ai ${c.dim("· " + TAGLINE)}`];
|
|
384
384
|
}
|
|
385
385
|
// NO_COLOR / non-TTY forces `basic`, which renderLogo draws monochrome — so
|
|
386
386
|
// the mark never emits an escape byte on a stream that asked for none.
|
|
@@ -491,9 +491,25 @@ type Region = { lastCount: number };
|
|
|
491
491
|
|
|
492
492
|
const WINDOW = 8; // visible rows before the checklist scrolls
|
|
493
493
|
|
|
494
|
+
/**
|
|
495
|
+
* Redraw the region as ONE atomic frame.
|
|
496
|
+
*
|
|
497
|
+
* Two things make it atomic, and both are needed. The cursor-up-and-clear used
|
|
498
|
+
* to be its own `write()`, so a terminal could render the CLEARED state before
|
|
499
|
+
* the new lines arrived — a blank flash on every keystroke, invisible locally
|
|
500
|
+
* and obvious over SSH or inside tmux, where the two writes cross a network or
|
|
501
|
+
* a multiplexer between frames. They are one string now.
|
|
502
|
+
*
|
|
503
|
+
* And that string is wrapped in synchronized output (DECSET 2026), which tells
|
|
504
|
+
* the terminal to hold what it has until the reset rather than painting each
|
|
505
|
+
* chunk as it lands. Terminals that do not implement it ignore an unknown
|
|
506
|
+
* private mode, so it costs nothing where it does not help.
|
|
507
|
+
*/
|
|
494
508
|
function repaint(out: TTYOut, region: Region, lines: string[]): void {
|
|
495
|
-
|
|
496
|
-
|
|
509
|
+
const cols = out.columns || 80;
|
|
510
|
+
const body = lines.map((l) => (l === "" ? l : truncate(l, cols))).join("\n") + "\n";
|
|
511
|
+
const clear = region.lastCount > 0 ? `${ESC}[${region.lastCount}A${ESC}[J` : "";
|
|
512
|
+
out.write(`${ESC}[?2026h${clear}${body}${ESC}[?2026l`);
|
|
497
513
|
region.lastCount = lines.length;
|
|
498
514
|
}
|
|
499
515
|
|
|
@@ -1238,9 +1254,9 @@ export function rule(label?: string, opts?: RenderOpts): string[] {
|
|
|
1238
1254
|
const { cols, c } = ctx(opts);
|
|
1239
1255
|
const width = Math.max(4, cols - INDENT.length * 2);
|
|
1240
1256
|
if (!label) return [`${INDENT}${c.dim("─".repeat(width))}`];
|
|
1241
|
-
const head =
|
|
1257
|
+
const head = `━━ ${label} `;
|
|
1242
1258
|
const tail = Math.max(3, width - head.length);
|
|
1243
|
-
return [`${INDENT}${c.dim(head + "
|
|
1259
|
+
return [`${INDENT}${c.dim(head + "━".repeat(tail))}`];
|
|
1244
1260
|
}
|
|
1245
1261
|
|
|
1246
1262
|
export interface Row {
|
|
@@ -1415,7 +1431,7 @@ const CHIP_LABELS: Record<ChipState, string> = {
|
|
|
1415
1431
|
locked: "✓ LOCK",
|
|
1416
1432
|
cloud: "✓ CLOUD",
|
|
1417
1433
|
pack: "✓ PACK",
|
|
1418
|
-
failed: "
|
|
1434
|
+
failed: "\u25B2 FAIL",
|
|
1419
1435
|
observe: "◉ OBS",
|
|
1420
1436
|
};
|
|
1421
1437
|
|
|
@@ -1486,7 +1502,7 @@ function gutterBlock(symbol: string, lines: string[], opts?: RenderOpts): string
|
|
|
1486
1502
|
* scopes or six about the daemon. */
|
|
1487
1503
|
export function warning(lines: string[], opts?: RenderOpts): string[] {
|
|
1488
1504
|
const { c } = ctx(opts);
|
|
1489
|
-
return gutterBlock(c.warn("
|
|
1505
|
+
return gutterBlock(c.warn("\u25B2"), lines, opts);
|
|
1490
1506
|
}
|
|
1491
1507
|
|
|
1492
1508
|
/** The same, for the ones that destroy something. */
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(a,b,c)=>{b.exports=a.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},2481,a=>{"use strict";var b=a.i(5050);let c=(0,b.createServerReference)("008d86fc771b7bb657f7b7628544ab5b26a3a9816f",b.callServer,void 0,b.findSourceMapURL,"getTelemetryConfig");a.s(["getTelemetryConfig",0,c])},3171,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(2481),e=a.i(66036);a.s(["default",0,function({error:a,reset:f}){return(0,c.useEffect)(()=>{(0,d.getTelemetryConfig)().then(b=>{(0,e.setClientTelemetryConfig)(b),(0,e.captureClientEvent)("client_error",{error_message:a.message,error_name:a.name,error_digest:a.digest,boundary:"global"})}).catch(()=>{})},[a]),(0,b.jsx)("html",{children:(0,b.jsx)("body",{children:(0,b.jsx)("main",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#031035",color:"#f8fafc",fontFamily:"system-ui, sans-serif"},children:(0,b.jsxs)("div",{style:{textAlign:"center",padding:"2rem",border:"1px solid rgba(239,68,68,0.4)",borderRadius:"0.5rem",maxWidth:"500px"},children:[(0,b.jsx)("h2",{style:{color:"#ef4444",marginBottom:"0.5rem",fontSize:"1.25rem"},children:"Something went wrong"}),(0,b.jsx)("p",{style:{color:"#94a3b8",marginBottom:"1.5rem"},children:a.message||"An unexpected error occurred."}),(0,b.jsx)("button",{onClick:f,style:{padding:"0.5rem 1.25rem",background:"#3b82f6",color:"white",border:"none",borderRadius:"0.375rem",cursor:"pointer",fontSize:"0.875rem"},children:"Try again"})]})})})})}])},66036,a=>{"use strict";a.s(["captureClientEvent",0,function(a,b){},"setClientTelemetryConfig",0,function(a){}])},46058,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},5050,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={callServer:function(){return f.callServer},createServerReference:function(){return h.createServerReference},findSourceMapURL:function(){return g.findSourceMapURL}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20611),g=a.r(1722),h=a.r(38783)},20611,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"callServer",{enumerable:!0,get:function(){return g}});let d=a.r(72131),e=a.r(88347),f=a.r(90841);async function g(a,b){return new Promise((c,g)=>{(0,d.startTransition)(()=>{(0,f.dispatchAppRouterAction)({type:e.ACTION_SERVER_ACTION,actionId:a,actionArgs:b,resolve:c,reject:g})})})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},1722,(a,b,c)=>{"use strict";let d;Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"findSourceMapURL",{enumerable:!0,get:function(){return d}});("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},88347,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e,f={ACTION_HMR_REFRESH:function(){return l},ACTION_NAVIGATE:function(){return i},ACTION_REFRESH:function(){return h},ACTION_RESTORE:function(){return j},ACTION_SERVER_ACTION:function(){return m},ACTION_SERVER_PATCH:function(){return k},PrefetchKind:function(){return n},ScrollBehavior:function(){return o}};for(var g in f)Object.defineProperty(c,g,{enumerable:!0,get:f[g]});let h="refresh",i="navigate",j="restore",k="server-patch",l="hmr-refresh",m="server-action";var n=((d={}).AUTO="auto",d.FULL="full",d),o=((e={})[e.Default=0]="Default",e[e.NoScroll=1]="NoScroll",e);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},90841,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={dispatchAppRouterAction:function(){return i},dispatchGestureState:function(){return j},refreshOnInstantNavigationUnlock:function(){return h},useActionQueue:function(){return k}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(46058)._(a.r(72131)),g=a.r(67009);a.r(88347);function h(){}function i(a){!0;throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0})}function j(a){!0;throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0})}function k(a){let[b,c]=f.default.useState(a.state),[d,e]=(0,f.useOptimistic)(b),h=(0,f.useMemo)(()=>d,[d]);return(0,g.isThenable)(h)?(0,f.use)(h):h}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},42602,(a,b,c)=>{"use strict";b.exports=a.r(18622)},9270,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.AppRouterContext},36313,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.HooksClientContext},18341,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.ServerInsertedHtml},35112,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactDOM},87924,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactJsxRuntime},38783,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactServerDOMTurbopackClient},72131,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].React},67009,(a,b,c)=>{"use strict";function d(a){return null!==a&&"object"==typeof a&&"then"in a&&"function"==typeof a.then}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isThenable",{enumerable:!0,get:function(){return d}})}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0l4748x._.js.map
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
module.exports=[2481,a=>{"use strict";var b=a.i(5050);let c=(0,b.createServerReference)("008d86fc771b7bb657f7b7628544ab5b26a3a9816f",b.callServer,void 0,b.findSourceMapURL,"getTelemetryConfig");a.s(["getTelemetryConfig",0,c])},18952,a=>{"use strict";var b=a.i(87924),c=a.i(72131);let d=[],e=0,f=new Set;function g(){for(let a of f)a()}function h(a){return f.add(a),()=>f.delete(a)}function i(){return d}function j({message:a}){let[d,e]=(0,c.useState)(!1);return(0,c.useEffect)(()=>{requestAnimationFrame(()=>e(!0));let a=setTimeout(()=>e(!1),2e3);return()=>clearTimeout(a)},[]),(0,b.jsx)("div",{className:`bg-card border border-border text-foreground text-sm px-4 py-2 rounded-lg shadow-lg transition-opacity duration-300 ${d?"opacity-100":"opacity-0"}`,children:a})}a.s(["Toaster",0,function(){let a=(0,c.useSyncExternalStore)(h,i,i);return(0,b.jsx)("div",{className:"fixed bottom-4 right-4 z-50 flex flex-col gap-2",children:a.map(a=>(0,b.jsx)(j,{message:a.message},a.id))})},"toast",0,function(a){let b=e++;d=[...d,{id:b,message:a}],g(),setTimeout(()=>{d=d.filter(a=>a.id!==b),g()},2500)}])},10765,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(2481),f=a.i(66036);let g=(0,c.createContext)(void 0);a.s(["PostHogProvider",0,function({children:a}){let h=(0,d.usePathname)(),i=(0,c.useRef)(null),j=(0,c.useRef)(!1);(0,c.useEffect)(()=>{let a=!1;return(0,e.getTelemetryConfig)().then(b=>{a||((0,f.setClientTelemetryConfig)(b),j.current=!0,(0,f.captureClientEvent)("$pageview"),i.current=window.location.pathname)}),()=>{a=!0}},[]),(0,c.useEffect)(()=>{j.current&&i.current!==h&&(i.current=h,(0,f.captureClientEvent)("$pageview"))},[h]);let k=c.default.useCallback((a,b)=>{(0,f.captureClientEvent)(a,b)},[]);return(0,b.jsx)(g.Provider,{value:{capture:k},children:a})},"usePostHog",0,function(){let a=(0,c.useContext)(g);if(void 0===a)throw Error("usePostHog must be used within a PostHogProvider");return a}])},66036,a=>{"use strict";a.s(["captureClientEvent",0,function(a,b){},"setClientTelemetryConfig",0,function(a){}])},46058,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},5050,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={callServer:function(){return f.callServer},createServerReference:function(){return h.createServerReference},findSourceMapURL:function(){return g.findSourceMapURL}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20611),g=a.r(1722),h=a.r(38783)},20611,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"callServer",{enumerable:!0,get:function(){return g}});let d=a.r(72131),e=a.r(88347),f=a.r(90841);async function g(a,b){return new Promise((c,g)=>{(0,d.startTransition)(()=>{(0,f.dispatchAppRouterAction)({type:e.ACTION_SERVER_ACTION,actionId:a,actionArgs:b,resolve:c,reject:g})})})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},1722,(a,b,c)=>{"use strict";let d;Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"findSourceMapURL",{enumerable:!0,get:function(){return d}});("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},88347,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e,f={ACTION_HMR_REFRESH:function(){return l},ACTION_NAVIGATE:function(){return i},ACTION_REFRESH:function(){return h},ACTION_RESTORE:function(){return j},ACTION_SERVER_ACTION:function(){return m},ACTION_SERVER_PATCH:function(){return k},PrefetchKind:function(){return n},ScrollBehavior:function(){return o}};for(var g in f)Object.defineProperty(c,g,{enumerable:!0,get:f[g]});let h="refresh",i="navigate",j="restore",k="server-patch",l="hmr-refresh",m="server-action";var n=((d={}).AUTO="auto",d.FULL="full",d),o=((e={})[e.Default=0]="Default",e[e.NoScroll=1]="NoScroll",e);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},90841,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={dispatchAppRouterAction:function(){return i},dispatchGestureState:function(){return j},refreshOnInstantNavigationUnlock:function(){return h},useActionQueue:function(){return k}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(46058)._(a.r(72131)),g=a.r(67009);a.r(88347);function h(){}function i(a){!0;throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0})}function j(a){!0;throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0})}function k(a){let[b,c]=f.default.useState(a.state),[d,e]=(0,f.useOptimistic)(b),h=(0,f.useMemo)(()=>d,[d]);return(0,g.isThenable)(h)?(0,f.use)(h):h}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},14827,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={createLinkPrefetchPartialError:function(){return g},createUnrenderedSegmentError:function(){return f}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a,b){let c=`Route "${a}": Could not validate that a segment in your UI has instant navigation.`;if(b.length>0){let a=1===b.length?"Dropped segment":"Dropped segments";c+=`
|
|
2
|
-
|
|
3
|
-
This segment was dropped from rendering. Issues that would prevent instant navigation will go undetected.
|
|
4
|
-
|
|
5
|
-
${a}:
|
|
6
|
-
${b.map(a=>` ${a}`).join("\n")}
|
|
7
|
-
|
|
8
|
-
Ways to fix this:
|
|
9
|
-
- [render] Render the dropped segment
|
|
10
|
-
- [ignore] Set \`export const instant = false\` to opt the dropped segment out of instant-navigation validation
|
|
11
|
-
|
|
12
|
-
Learn more: https://nextjs.org/docs/messages/instant-unrendered-segment`}return Object.defineProperty(Error(c),"__NEXT_ERROR_CODE",{value:"E1286",enumerable:!1,configurable:!0})}function g(a){return Object.defineProperty(Error(`Next.js encountered dynamic data during prefetching for "${a}".
|
|
13
|
-
|
|
14
|
-
This will lead to slower, more expensive prefetches.
|
|
15
|
-
|
|
16
|
-
Ways to fix this:
|
|
17
|
-
- [upgrade] Opt into Partial Prefetching by exporting \`const prefetch = 'partial'\` from the page or layout, or by setting \`partialPrefetching: true\` in next.config to opt the whole app in
|
|
18
|
-
- [disable] Remove \`prefetch={true}\` from the <Link> to use the default prefetch
|
|
19
|
-
- [ignore] Set \`export const instant = false\` to opt the route out of instant-navigation validation
|
|
20
|
-
|
|
21
|
-
Learn more: https://nextjs.org/docs/messages/instant-link-prefetch-partial`),"__NEXT_ERROR_CODE",{value:"E1435",enumerable:!1,configurable:!0})}},88644,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"InvariantError",{enumerable:!0,get:function(){return d}});class d extends Error{constructor(a,b){super(`Invariant: ${a.endsWith(".")?a:a+"."} This is a bug in Next.js.`,b),Object.defineProperty(this,"__NEXT_ERROR_CODE",{value:"E1179",enumerable:!1,configurable:!0}),this.name="InvariantError"}}},67009,(a,b,c)=>{"use strict";function d(a){return null!==a&&"object"==typeof a&&"then"in a&&"function"==typeof a.then}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isThenable",{enumerable:!0,get:function(){return d}})},41997,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={BailoutToCSRError:function(){return g},isBailoutToCSRError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="BAILOUT_TO_CLIENT_SIDE_RENDERING";class g extends Error{constructor(a){super(`Bail out to client-side rendering: ${a}`),this.reason=a,this.digest=f}}function h(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===f}},54427,(a,b,c)=>{"use strict";function d(){let a,b,c=new Promise((c,d)=>{a=c,b=d});return{resolve:a,reject:b,promise:c}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"createPromiseWithResolvers",{enumerable:!0,get:function(){return d}})},39118,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"}];
|
|
22
|
-
|
|
23
|
-
//# sourceMappingURL=_0bwu160._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,3831,e=>{"use strict";var t=e.i(95187);let a=(0,t.createServerReference)("602351c202b85b8076570a2308b7d8dbbbb5512b78",t.callServer,void 0,t.findSourceMapURL,"searchHookActivityAction");e.s(["searchHookActivityAction",0,a])},73520,e=>{"use strict";var t=e.i(43476),a=e.i(24071),r=e.i(67927);e.s(["default",0,function({currentPage:e,totalPages:l,onPageChange:s}){if(l<=1)return null;let o=e=>`px-3 py-2 text-sm rounded-md transition-colors flex items-center gap-1 bg-muted text-muted-foreground ${e?"opacity-50 cursor-not-allowed":"hover:bg-muted/80"}`;return(0,t.jsxs)("div",{className:"flex items-center justify-center gap-2 py-4",children:[(0,t.jsxs)("button",{onClick:()=>s(e-1),disabled:1===e,className:o(1===e),"aria-label":"Previous page",children:[(0,t.jsx)(a.ChevronLeft,{className:"w-4 h-4"}),(0,t.jsx)("span",{className:"hidden sm:inline",children:"Previous"})]}),(0,t.jsx)("div",{className:"flex items-center gap-1",children:(()=>{if(l<=7)return Array.from({length:l},(e,t)=>t+1);let t=[1],a=Math.max(2,e-1),r=Math.min(l-1,e+1);e<=3&&(r=Math.min(5,l-1)),e>=l-2&&(a=Math.max(2,l-4)),a>2&&t.push("ellipsis-start");for(let e=a;e<=r;e++)t.push(e);return r<l-1&&t.push("ellipsis-end"),t.push(l),t})().map(a=>"string"==typeof a?(0,t.jsx)("span",{className:"px-2 text-muted-foreground",children:"..."},a):(0,t.jsx)("button",{onClick:()=>s(a),className:`min-w-[2.5rem] px-3 py-2 text-sm rounded-md transition-colors ${e===a?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:bg-muted/80"}`,"aria-label":`Page ${a}`,"aria-current":e===a?"page":void 0,children:a},a))}),(0,t.jsxs)("button",{onClick:()=>s(e+1),disabled:e===l,className:o(e===l),"aria-label":"Next page",children:[(0,t.jsx)("span",{className:"hidden sm:inline",children:"Next"}),(0,t.jsx)(r.ChevronRight,{className:"w-4 h-4"})]})]})}])},24578,e=>{"use strict";let t={claude:{id:"claude",label:"Claude Code",badgeClasses:"bg-orange-500/10 text-orange-400 border-orange-500/20"},codex:{id:"codex",label:"OpenAI Codex",badgeClasses:"bg-purple-500/10 text-purple-400 border-purple-500/20"},copilot:{id:"copilot",label:"GitHub Copilot",badgeClasses:"bg-blue-500/10 text-blue-400 border-blue-500/20"},cursor:{id:"cursor",label:"Cursor Agent",badgeClasses:"bg-emerald-500/10 text-emerald-400 border-emerald-500/20"},opencode:{id:"opencode",label:"OpenCode",badgeClasses:"bg-amber-500/10 text-amber-400 border-amber-500/20"},pi:{id:"pi",label:"Pi",badgeClasses:"bg-pink-500/10 text-pink-400 border-pink-500/20"},hermes:{id:"hermes",label:"Hermes",badgeClasses:"bg-indigo-500/10 text-indigo-400 border-indigo-500/20"},openclaw:{id:"openclaw",label:"OpenClaw",badgeClasses:"bg-teal-500/10 text-teal-400 border-teal-500/20"},factory:{id:"factory",label:"Factory Droid",badgeClasses:"bg-rose-500/10 text-rose-400 border-rose-500/20"},devin:{id:"devin",label:"Devin CLI",badgeClasses:"bg-violet-500/10 text-violet-400 border-violet-500/20"},antigravity:{id:"antigravity",label:"Antigravity CLI",badgeClasses:"bg-cyan-500/10 text-cyan-400 border-cyan-500/20"},goose:{id:"goose",label:"Goose",badgeClasses:"bg-lime-500/10 text-lime-400 border-lime-500/20"}};e.s(["KNOWN_CLI_IDS",0,["claude","codex","copilot","cursor","opencode","pi","hermes","openclaw","factory","devin","antigravity","goose"],"getCliBadgeClasses",0,function(e){return t[e]?.badgeClasses??t.claude.badgeClasses},"getCliLabel",0,function(e){return t[e]?.label??e},"isKnownCli",0,function(e){return"string"==typeof e&&Object.prototype.hasOwnProperty.call(t,e)}])},34713,e=>{"use strict";e.s(["formatDuration",0,function(e){if(e<1e3)return`${e}ms`;let t=Math.round(e/100);if(t<600)return`${(t/10).toFixed(1)}s`;let a=Math.round(e/1e3);if(a<3600){let e=Math.floor(a/60);return`${e}m ${a%60}s`}let r=Math.round(e/6e4),l=Math.floor(r/60);return`${l}h ${r%60}m`},"formatRelativeTime",0,function(e){let t=Date.now()-e;return t<6e4?`${Math.max(1,Math.floor(t/1e3))}s ago`:t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:`${Math.floor(t/864e5)}d ago`}])},80060,2711,e=>{"use strict";var t=e.i(18566),a=e.i(71645);function r(e){let t=e.getFullYear(),a=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0");return`${t}-${a}-${r}`}function l(e){var t;if(!e||(t=e,!/^\d{4}-\d{2}-\d{2}$/.test(t)||isNaN(Date.parse(t))))return null;let[a,r,l]=e.split("-").map(Number);return new Date(a,r-1,l,12,0,0)}e.s(["useUrlParams",0,function(){let e=(0,t.useSearchParams)(),r=(0,t.useRouter)(),l=(0,t.usePathname)(),s=(0,a.useRef)(null),o=(0,a.useCallback)(t=>e.get(t),[e]),i=(0,a.useCallback)(()=>new URLSearchParams(e.toString()),[e]),n=(0,a.useCallback)(t=>{s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{let a=new URLSearchParams(e.toString());for(let[e,r]of Object.entries(t))void 0===r||""===r?a.delete(e):a.set(e,r);let s=a.toString(),o=s?`${l}?${s}`:l;r.replace(o,{scroll:!1})},150)},[e,l,r]);return(0,a.useEffect)(()=>()=>{s.current&&clearTimeout(s.current)},[]),{get:o,getAll:i,setAll:n}}],80060),e.s(["dateRangeToParams",0,function(e){let t={};return e.from&&(t.from=r(e.from)),e.to&&(t.to=r(e.to)),t},"keywordsToParam",0,function(e){if(0!==e.length)return e.map(e=>encodeURIComponent(e)).join(",")},"pageToParam",0,function(e){return e<=1?void 0:String(e)},"paramToKeywords",0,function(e){return e?e.split(",").map(e=>decodeURIComponent(e.trim())).filter(e=>e.length>0):[]},"paramToPage",0,function(e){if(!e)return 1;let t=parseInt(e,10);return Number.isFinite(t)&&t>=1?t:1},"paramToPreset",0,function(e){return e&&["all","last-hour","today","last-7-days","last-30-days","custom"].includes(e)?e:"all"},"paramsToDateRange",0,function(e,t){return{from:l(e),to:l(t)}},"presetToParam",0,function(e){return"all"===e?void 0:e}],2711)},89664,e=>{"use strict";let t=(0,e.i(56420).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,t],89664)},24071,e=>{"use strict";let t=(0,e.i(56420).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);e.s(["ChevronLeft",0,t],24071)},67927,e=>{"use strict";let t=(0,e.i(56420).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",0,t],67927)},8734,e=>{"use strict";let t=(0,e.i(56420).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",0,t],8734)},16306,e=>{"use strict";let t=(0,e.i(56420).default)("shield-alert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);e.s(["ShieldAlert",0,t],16306)},84026,29407,e=>{"use strict";var t=e.i(56420);let a=(0,t.default)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["ShieldCheck",0,a],84026);let r=(0,t.default)("shield-x",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m14.5 9.5-5 5",key:"17q4r4"}],["path",{d:"m9.5 9.5 5 5",key:"18nt4w"}]]);e.s(["ShieldX",0,r],29407)},82954,e=>{"use strict";let t=(0,e.i(56420).default)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);e.s(["Shield",0,t],82954)},63676,e=>{"use strict";let t=(0,e.i(56420).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",0,t],63676)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,57405,e=>{"use strict";var t=e.i(95187);let r=(0,t.createServerReference)("008d86fc771b7bb657f7b7628544ab5b26a3a9816f",t.callServer,void 0,t.findSourceMapURL,"getTelemetryConfig");e.s(["getTelemetryConfig",0,r])},53348,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(57405),l=e.i(9969);e.s(["default",0,function({error:e,reset:a}){return(0,r.useEffect)(()=>{(0,n.getTelemetryConfig)().then(t=>{(0,l.setClientTelemetryConfig)(t),(0,l.captureClientEvent)("client_error",{error_message:e.message,error_name:e.name,error_digest:e.digest,boundary:"global"})}).catch(()=>{})},[e]),(0,t.jsx)("html",{children:(0,t.jsx)("body",{children:(0,t.jsx)("main",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#031035",color:"#f8fafc",fontFamily:"system-ui, sans-serif"},children:(0,t.jsxs)("div",{style:{textAlign:"center",padding:"2rem",border:"1px solid rgba(239,68,68,0.4)",borderRadius:"0.5rem",maxWidth:"500px"},children:[(0,t.jsx)("h2",{style:{color:"#ef4444",marginBottom:"0.5rem",fontSize:"1.25rem"},children:"Something went wrong"}),(0,t.jsx)("p",{style:{color:"#94a3b8",marginBottom:"1.5rem"},children:e.message||"An unexpected error occurred."}),(0,t.jsx)("button",{onClick:a,style:{padding:"0.5rem 1.25rem",background:"#3b82f6",color:"white",border:"none",borderRadius:"0.375rem",cursor:"pointer",fontSize:"0.875rem"},children:"Try again"})]})})})})}])},9969,e=>{"use strict";let t=null;e.s(["captureClientEvent",0,function(e,r){if(!t||!t.enabled)return;let n=JSON.stringify({api_key:t.apiKey,event:e,distinct_id:t.distinctId,properties:{...r,$lib:"failproofai-web",failproofai_version:t.version,product:"failproofai-oss",$current_url:window.location.href,$pathname:window.location.pathname}});fetch(t.host.replace(/\/+$/,"")+"/capture/",{method:"POST",headers:{"Content-Type":"application/json"},body:n,keepalive:!0,signal:AbortSignal.timeout(5e3)}).catch(()=>{})},"setClientTelemetryConfig",0,function(e){t=e}],9969)},95187,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={callServer:function(){return a.callServer},createServerReference:function(){return u.createServerReference},findSourceMapURL:function(){return o.findSourceMapURL}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let a=e.r(32120),o=e.r(92245),u=e.r(35326)},28298,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useRouterBFCache",{enumerable:!0,get:function(){return l}});let n=e.r(71645);function l(e,t,r){let[l,a]=(0,n.useState)(()=>({tree:e,cacheNode:t,stateKey:r,next:null}));if(l.tree===e)return l;let o={tree:e,cacheNode:t,stateKey:r,next:null},u=1,i=l,s=o;for(;null!==i&&u<1;){if(i.stateKey===r){s.next=i.next;break}{u++;let e={tree:i.tree,cacheNode:i.cacheNode,stateKey:i.stateKey,next:null};s.next=e,s=e}i=i.next}return a(o),o}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},47257,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientPageRoot",{enumerable:!0,get:function(){return s}});let n=e.r(43476),l=e.r(8372),a=e.r(71645),o=e.r(33906),u=e.r(61994),i=e.r(15783);function s({Component:e,serverProvidedParams:t}){let r,d;if(null!==t)r=t.searchParams,d=t.params;else{let e=(0,a.use)(l.LayoutRouterContext);d=null!==e?e.parentParams:{},r=(0,o.urlSearchParamsToParsedUrlQuery)((0,a.use)(u.SearchParamsContext))}let c=(0,i.createClientSearchParams)(r),f=(0,i.createClientParams)(d);return(0,n.jsx)(e,{params:f,searchParams:c})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},92825,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientSegmentRoot",{enumerable:!0,get:function(){return u}});let n=e.r(43476),l=e.r(8372),a=e.r(71645),o=e.r(15783);function u({Component:e,slots:t,serverProvidedParams:r}){let i;if(null!==r)i=r.params;else{let e=(0,a.use)(l.LayoutRouterContext);i=null!==e?e.parentParams:{}}let s=(0,o.createClientParams)(i);return(0,n.jsx)(e,{...t,params:s})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},68017,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"HTTPAccessFallbackBoundary",{enumerable:!0,get:function(){return d}});let n=e.r(90809),l=e.r(43476),a=n._(e.r(71645)),o=e.r(90373),u=e.r(54394),i=e.r(8372);class s extends a.default.Component{constructor(e){super(e),this.state={triggeredStatus:void 0,previousPathname:e.pathname}}componentDidCatch(){}static getDerivedStateFromError(e){if((0,u.isHTTPAccessFallbackError)(e))return{triggeredStatus:(0,u.getAccessFallbackHTTPStatus)(e)};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.triggeredStatus?{triggeredStatus:void 0,previousPathname:e.pathname}:{triggeredStatus:t.triggeredStatus,previousPathname:e.pathname}}render(){let{notFound:e,forbidden:t,unauthorized:r,children:n}=this.props,{triggeredStatus:a}=this.state,o={[u.HTTPAccessErrorStatus.NOT_FOUND]:e,[u.HTTPAccessErrorStatus.FORBIDDEN]:t,[u.HTTPAccessErrorStatus.UNAUTHORIZED]:r};if(a){let i=a===u.HTTPAccessErrorStatus.NOT_FOUND&&e,s=a===u.HTTPAccessErrorStatus.FORBIDDEN&&t,d=a===u.HTTPAccessErrorStatus.UNAUTHORIZED&&r;return i||s||d?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("meta",{name:"robots",content:"noindex"}),!1,o[a]]}):n}return n}}function d({notFound:e,forbidden:t,unauthorized:r,children:n}){let u=(0,o.useUntrackedPathname)(),c=(0,a.useContext)(i.MissingSlotContext);return e||t||r?(0,l.jsx)(s,{pathname:u,notFound:e,forbidden:t,unauthorized:r,missingSlots:c,children:n}):(0,l.jsx)(l.Fragment,{children:n})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},22976,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={InstantValidationBoundaryContext:function(){return a},PlaceValidationBoundaryBelowThisLevel:function(){return o},RenderValidationBoundaryAtThisLevel:function(){return u},SlotMarker:function(){return i}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let a=null,o=null,u=null,i=null;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},77694,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={InstantValidationBoundaryContext:function(){return a.InstantValidationBoundaryContext},PlaceValidationBoundaryBelowThisLevel:function(){return a.PlaceValidationBoundaryBelowThisLevel},RenderValidationBoundaryAtThisLevel:function(){return a.RenderValidationBoundaryAtThisLevel},SlotMarker:function(){return a.SlotMarker}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let a=e.r(22976);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},39756,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var n={LoadingBoundaryProvider:function(){return C},default:function(){return S}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let a=e.r(55682),o=e.r(90809),u=e.r(43476),i=o._(e.r(71645)),s=a._(e.r(74080)),d=e.r(8372),c=e.r(1244),f=e.r(72383),p=e.r(91915),m=e.r(58442),y=e.r(68017);e.r(77694);let b=e.r(70725),h=e.r(28298);e.r(74180);let g=e.r(61994),_=e.r(33906),v=e.r(95871);s.default.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function P(e,t,r){let n=e.getClientRects();if(0===n.length)return 0;let l=1/0;for(let e=0;e<n.length;e++){let t=n[e];t.top<l&&(l=t.top)}return l>=r()&&l<=t?1:2}i.default.Component;let j=function(e){let t=i.default.useRef(null);return(0,i.useLayoutEffect)(()=>{let{focusAndScrollRef:r,cacheNode:n}=e,l=r.forceScroll?r.scrollRef:n.scrollRef;if(null===l||!l.current)return;let a=null,o=r.hashFragment;if(o){var u;if(null===(a="top"===(u=o)?document.body:document.getElementById(u)??document.getElementsByName(u)[0]??null)){l.current=!1,r.onlyHashChange=!1,r.hashFragment=null;return}}else a=t.current;if(null===a)return;let i=!1;(0,p.disableSmoothScrollDuringRouteTransition)(()=>{let e=document.documentElement,t=null,r=null,n=null,u=()=>{var r,l;let a,o;return null===n&&(r=e,l=t,n=!Number.isFinite(o=Number.parseFloat(a=getComputedStyle(r).scrollPaddingTop))||o<0?0:a.endsWith("px")?o:a.endsWith("%")?o/100*l:0),n};(o||(t=e.clientHeight,0!==(r=P(a,t,u))))&&((i=!0,l.current=!1,o)?a.scrollIntoView():1!==r&&(e.scrollTop=0,2===P(a,t,u)&&a.scrollIntoView()))},{dontForceLayout:!0,onlyHashChange:r.onlyHashChange}),i&&(r.onlyHashChange=!1,r.hashFragment=null)},void 0),(0,u.jsx)(i.Fragment,{ref:t,children:e.children})};function x({children:e,cacheNode:t}){let r=(0,i.useContext)(d.GlobalLayoutRouterContext);if(!r)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});return(0,u.jsx)(j,{focusAndScrollRef:r.focusAndScrollRef,cacheNode:t,children:e})}function O({tree:e,segmentPath:t,debugNameContext:r,cacheNode:n,params:l,url:a,isActive:o}){let s,f=(0,i.useContext)(d.GlobalLayoutRouterContext);if((0,i.useContext)(g.NavigationPromisesContext),!f)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});let p=null!==n?n:(0,i.use)(c.unresolvedThenable),m=null!==p.prefetchRsc?p.prefetchRsc:p.rsc,y=(0,i.useDeferredValue)(p.rsc,m);if((0,v.isDeferredRsc)(y)){let e=(0,i.use)(y);null===e&&(0,i.use)(c.unresolvedThenable),s=e}else null===y&&(0,i.use)(c.unresolvedThenable),s=y;let b=s;return(0,u.jsx)(d.LayoutRouterContext.Provider,{value:{parentTree:e,parentCacheNode:p,parentSegmentPath:t,parentParams:l,parentLoadingData:null,debugNameContext:r,url:a,isActive:o},children:b})}function C({loading:e,children:t}){let r=(0,i.use)(d.LayoutRouterContext);return null===r?t:(0,u.jsx)(d.LayoutRouterContext.Provider,{value:{parentTree:r.parentTree,parentCacheNode:r.parentCacheNode,parentSegmentPath:r.parentSegmentPath,parentParams:r.parentParams,parentLoadingData:e,debugNameContext:r.debugNameContext,url:r.url,isActive:r.isActive},children:t})}function R({name:e,loading:t,children:r}){if(null!==t){let n=t[0],l=t[1],a=t[2];return(0,u.jsx)(i.Suspense,{name:e,fallback:(0,u.jsxs)(u.Fragment,{children:[l,a,n]}),children:r})}return(0,u.jsx)(u.Fragment,{children:r})}function S({parallelRouterKey:e,error:t,errorStyles:r,errorScripts:n,templateStyles:l,templateScripts:a,template:o,notFound:s,forbidden:p,unauthorized:g,segmentViewBoundaries:v}){let P=(0,i.useContext)(d.LayoutRouterContext);if(!P)throw Object.defineProperty(Error("invariant expected layout router to be mounted"),"__NEXT_ERROR_CODE",{value:"E56",enumerable:!1,configurable:!0});let{parentTree:j,parentCacheNode:C,parentSegmentPath:T,parentParams:M,parentLoadingData:E,url:N,isActive:F,debugNameContext:A}=P,B=j[0],L=null===T?[e]:T.concat([B,e]),D=j[1][e],w=C.slots;(void 0===D||null===w)&&(0,i.use)(c.unresolvedThenable);let H=D[0],k=w[e]??null,U=(0,b.createRouterCacheKey)(H,!0),I=(0,h.useRouterBFCache)(D,k,U),V=[];do{let e=I.tree,i=I.cacheNode,c=I.stateKey,b=e[0],h=M;if(Array.isArray(b)){let e=b[0],t=b[1],r=b[2],n=(0,_.getParamValueFromCacheKey)(t,r);null!==n&&(h={...M,[e]:n})}let v=function(e){if("/"===e)return"/";if("string"==typeof e)if("(__SLOT__)"===e)return;else return e+"/";return e[1]+"/"}(b),P=v??A,j=void 0===v?void 0:A,C=(0,u.jsxs)(x,{cacheNode:i,children:[(0,u.jsx)(f.ErrorBoundary,{errorComponent:t,errorStyles:r,errorScripts:n,children:(0,u.jsx)(R,{name:j,loading:E,children:(0,u.jsx)(y.HTTPAccessFallbackBoundary,{notFound:s,forbidden:p,unauthorized:g,children:(0,u.jsxs)(m.RedirectBoundary,{children:[(0,u.jsx)(O,{url:N,tree:e,params:h,cacheNode:i,segmentPath:L,debugNameContext:P,isActive:F&&c===U}),null]})})})}),null]}),S=(0,u.jsxs)(d.TemplateContext.Provider,{value:C,children:[l,a,o]},c);V.push(S),I=I.next}while(null!==I)return V}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},37457,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return u}});let n=e.r(90809),l=e.r(43476),a=n._(e.r(71645)),o=e.r(8372);function u(){let e=(0,a.useContext)(o.TemplateContext);return(0,l.jsx)(l.Fragment,{children:e})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},6831,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return l}});let n=new WeakMap;function l(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},14193,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(6831).createRenderParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},93504,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return l}});let n=new WeakMap;function l(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},66996,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(93504).createRenderSearchParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},15783,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={createClientParams:function(){return a.createRenderParamsFromClient},createClientSearchParams:function(){return o.createRenderSearchParamsFromClient}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let a=e.r(14193),o=e.r(66996);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},27201,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"IconMark",{enumerable:!0,get:function(){return l}});let n=e.r(43476),l=()=>"u">typeof window?null:(0,n.jsx)("meta",{name:"«nxt-icon»"})},91915,(e,t,r)=>{"use strict";function n(e,t={}){if(t.onlyHashChange)return void e();let r=document.documentElement;if("smooth"!==r.dataset.scrollBehavior)return void e();let l=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=l}e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"disableSmoothScrollDuringRouteTransition",{enumerable:!0,get:function(){return n}})}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,53348,e=>{"use strict";var r=e.i(43476),t=e.i(71645),n=e.i(57405),i=e.i(9969);e.s(["default",0,function({error:e,reset:o}){return(0,t.useEffect)(()=>{(0,n.getTelemetryConfig)().then(r=>{(0,i.setClientTelemetryConfig)(r),(0,i.captureClientEvent)("client_error",{error_message:e.message,error_name:e.name,error_digest:e.digest,boundary:"global"})}).catch(()=>{})},[e]),(0,r.jsx)("html",{children:(0,r.jsx)("body",{children:(0,r.jsx)("main",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#031035",color:"#f8fafc",fontFamily:"system-ui, sans-serif"},children:(0,r.jsxs)("div",{style:{textAlign:"center",padding:"2rem",border:"1px solid rgba(239,68,68,0.4)",borderRadius:"0.5rem",maxWidth:"500px"},children:[(0,r.jsx)("h2",{style:{color:"#ef4444",marginBottom:"0.5rem",fontSize:"1.25rem"},children:"Something went wrong"}),(0,r.jsx)("p",{style:{color:"#94a3b8",marginBottom:"1.5rem"},children:e.message||"An unexpected error occurred."}),(0,r.jsx)("button",{onClick:o,style:{padding:"0.5rem 1.25rem",background:"#3b82f6",color:"white",border:"none",borderRadius:"0.375rem",cursor:"pointer",fontSize:"0.875rem"},children:"Try again"})]})})})})}])}]);
|