failproofai 1.0.6-beta.0 → 1.0.6-beta.1

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.
Files changed (128) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  6. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  10. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +6 -6
  11. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  12. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.rsc +14 -14
  18. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
  19. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +13 -13
  20. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  21. package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/audit/run/route.js +4 -4
  23. package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/audit/status/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
  31. package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/index.html +1 -1
  34. package/.next/standalone/.next/server/app/index.rsc +14 -14
  35. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +13 -13
  36. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +14 -14
  37. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  38. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  39. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
  42. package/.next/standalone/.next/server/app/policies/page.js +6 -5
  43. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  46. package/.next/standalone/.next/server/app/project/[name]/page.js +1 -1
  47. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  50. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  51. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +1 -1
  52. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  55. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +4 -4
  58. package/.next/standalone/.next/server/app/settings/page.js +3 -2
  59. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o07qi9._.js +1 -1
  62. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zlqo2t._.js +1 -1
  63. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__112b4go._.js → [root-of-the-server]__1_r2rbg._.js} +4 -4
  64. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1anxb5k._.js +1 -1
  65. package/.next/standalone/.next/server/chunks/_0tovk6q._.js +1 -1
  66. package/.next/standalone/.next/server/chunks/_0trp3yc._.js +1 -1
  67. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4v._.js +1 -1
  68. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0-_ki57._.js +4 -0
  69. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__013jr2b._.js +2 -2
  70. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01wy8d-._.js +2 -2
  71. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02npjtd._.js +2 -2
  72. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0576iuy._.js +3 -0
  73. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0bym1os._.js → [root-of-the-server]__0cg-bgc._.js} +2 -2
  74. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0da85px._.js +2 -2
  75. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ftmoxc._.js +2 -2
  76. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0p-5p8u._.js +2 -2
  77. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__00y9ww2._.js → [root-of-the-server]__0u3w0ll._.js} +2 -2
  78. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1p2otjt._.js +2 -2
  79. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1py795m._.js +1 -1
  80. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1i26dsw._.js → [root-of-the-server]__1x3j9mj._.js} +2 -2
  81. package/.next/standalone/.next/server/chunks/ssr/_06imw3p._.js +5 -0
  82. package/.next/standalone/.next/server/chunks/ssr/_08x1r5t._.js +1 -1
  83. package/.next/standalone/.next/server/chunks/ssr/{_0lbwa8m._.js → _0qlygw6._.js} +2 -2
  84. package/.next/standalone/.next/server/chunks/ssr/{_09hs6ms._.js → _1_ddpm3._.js} +1 -1
  85. package/.next/standalone/.next/server/chunks/ssr/{_14c6q09._.js → _1_qswah._.js} +2 -2
  86. package/.next/standalone/.next/server/chunks/ssr/_1es2j7i._.js +1 -1
  87. package/.next/standalone/.next/server/chunks/ssr/_1u8-lu2._.js +1 -1
  88. package/.next/standalone/.next/server/chunks/ssr/_1zopuov._.js +1 -1
  89. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo.js +12 -11
  90. package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47._.js +1 -1
  91. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x._.js +1 -1
  92. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpc._.js +1 -1
  93. package/.next/standalone/.next/server/chunks/ssr/app_settings_settings-client_tsx_20lq-mq._.js +1 -1
  94. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  95. package/.next/standalone/.next/server/pages/404.html +1 -1
  96. package/.next/standalone/.next/server/pages/500.html +1 -1
  97. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/server-reference-manifest.json +19 -19
  99. package/.next/standalone/.next/static/chunks/{03n_qjih7-w6q.js → 02vwr5js1x28j.js} +1 -1
  100. package/.next/standalone/.next/static/chunks/{3d3hzhcnns6ww.js → 06fjx8-0_qufs.js} +1 -1
  101. package/.next/standalone/.next/static/chunks/{17pjz_h45j10c.js → 0cbvytf8epn34.js} +1 -1
  102. package/.next/standalone/.next/static/chunks/{1ekh-hj_iom84.js → 0y227_ohdqwvn.js} +1 -1
  103. package/.next/standalone/.next/static/chunks/{0vanab2g65op_.js → 1p4xauf-zu6zk.js} +1 -1
  104. package/.next/standalone/.next/static/chunks/{1so_3s0q4c4j1.js → 1qf2uiipatr80.js} +1 -1
  105. package/.next/standalone/.next/static/chunks/{3iasus89n8mg1.js → 1uc_s_dftgxiq.js} +1 -1
  106. package/.next/standalone/.next/static/chunks/{44_cj1_i_aa2z.js → 27_bwbg8sv6vj.js} +1 -1
  107. package/.next/standalone/.next/static/chunks/{2u0kol_boahtv.js → 2x776s0x3n_tu.js} +1 -1
  108. package/.next/standalone/.next/static/chunks/{3_vesf83-0903.js → 3ht0xsco46pul.js} +1 -1
  109. package/.next/standalone/hermes-plugin/README.md +6 -1
  110. package/.next/standalone/hermes-plugin/client.py +22 -6
  111. package/.next/standalone/lib/hermes-profiles.ts +67 -19
  112. package/.next/standalone/lib/hermes-sessions.ts +3 -2
  113. package/.next/standalone/package.json +9 -9
  114. package/.next/standalone/server.js +1 -1
  115. package/dist/cli.mjs +273 -220
  116. package/dist/worker.mjs +62 -32
  117. package/hermes-plugin/README.md +6 -1
  118. package/hermes-plugin/client.py +22 -6
  119. package/lib/hermes-profiles.ts +67 -19
  120. package/lib/hermes-sessions.ts +3 -2
  121. package/package.json +9 -9
  122. package/src/hooks/integrations.ts +7 -0
  123. package/src/hooks/manager.ts +24 -2
  124. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0oa1lav._.js +0 -3
  125. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s740oi._.js +0 -6
  126. /package/.next/standalone/.next/static/{-7OT2NwGPxAu-skEL_Xee → QCNYz2yCxxdeggg1k0iEq}/_buildManifest.js +0 -0
  127. /package/.next/standalone/.next/static/{-7OT2NwGPxAu-skEL_Xee → QCNYz2yCxxdeggg1k0iEq}/_clientMiddlewareManifest.js +0 -0
  128. /package/.next/standalone/.next/static/{-7OT2NwGPxAu-skEL_Xee → QCNYz2yCxxdeggg1k0iEq}/_ssgManifest.js +0 -0
@@ -3,10 +3,11 @@
3
3
  *
4
4
  * A Hermes "profile" is not a column or a flag: it is a whole separate Hermes
5
5
  * home directory, each with its own `config.yaml`, `.env`, `SOUL.md`, and
6
- * `state.db`. The default profile lives at `~/.hermes`; every other profile at
7
- * `~/.hermes/profiles/<name>/`. Selection is `hermes -p <name>`, a generated
8
- * `~/.local/bin/<name>` alias that exports `HERMES_HOME`, or a sticky default
9
- * recorded in `<root>/active_profile`.
6
+ * `state.db`. The default profile lives at `~/.hermes`; upstream named profiles
7
+ * live at `~/.hermes/profiles/<name>/`, while older/custom multi-install setups
8
+ * may use sibling homes such as `~/.hermes-work`. Selection is `hermes -p
9
+ * <name>`, a generated `~/.local/bin/<name>` alias that exports `HERMES_HOME`,
10
+ * or a sticky default recorded in `<root>/active_profile`.
10
11
  *
11
12
  * Upstream's own contributor guide warns that hardcoding `~/.hermes` breaks
12
13
  * profiles — which is exactly what both pillars used to do:
@@ -21,12 +22,14 @@
21
22
  * Home override: set `HERMES_HOME` (Hermes's own env var — respected here so a
22
23
  * profile-scoped shell and failproofai agree on what "all profiles" means).
23
24
  */
24
- import { readdirSync } from "node:fs";
25
+ import { existsSync, readdirSync } from "node:fs";
25
26
  import { homedir } from "node:os";
26
27
  import { basename, dirname, join, resolve } from "node:path";
27
28
 
28
29
  /** Directory under the Hermes root that holds non-default profiles. */
29
30
  const PROFILES_DIR = "profiles";
31
+ const STANDARD_HOME = ".hermes";
32
+ const SIBLING_HOME_PREFIX = ".hermes-";
30
33
 
31
34
  /** Name we give the root home (`~/.hermes`), which Hermes itself leaves unnamed. */
32
35
  export const HERMES_DEFAULT_PROFILE = "default";
@@ -41,28 +44,45 @@ export interface HermesProfile {
41
44
  /**
42
45
  * The Hermes ROOT home — the directory that owns `profiles/`.
43
46
  *
44
- * `HERMES_HOME` may point AT a profile (`<root>/profiles/<name>`), because
45
- * that's what the per-profile alias wrapper exports. We climb back to `<root>`
46
- * in that case so discovery still sees every sibling profile — mirroring what
47
- * upstream does so `profile list` can see them all.
47
+ * `HERMES_HOME` may point AT an upstream profile (`<root>/profiles/<name>`) or
48
+ * at a sibling installation (`~/.hermes-<name>`). We normalize either standard
49
+ * layout back to `~/.hermes` so discovery covers every installation. A custom
50
+ * non-standard path remains authoritative; scanning arbitrary sibling paths
51
+ * would risk treating backups and unrelated directories as live agents.
48
52
  */
49
53
  export function hermesRoot(): string {
50
54
  const env = (process.env.HERMES_HOME || "").trim();
51
55
  if (env) {
52
- const home = resolve(env);
56
+ let home = resolve(env);
53
57
  const parent = dirname(home);
54
- if (basename(parent) === PROFILES_DIR) return dirname(parent);
58
+ if (basename(parent) === PROFILES_DIR) home = dirname(parent);
59
+ const base = basename(home);
60
+ if (base === STANDARD_HOME || base.startsWith(SIBLING_HOME_PREFIX)) {
61
+ return join(dirname(home), STANDARD_HOME);
62
+ }
55
63
  return home;
56
64
  }
57
- return join(homedir(), ".hermes");
65
+ return join(homedir(), STANDARD_HOME);
66
+ }
67
+
68
+ function uniqueProfileName(preferred: string, seen: Set<string>): string {
69
+ if (!seen.has(preferred)) return preferred;
70
+ const base = `${preferred}-home`;
71
+ if (!seen.has(base)) return base;
72
+ let suffix = 2;
73
+ while (seen.has(`${base}-${suffix}`)) suffix += 1;
74
+ return `${base}-${suffix}`;
58
75
  }
59
76
 
60
77
  /**
61
78
  * Every Hermes profile on disk: the root home first (as `"default"`), then each
62
- * `<root>/profiles/<name>/` in name order.
79
+ * `<root>/profiles/<name>/`, then valid `~/.hermes-<name>` sibling homes, in
80
+ * name order within each layout.
63
81
  *
64
- * Fail-open — a missing or unreadable `profiles/` dir just means "default only",
65
- * which is the single-profile install everyone starts with.
82
+ * A sibling home counts only when it contains `config.yaml`, matching OpenClaw
83
+ * discovery and avoiding arbitrary `.hermes-*` backup directories. Upstream
84
+ * `profiles/` directories are authoritative and remain discoverable before
85
+ * their config is first written.
66
86
  *
67
87
  * A profile directory literally named `default` would collide with the root's
68
88
  * reserved name; the root wins and the directory is skipped (dedup by name keeps
@@ -73,22 +93,50 @@ export function listHermesProfiles(): HermesProfile[] {
73
93
  const out: HermesProfile[] = [{ name: HERMES_DEFAULT_PROFILE, home: root }];
74
94
  const seen = new Set<string>([HERMES_DEFAULT_PROFILE]);
75
95
 
76
- let names: string[];
96
+ let names: string[] = [];
77
97
  try {
78
98
  names = readdirSync(join(root, PROFILES_DIR), { withFileTypes: true })
79
99
  // Symlinked profile dirs are legitimate, and `isDirectory()` is false for them.
80
100
  .filter((e) => (e.isDirectory() || e.isSymbolicLink()) && !e.name.startsWith("."))
81
101
  .map((e) => e.name)
82
102
  .sort();
83
- } catch {
84
- return out;
85
- }
103
+ } catch {}
86
104
 
87
105
  for (const name of names) {
88
106
  if (seen.has(name)) continue;
89
107
  seen.add(name);
90
108
  out.push({ name, home: join(root, PROFILES_DIR, name) });
91
109
  }
110
+
111
+ // Only the standard ~/.hermes layout defines `.hermes-*` sibling homes.
112
+ // A custom HERMES_HOME is intentionally not used as a prefix convention.
113
+ if (basename(root) !== STANDARD_HOME) return out;
114
+
115
+ let siblings: HermesProfile[] = [];
116
+ const parent = dirname(root);
117
+ try {
118
+ siblings = readdirSync(parent, { withFileTypes: true })
119
+ .filter(
120
+ (entry) =>
121
+ (entry.isDirectory() || entry.isSymbolicLink()) &&
122
+ entry.name.startsWith(SIBLING_HOME_PREFIX) &&
123
+ entry.name.length > SIBLING_HOME_PREFIX.length &&
124
+ existsSync(join(parent, entry.name, "config.yaml")),
125
+ )
126
+ .map((entry) => ({
127
+ name: entry.name.slice(SIBLING_HOME_PREFIX.length),
128
+ home: join(parent, entry.name),
129
+ }))
130
+ .sort((a, b) => a.name.localeCompare(b.name));
131
+ } catch {
132
+ return out;
133
+ }
134
+
135
+ for (const sibling of siblings) {
136
+ const name = uniqueProfileName(sibling.name, seen);
137
+ seen.add(name);
138
+ out.push({ name, home: sibling.home });
139
+ }
92
140
  return out;
93
141
  }
94
142
 
@@ -14,8 +14,9 @@
14
14
  *
15
15
  * PROFILES: Hermes profiles are separate home dirs, each with its OWN state.db
16
16
  * (`~/.hermes/state.db` for the default, `~/.hermes/profiles/<name>/state.db`
17
- * otherwise) — see lib/hermes-profiles.ts. So every read here fans out across
18
- * profiles instead of assuming one DB.
17
+ * for upstream profiles, and `~/.hermes-<name>/state.db` for sibling homes) —
18
+ * see lib/hermes-profiles.ts. So every read here fans out across profiles
19
+ * instead of assuming one DB.
19
20
  *
20
21
  * DB path override: set `HERMES_DB_PATH` (used by tests and to point at a copied
21
22
  * or remote state.db) — it collapses discovery to that single file. Set
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "failproofai",
3
- "version": "1.0.6-beta.0",
3
+ "version": "1.0.6-beta.1",
4
4
  "description": "Observability and enforcement for AI agent harnesses. 39 built-in policies hooked into 12 of them — Claude Code, Codex, Cursor, Hermes, OpenClaw and more — blocking the tool call before it runs. Local dashboard included, no account needed.",
5
5
  "bin": {
6
6
  "failproofai": "./dist/cli.mjs",
@@ -122,15 +122,15 @@
122
122
  "browserslist": "4.28.8"
123
123
  },
124
124
  "optionalDependencies": {
125
- "@failproofai/failproofaid-linux-x64": "1.0.6-beta.0",
126
- "@failproofai/failproofaid-linux-arm64": "1.0.6-beta.0",
127
- "@failproofai/failproofaid-darwin-x64": "1.0.6-beta.0",
128
- "@failproofai/failproofaid-darwin-arm64": "1.0.6-beta.0"
125
+ "@failproofai/failproofaid-linux-x64": "1.0.6-beta.1",
126
+ "@failproofai/failproofaid-linux-arm64": "1.0.6-beta.1",
127
+ "@failproofai/failproofaid-darwin-x64": "1.0.6-beta.1",
128
+ "@failproofai/failproofaid-darwin-arm64": "1.0.6-beta.1"
129
129
  },
130
130
  "failproofaidBinaries": {
131
- "linux-x64": "38637a91db9a0e5683bbfbfffbba3d65e421960c3135510f23541df5f9d60478",
132
- "linux-arm64": "b9a2d9126fb9816b7743ec5b068d36d6515fa3a93fc2e3801fbe3a7a1b2143bf",
133
- "darwin-x64": "a06675cd28b3d2f54d45a28f527643841a69006dd68f989dad654806b190948b",
134
- "darwin-arm64": "6ef65b956ebff944c38cf2d65b6dc1066384aba7952d7d19c4805c1f1ba593ba"
131
+ "linux-x64": "b6f877cd407c3322ff8ad2f98a096b6ea15b0bd1d63de6276c689368345c1cd2",
132
+ "linux-arm64": "0da90a816b9dc707efe9b82176923cbf0f00026179c816e34eaad362ce2c0fa4",
133
+ "darwin-x64": "bcbec488353fa04a1953a87cad15054e4796117cac4fd60b17fb1c87d62b7b1e",
134
+ "darwin-arm64": "6830989a91a27642cdcc63fcfad529c69c0deb3f3abcf5ad40fd3516289b451d"
135
135
  }
136
136
  }
@@ -9,7 +9,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
9
9
  const hostname = process.env.HOSTNAME || '0.0.0.0'
10
10
 
11
11
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
12
- const nextConfig = {"env":{"NEXT_PUBLIC_APP_VERSION":"1.0.6-beta.0"},"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"instrumentationClientInject":[],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":true,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/failproofai/failproofai","enablePrerenderSourceMaps":true,"cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"appNewScrollHandler":true,"coldCacheBadge":false,"devValidationWorker":true,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"dynamicOnHover":false,"useOffline":false,"varyParams":true,"optimisticRouting":true,"instrumentationClientRouterTransitionEvents":false,"prefetchInlining":{"maxSize":2048,"maxBundleSize":10240},"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptOperationCache":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"devMemoryThresholdRestart":true,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"requestInsights":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"useTypeScriptCli":true,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":true,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"serverComponentsHmrCancellation":false,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":true,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","turbopackMemoryEvictionMode":"auto","optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"useCacheTimeout":54,"instantInsights":{"validationLevel":"warning"},"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","outputFileTracingExcludes":{"*":["node_modules/@img/**","node_modules/sharp/**"]},"turbopack":{"root":"/home/runner/work/failproofai/failproofai"},"repoRoot":"/home/runner/work/failproofai/failproofai","distDirRoot":".next"}
12
+ const nextConfig = {"env":{"NEXT_PUBLIC_APP_VERSION":"1.0.6-beta.1"},"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"instrumentationClientInject":[],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":true,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/failproofai/failproofai","enablePrerenderSourceMaps":true,"cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"appNewScrollHandler":true,"coldCacheBadge":false,"devValidationWorker":true,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"dynamicOnHover":false,"useOffline":false,"varyParams":true,"optimisticRouting":true,"instrumentationClientRouterTransitionEvents":false,"prefetchInlining":{"maxSize":2048,"maxBundleSize":10240},"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptOperationCache":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"devMemoryThresholdRestart":true,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"requestInsights":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"useTypeScriptCli":true,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":true,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"serverComponentsHmrCancellation":false,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"proxyClientMaxBodySize":10485760,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":true,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","turbopackMemoryEvictionMode":"auto","optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"useCacheTimeout":54,"instantInsights":{"validationLevel":"warning"},"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","outputFileTracingExcludes":{"*":["node_modules/@img/**","node_modules/sharp/**"]},"turbopack":{"root":"/home/runner/work/failproofai/failproofai"},"repoRoot":"/home/runner/work/failproofai/failproofai","distDirRoot":".next"}
13
13
 
14
14
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
15
15