failproofai 0.0.11 → 0.0.12

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 (124) hide show
  1. package/.next/standalone/.codex/hooks.json +6 -7
  2. package/.next/standalone/.next/BUILD_ID +1 -1
  3. package/.next/standalone/.next/build-manifest.json +5 -5
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/required-server-files.json +1 -1
  6. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
  7. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  8. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  12. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  13. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  14. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  15. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  16. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
  18. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  19. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.rsc +14 -14
  23. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
  24. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  25. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +9 -9
  26. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  27. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  28. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  29. package/.next/standalone/.next/server/app/audit/page/build-manifest.json +2 -2
  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 +2 -2
  36. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +14 -14
  37. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  38. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +9 -9
  39. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  40. package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
  41. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  42. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/policies/page/build-manifest.json +2 -2
  45. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
  46. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +2 -2
  49. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  50. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +2 -2
  53. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  54. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  55. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/projects/page/build-manifest.json +2 -2
  58. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  59. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0dwpg-h._.js +1 -1
  62. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0lnenda._.js +1 -1
  63. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13i_sva._.js +1 -1
  64. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1_mqemn._.js +1 -1
  65. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js +1 -1
  66. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_09z9-p7._.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]__0808sha._.js +2 -2
  69. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0e4-6d8._.js +2 -2
  70. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ehe24g._.js +2 -2
  71. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g253ve._.js +2 -2
  72. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0kjb_s4._.js → [root-of-the-server]__0ntd0fz._.js} +2 -2
  73. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__00uwqi6._.js → [root-of-the-server]__0vh88nr._.js} +2 -2
  74. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0vxf0_g._.js +2 -2
  75. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12mcauo._.js +2 -2
  76. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1mt35_w._.js +7 -7
  77. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1pcxxwg._.js +2 -2
  78. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1uvfwgr._.js +2 -2
  79. package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47._.js +1 -1
  80. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x._.js +1 -1
  81. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpc._.js +1 -1
  82. package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_0ihmbv4.js → node_modules_html-to-image_es_index_0bppeyf.js} +1 -1
  83. package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuzn._.js +1 -1
  84. package/.next/standalone/.next/server/middleware-build-manifest.js +5 -5
  85. package/.next/standalone/.next/server/pages/404.html +1 -1
  86. package/.next/standalone/.next/server/pages/500.html +1 -1
  87. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/server-reference-manifest.json +10 -10
  89. package/.next/standalone/.next/static/chunks/{3eik_d9qrvoft.js → 00_ypuitb29l0.js} +1 -1
  90. package/.next/standalone/.next/static/chunks/09l7dfsd4xapi.js +1 -0
  91. package/.next/standalone/.next/static/chunks/{15csyj1_rf0-w.js → 0qw65r3wfs089.js} +1 -1
  92. package/.next/standalone/.next/static/chunks/{02fywjt0by40a.js → 0ys-mwok1j9kp.js} +1 -1
  93. package/.next/standalone/.next/static/chunks/1ua5armwfph8o.js +31 -0
  94. package/.next/standalone/.next/static/chunks/{2y-jmvrjxz60x.js → 2ey-m4-p9z7e0.js} +1 -1
  95. package/.next/standalone/.next/static/chunks/{3v61675vr6jav.js → 3-veva26100-4.js} +1 -1
  96. package/.next/standalone/.next/static/chunks/{0xdx2ehtbdoeg.js → 36yb_gsfgfga4.js} +1 -1
  97. package/.next/standalone/.next/static/chunks/{2n_s8v1ae38_a.js → 3jk5y-qgnnti_.js} +1 -1
  98. package/.next/standalone/.next/static/chunks/{1-a5rvq67k7ed.js → 3pb3m-89k7ts2.js} +1 -1
  99. package/.next/standalone/.next/static/chunks/{turbopack-3lrm4f20fz89b.js → turbopack-0vavqo2d-tlt3.js} +1 -1
  100. package/.next/standalone/node_modules/@next/env/package.json +7 -8
  101. package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
  102. package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +1 -1
  103. package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
  104. package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
  105. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
  106. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  107. package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  108. package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
  109. package/.next/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  110. package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  111. package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  112. package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  113. package/.next/standalone/node_modules/next/package.json +10 -252
  114. package/.next/standalone/package.json +3 -3
  115. package/.next/standalone/server.js +1 -1
  116. package/dist/cli.mjs +20 -11
  117. package/package.json +3 -3
  118. package/src/hooks/integrations.ts +22 -9
  119. package/src/hooks/types.ts +2 -2
  120. package/.next/standalone/.next/static/chunks/24cv31x607n7k.js +0 -1
  121. package/.next/standalone/.next/static/chunks/2h0dkzyy0vocp.js +0 -31
  122. /package/.next/standalone/.next/static/{P_MIRSeoE296wkbE-Icin → PdZTBvCBXzDRLe-duL9yC}/_buildManifest.js +0 -0
  123. /package/.next/standalone/.next/static/{P_MIRSeoE296wkbE-Icin → PdZTBvCBXzDRLe-duL9yC}/_clientMiddlewareManifest.js +0 -0
  124. /package/.next/standalone/.next/static/{P_MIRSeoE296wkbE-Icin → PdZTBvCBXzDRLe-duL9yC}/_ssgManifest.js +0 -0
@@ -234,7 +234,7 @@ class HotReloaderWebpack {
234
234
  this.previewProps = previewProps;
235
235
  this.rewrites = rewrites;
236
236
  this.hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
237
- version: "16.2.9"
237
+ version: "16.2.10"
238
238
  });
239
239
  // Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
240
240
  // of the current `next dev` invocation.
@@ -85,7 +85,7 @@ function logStartInfo({ networkUrl, appUrl, envInfo, logBundler }) {
85
85
  if (parts.length > 0) {
86
86
  versionSuffix = ` (${parts.join(', ')})`;
87
87
  }
88
- _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"16.2.9"}`))}${versionSuffix}`);
88
+ _log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"16.2.10"}`))}${versionSuffix}`);
89
89
  if (appUrl) {
90
90
  _log.bootstrap(`- Local: ${appUrl}`);
91
91
  }
@@ -178,7 +178,7 @@ async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup, server
178
178
  async function startServer(serverOptions) {
179
179
  const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate, serverFastRefresh } = serverOptions;
180
180
  let { port } = serverOptions;
181
- process.title = `next-server (v${"16.2.9"})`;
181
+ process.title = `next-server (v${"16.2.10"})`;
182
182
  let handlersReady = ()=>{};
183
183
  let handlersError = ()=>{};
184
184
  let handlersPromise = new Promise((resolve, reject)=>{
@@ -21,7 +21,7 @@ _export(exports, {
21
21
  }
22
22
  });
23
23
  function isStableBuild() {
24
- return !"16.2.9"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
24
+ return !"16.2.10"?.includes('canary') && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV;
25
25
  }
26
26
  class CanaryOnlyConfigError extends Error {
27
27
  constructor(arg){
@@ -81,7 +81,7 @@ function getAnonymousMeta() {
81
81
  isWsl: _iswsl.default,
82
82
  isCI: _ciinfo.isCI,
83
83
  ciName: _ciinfo.isCI && _ciinfo.name || null,
84
- nextVersion: "16.2.9"
84
+ nextVersion: "16.2.10"
85
85
  };
86
86
  return traits;
87
87
  }
@@ -38,7 +38,7 @@ async function eventSwcLoadFailure(event) {
38
38
  telemetry.record({
39
39
  eventName: EVENT_PLUGIN_PRESENT,
40
40
  payload: {
41
- nextVersion: "16.2.9",
41
+ nextVersion: "16.2.10",
42
42
  glibcVersion,
43
43
  installedSwcPackages,
44
44
  arch: process.arch,
@@ -12,12 +12,12 @@ const EVENT_VERSION = 'NEXT_CLI_SESSION_STARTED';
12
12
  function eventCliSession(nextConfig, event) {
13
13
  var _nextConfig_experimental_staleTimes, _nextConfig_experimental_staleTimes1, _nextConfig_reactCompiler, _nextConfig_reactCompiler1;
14
14
  // This should be an invariant, if it fails our build tooling is broken.
15
- if (typeof "16.2.9" !== 'string') {
15
+ if (typeof "16.2.10" !== 'string') {
16
16
  return [];
17
17
  }
18
18
  const { images, i18n } = nextConfig || {};
19
19
  const payload = {
20
- nextVersion: "16.2.9",
20
+ nextVersion: "16.2.10",
21
21
  nodeVersion: process.version,
22
22
  cliCommand: event.cliCommand,
23
23
  isSrcDir: event.isSrcDir,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next",
3
- "version": "16.2.9",
3
+ "version": "16.2.10",
4
4
  "description": "The React Framework",
5
5
  "main": "./dist/server/next.js",
6
6
  "license": "MIT",
@@ -77,27 +77,8 @@
77
77
  "bin": {
78
78
  "next": "./dist/bin/next"
79
79
  },
80
- "scripts": {
81
- "dev": "cross-env NEXT_SERVER_NO_MANGLE=1 taskr",
82
- "build": "taskr release",
83
- "prepublishOnly": "cd ../../ && turbo run build",
84
- "types": "tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --stripInternal --declarationDir dist",
85
- "typescript": "tsec --noEmit",
86
- "ncc-compiled": "taskr ncc",
87
- "storybook": "BROWSER=none storybook dev -p 6006",
88
- "build-storybook": "storybook build",
89
- "test-storybook": "test-storybook"
90
- },
91
- "taskr": {
92
- "requires": [
93
- "./taskfile-webpack.js",
94
- "./taskfile-ncc.js",
95
- "./taskfile-swc.js",
96
- "./taskfile-watch.js"
97
- ]
98
- },
99
80
  "dependencies": {
100
- "@next/env": "16.2.9",
81
+ "@next/env": "16.2.10",
101
82
  "@swc/helpers": "0.5.15",
102
83
  "baseline-browser-mapping": "^2.9.19",
103
84
  "caniuse-lite": "^1.0.30001579",
@@ -128,237 +109,14 @@
128
109
  },
129
110
  "optionalDependencies": {
130
111
  "sharp": "^0.34.5",
131
- "@next/swc-darwin-arm64": "16.2.9",
132
- "@next/swc-darwin-x64": "16.2.9",
133
- "@next/swc-linux-arm64-gnu": "16.2.9",
134
- "@next/swc-linux-arm64-musl": "16.2.9",
135
- "@next/swc-linux-x64-gnu": "16.2.9",
136
- "@next/swc-linux-x64-musl": "16.2.9",
137
- "@next/swc-win32-arm64-msvc": "16.2.9",
138
- "@next/swc-win32-x64-msvc": "16.2.9"
139
- },
140
- "devDependencies": {
141
- "@babel/core": "7.26.10",
142
- "@babel/eslint-parser": "7.24.6",
143
- "@babel/generator": "7.27.0",
144
- "@babel/plugin-syntax-bigint": "7.8.3",
145
- "@babel/plugin-syntax-dynamic-import": "7.8.3",
146
- "@babel/plugin-syntax-import-attributes": "7.26.0",
147
- "@babel/plugin-syntax-jsx": "7.25.9",
148
- "@babel/plugin-syntax-typescript": "7.25.4",
149
- "@babel/plugin-transform-class-properties": "7.25.9",
150
- "@babel/plugin-transform-export-namespace-from": "7.25.9",
151
- "@babel/plugin-transform-modules-commonjs": "7.26.3",
152
- "@babel/plugin-transform-numeric-separator": "7.25.9",
153
- "@babel/plugin-transform-object-rest-spread": "7.25.9",
154
- "@babel/plugin-transform-runtime": "7.26.10",
155
- "@babel/preset-env": "7.26.9",
156
- "@babel/preset-react": "7.26.3",
157
- "@babel/preset-typescript": "7.27.0",
158
- "@babel/runtime": "7.27.0",
159
- "@babel/traverse": "7.27.0",
160
- "@babel/types": "7.27.0",
161
- "@base-ui-components/react": "1.0.0-beta.2",
162
- "@capsizecss/metrics": "3.4.0",
163
- "@edge-runtime/cookies": "6.0.0",
164
- "@edge-runtime/ponyfill": "4.0.0",
165
- "@edge-runtime/primitives": "6.0.0",
166
- "@hapi/accept": "5.0.2",
167
- "@jest/transform": "29.5.0",
168
- "@jest/types": "29.5.0",
169
- "@modelcontextprotocol/sdk": "1.18.1",
170
- "@mswjs/interceptors": "0.23.0",
171
- "@napi-rs/triples": "1.2.0",
172
- "@next/font": "16.2.9",
173
- "@next/polyfill-module": "16.2.9",
174
- "@next/polyfill-nomodule": "16.2.9",
175
- "@next/react-refresh-utils": "16.2.9",
176
- "@next/swc": "16.2.9",
177
- "@opentelemetry/api": "1.6.0",
178
- "@playwright/test": "1.58.2",
179
- "@rspack/core": "1.6.7",
180
- "@storybook/addon-a11y": "8.6.0",
181
- "@storybook/addon-essentials": "8.6.0",
182
- "@storybook/addon-interactions": "8.6.0",
183
- "@storybook/addon-webpack5-compiler-swc": "3.0.0",
184
- "@storybook/blocks": "8.6.0",
185
- "@storybook/react": "8.6.0",
186
- "@storybook/react-webpack5": "8.6.0",
187
- "@storybook/test": "8.6.0",
188
- "@storybook/test-runner": "0.21.0",
189
- "@swc/core": "1.11.24",
190
- "@swc/types": "0.1.7",
191
- "@taskr/clear": "1.1.0",
192
- "@taskr/esnext": "1.1.0",
193
- "@types/babel__code-frame": "7.0.6",
194
- "@types/babel__core": "7.20.5",
195
- "@types/babel__generator": "7.27.0",
196
- "@types/babel__template": "7.4.4",
197
- "@types/babel__traverse": "7.20.7",
198
- "@types/bytes": "3.1.1",
199
- "@types/ci-info": "2.0.0",
200
- "@types/compression": "0.0.36",
201
- "@types/content-disposition": "0.5.4",
202
- "@types/content-type": "1.1.3",
203
- "@types/cookie": "0.3.3",
204
- "@types/cross-spawn": "6.0.0",
205
- "@types/debug": "4.1.5",
206
- "@types/express-serve-static-core": "4.17.33",
207
- "@types/fresh": "0.5.0",
208
- "@types/glob": "7.1.1",
209
- "@types/jsonwebtoken": "9.0.0",
210
- "@types/lodash": "4.14.198",
211
- "@types/lodash.curry": "4.1.6",
212
- "@types/path-to-regexp": "1.7.0",
213
- "@types/picomatch": "2.3.3",
214
- "@types/platform": "1.3.4",
215
- "@types/react": "19.0.8",
216
- "@types/react-dom": "19.0.3",
217
- "@types/react-is": "18.2.4",
218
- "@types/semver": "7.3.1",
219
- "@types/send": "0.14.4",
220
- "@types/serve-handler": "6.1.4",
221
- "@types/shell-quote": "1.7.1",
222
- "@types/text-table": "0.2.1",
223
- "@types/ua-parser-js": "0.7.36",
224
- "@types/webpack-sources1": "npm:@types/webpack-sources@0.1.5",
225
- "@types/ws": "8.2.0",
226
- "@vercel/ncc": "0.34.0",
227
- "@vercel/nft": "0.27.1",
228
- "@vercel/routing-utils": "5.2.0",
229
- "@vercel/turbopack-ecmascript-runtime": "*",
230
- "acorn": "8.14.0",
231
- "anser": "1.4.9",
232
- "arg": "4.1.0",
233
- "assert": "2.0.0",
234
- "async-retry": "1.2.3",
235
- "async-sema": "3.0.0",
236
- "axe-playwright": "2.0.3",
237
- "babel-loader": "10.0.0",
238
- "babel-plugin-react-compiler": "0.0.0-experimental-1371fcb-20260227",
239
- "babel-plugin-transform-define": "2.0.0",
240
- "babel-plugin-transform-react-remove-prop-types": "0.4.24",
241
- "browserify-zlib": "0.2.0",
242
- "browserslist": "4.28.1",
243
- "buffer": "5.6.0",
244
- "busboy": "1.6.0",
245
- "bytes": "3.1.1",
246
- "ci-info": "watson/ci-info#f43f6a1cefff47fb361c88cf4b943fdbcaafe540",
247
- "cli-select": "1.1.2",
248
- "client-only": "0.0.1",
249
- "commander": "12.1.0",
250
- "comment-json": "3.0.3",
251
- "compression": "1.7.4",
252
- "conf": "5.0.0",
253
- "constants-browserify": "1.0.0",
254
- "content-disposition": "0.5.3",
255
- "content-type": "1.0.4",
256
- "cookie": "0.4.1",
257
- "cross-env": "6.0.3",
258
- "cross-spawn": "7.0.3",
259
- "crypto-browserify": "3.12.0",
260
- "css-loader": "7.1.2",
261
- "css.escape": "1.5.1",
262
- "cssnano-preset-default": "7.0.6",
263
- "data-uri-to-buffer": "3.0.1",
264
- "debug": "4.1.1",
265
- "devalue": "2.0.1",
266
- "domain-browser": "4.19.0",
267
- "edge-runtime": "4.0.1",
268
- "events": "3.3.0",
269
- "find-up": "4.1.0",
270
- "fresh": "0.5.2",
271
- "glob": "7.1.7",
272
- "gzip-size": "5.1.1",
273
- "http-proxy": "1.18.1",
274
- "http-proxy-agent": "5.0.0",
275
- "https-browserify": "1.0.0",
276
- "https-proxy-agent": "5.0.1",
277
- "icss-utils": "5.1.0",
278
- "ignore-loader": "0.1.2",
279
- "image-size": "1.2.1",
280
- "ipaddr.js": "2.2.0",
281
- "is-docker": "2.0.0",
282
- "is-wsl": "2.2.0",
283
- "jest-worker": "27.5.1",
284
- "json5": "2.2.3",
285
- "jsonwebtoken": "9.0.0",
286
- "loader-runner": "4.3.0",
287
- "loader-utils2": "npm:loader-utils@2.0.4",
288
- "loader-utils3": "npm:loader-utils@3.1.3",
289
- "lodash.curry": "4.1.1",
290
- "mini-css-extract-plugin": "2.4.4",
291
- "msw": "2.3.0",
292
- "nanoid": "3.1.32",
293
- "native-url": "0.3.4",
294
- "neo-async": "2.6.1",
295
- "node-html-parser": "5.3.3",
296
- "ora": "4.0.4",
297
- "os-browserify": "0.3.0",
298
- "p-limit": "3.1.0",
299
- "p-queue": "6.6.2",
300
- "path-browserify": "1.0.1",
301
- "path-to-regexp": "6.3.0",
302
- "picomatch": "4.0.1",
303
- "postcss-flexbugs-fixes": "5.0.2",
304
- "postcss-modules-extract-imports": "3.0.0",
305
- "postcss-modules-local-by-default": "4.2.0",
306
- "postcss-modules-scope": "3.0.0",
307
- "postcss-modules-values": "4.0.0",
308
- "postcss-preset-env": "7.4.3",
309
- "postcss-safe-parser": "6.0.0",
310
- "postcss-scss": "4.0.3",
311
- "postcss-value-parser": "4.2.0",
312
- "process": "0.11.10",
313
- "punycode": "2.1.1",
314
- "querystring-es3": "0.2.1",
315
- "raw-body": "2.4.1",
316
- "react-refresh": "0.12.0",
317
- "recast": "0.23.11",
318
- "regenerator-runtime": "0.13.4",
319
- "safe-stable-stringify": "2.5.0",
320
- "sass-loader": "16.0.5",
321
- "schema-utils2": "npm:schema-utils@2.7.1",
322
- "schema-utils3": "npm:schema-utils@3.0.0",
323
- "semver": "7.3.2",
324
- "send": "0.18.0",
325
- "serve-handler": "6.1.6",
326
- "server-only": "0.0.1",
327
- "setimmediate": "1.0.5",
328
- "shell-quote": "1.7.3",
329
- "source-map": "0.6.1",
330
- "source-map-loader": "5.0.0",
331
- "source-map08": "npm:source-map@0.8.0-beta.0",
332
- "stacktrace-parser": "0.1.10",
333
- "storybook": "8.6.0",
334
- "stream-browserify": "3.0.0",
335
- "stream-http": "3.1.1",
336
- "strict-event-emitter": "0.5.0",
337
- "string-hash": "1.1.3",
338
- "string_decoder": "1.3.0",
339
- "strip-ansi": "6.0.0",
340
- "style-loader": "4.0.0",
341
- "superstruct": "1.0.3",
342
- "tar": "7.5.11",
343
- "taskr": "1.1.0",
344
- "terser": "5.27.0",
345
- "terser-webpack-plugin": "5.3.9",
346
- "text-table": "0.2.0",
347
- "timers-browserify": "2.0.12",
348
- "tty-browserify": "0.0.1",
349
- "typescript": "5.9.2",
350
- "ua-parser-js": "1.0.35",
351
- "unistore": "3.4.1",
352
- "util": "0.12.4",
353
- "vm-browserify": "1.1.2",
354
- "watchpack": "2.4.0",
355
- "web-vitals": "4.2.1",
356
- "webpack": "5.98.0",
357
- "webpack-sources1": "npm:webpack-sources@1.4.3",
358
- "webpack-sources3": "npm:webpack-sources@3.2.3",
359
- "ws": "8.2.3",
360
- "zod": "3.25.76",
361
- "zod-validation-error": "3.4.0"
112
+ "@next/swc-darwin-arm64": "16.2.10",
113
+ "@next/swc-darwin-x64": "16.2.10",
114
+ "@next/swc-linux-arm64-gnu": "16.2.10",
115
+ "@next/swc-linux-arm64-musl": "16.2.10",
116
+ "@next/swc-linux-x64-gnu": "16.2.10",
117
+ "@next/swc-linux-x64-musl": "16.2.10",
118
+ "@next/swc-win32-arm64-msvc": "16.2.10",
119
+ "@next/swc-win32-x64-msvc": "16.2.10"
362
120
  },
363
121
  "keywords": [
364
122
  "react",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "failproofai",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "description": "The easiest way to manage policies that keep your AI agents reliable, on-task, and running autonomously — for Claude Code & the Agents SDK",
5
5
  "bin": {
6
6
  "failproofai": "./dist/cli.mjs"
@@ -72,14 +72,14 @@
72
72
  "access": "public"
73
73
  },
74
74
  "devDependencies": {
75
- "@anthropic-ai/sdk": "^0.105.0",
75
+ "@anthropic-ai/sdk": "^0.110.0",
76
76
  "@mdx-js/mdx": "^3.1.1",
77
77
  "@tailwindcss/postcss": "^4.3.1",
78
78
  "@tanstack/react-virtual": "^3.14.3",
79
79
  "@testing-library/jest-dom": "^6.9.1",
80
80
  "@testing-library/react": "^16.3.2",
81
81
  "@testing-library/user-event": "^14.6.1",
82
- "@types/node": "26.0.0",
82
+ "@types/node": "26.1.0",
83
83
  "@types/react": "19.2.17",
84
84
  "@types/react-dom": "^19.2.3",
85
85
  "@vitejs/plugin-react": "^6.0.1",
@@ -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":"0.0.11"},"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"],"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","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":false,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"partialFallbacks":false,"dynamicOnHover":false,"varyParams":false,"prefetchInlining":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"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":false,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","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"],"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"},"distDirRoot":".next"}
12
+ const nextConfig = {"env":{"NEXT_PUBLIC_APP_VERSION":"0.0.12"},"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"],"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","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":false,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"partialFallbacks":false,"dynamicOnHover":false,"varyParams":false,"prefetchInlining":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"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":false,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","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"],"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"},"distDirRoot":".next"}
13
13
 
14
14
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
15
15
 
package/dist/cli.mjs CHANGED
@@ -16,7 +16,7 @@ var __export = (target, all) => {
16
16
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
17
17
 
18
18
  // package.json
19
- var version2 = "0.0.11";
19
+ var version2 = "0.0.12";
20
20
  var init_package = () => {};
21
21
 
22
22
  // src/posthog-key.ts
@@ -6437,6 +6437,13 @@ function isMarkedHook(hook) {
6437
6437
  const cmd = typeof h.command === "string" ? h.command : "";
6438
6438
  return cmd.includes("failproofai") && cmd.includes("--hook");
6439
6439
  }
6440
+ function stripLegacyVersion(settings) {
6441
+ if ("version" in settings) {
6442
+ delete settings.version;
6443
+ return true;
6444
+ }
6445
+ return false;
6446
+ }
6440
6447
  function binaryExists(name) {
6441
6448
  try {
6442
6449
  const cmd = process.platform === "win32" ? `where ${name}` : `which ${name}`;
@@ -6831,10 +6838,7 @@ var init_integrations = __esm(() => {
6831
6838
  }
6832
6839
  },
6833
6840
  readSettings(settingsPath) {
6834
- const raw = readJsonFile(settingsPath);
6835
- if (raw.version === undefined)
6836
- raw.version = 1;
6837
- return raw;
6841
+ return readJsonFile(settingsPath);
6838
6842
  },
6839
6843
  writeSettings(settingsPath, settings) {
6840
6844
  writeJsonFile(settingsPath, settings);
@@ -6844,15 +6848,14 @@ var init_integrations = __esm(() => {
6844
6848
  return {
6845
6849
  type: "command",
6846
6850
  command,
6847
- timeout: 60000,
6851
+ timeout: 60,
6848
6852
  [FAILPROOFAI_HOOK_MARKER]: true
6849
6853
  };
6850
6854
  },
6851
6855
  isFailproofaiHook: isMarkedHook,
6852
6856
  writeHookEntries(settings, binaryPath, scope) {
6853
6857
  const s = settings;
6854
- if (s.version === undefined)
6855
- s.version = 1;
6858
+ stripLegacyVersion(s);
6856
6859
  if (!s.hooks)
6857
6860
  s.hooks = {};
6858
6861
  for (const eventType of CODEX_HOOK_EVENT_TYPES) {
@@ -6878,8 +6881,12 @@ var init_integrations = __esm(() => {
6878
6881
  },
6879
6882
  removeHooksFromFile(settingsPath) {
6880
6883
  const settings = this.readSettings(settingsPath);
6881
- if (!settings.hooks)
6884
+ const hadVersion = stripLegacyVersion(settings);
6885
+ if (!settings.hooks) {
6886
+ if (hadVersion)
6887
+ this.writeSettings(settingsPath, settings);
6882
6888
  return 0;
6889
+ }
6883
6890
  let removed = 0;
6884
6891
  for (const eventType of Object.keys(settings.hooks)) {
6885
6892
  const matchers = settings.hooks[eventType];
@@ -6900,7 +6907,9 @@ var init_integrations = __esm(() => {
6900
6907
  }
6901
6908
  if (Object.keys(settings.hooks).length === 0)
6902
6909
  delete settings.hooks;
6903
- this.writeSettings(settingsPath, settings);
6910
+ if (removed > 0 || hadVersion) {
6911
+ this.writeSettings(settingsPath, settings);
6912
+ }
6904
6913
  return removed;
6905
6914
  },
6906
6915
  hooksInstalledInSettings(scope, cwd) {
@@ -11836,7 +11845,7 @@ import { realpathSync as realpathSync4 } from "fs";
11836
11845
  import { dirname as dirname9, resolve as resolve17 } from "path";
11837
11846
  import { fileURLToPath as fileURLToPath4 } from "url";
11838
11847
  // package.json
11839
- var version = "0.0.11";
11848
+ var version = "0.0.12";
11840
11849
 
11841
11850
  // bin/failproofai.mjs
11842
11851
  if (!process.env.FAILPROOFAI_PACKAGE_ROOT) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "failproofai",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "description": "The easiest way to manage policies that keep your AI agents reliable, on-task, and running autonomously — for Claude Code & the Agents SDK",
5
5
  "bin": {
6
6
  "failproofai": "./dist/cli.mjs"
@@ -72,14 +72,14 @@
72
72
  "access": "public"
73
73
  },
74
74
  "devDependencies": {
75
- "@anthropic-ai/sdk": "^0.105.0",
75
+ "@anthropic-ai/sdk": "^0.110.0",
76
76
  "@mdx-js/mdx": "^3.1.1",
77
77
  "@tailwindcss/postcss": "^4.3.1",
78
78
  "@tanstack/react-virtual": "^3.14.3",
79
79
  "@testing-library/jest-dom": "^6.9.1",
80
80
  "@testing-library/react": "^16.3.2",
81
81
  "@testing-library/user-event": "^14.6.1",
82
- "@types/node": "26.0.0",
82
+ "@types/node": "26.1.0",
83
83
  "@types/react": "19.2.17",
84
84
  "@types/react-dom": "^19.2.3",
85
85
  "@vitejs/plugin-react": "^6.0.1",
@@ -59,6 +59,14 @@ function isMarkedHook(hook: unknown): boolean {
59
59
  return cmd.includes("failproofai") && cmd.includes("--hook");
60
60
  }
61
61
 
62
+ function stripLegacyVersion(settings: Record<string, unknown>): boolean {
63
+ if ("version" in settings) {
64
+ delete settings.version;
65
+ return true;
66
+ }
67
+ return false;
68
+ }
69
+
62
70
  function binaryExists(name: string): boolean {
63
71
  try {
64
72
  const cmd = process.platform === "win32" ? `where ${name}` : `which ${name}`;
@@ -232,10 +240,9 @@ export const claudeCode: Integration = {
232
240
  // • Settings paths: ~/.codex/hooks.json (user) and <cwd>/.codex/hooks.json (project)
233
241
  // • Stdin event names arrive snake_case (pre_tool_use); we canonicalize to PascalCase before policy lookup
234
242
  // • No "local" scope
235
- // • Settings file carries a top-level "version": 1 marker
243
+ // • Settings file does NOT carry a top-level "version" marker (Codex strictly expects only `hooks`)
236
244
 
237
245
  interface CodexSettingsFile {
238
- version?: number;
239
246
  hooks?: Record<string, ClaudeHookMatcher[]>;
240
247
  [key: string]: unknown;
241
248
  }
@@ -261,9 +268,7 @@ export const codex: Integration = {
261
268
  },
262
269
 
263
270
  readSettings(settingsPath) {
264
- const raw = readJsonFile(settingsPath);
265
- if (raw.version === undefined) raw.version = 1;
266
- return raw;
271
+ return readJsonFile(settingsPath);
267
272
  },
268
273
 
269
274
  writeSettings(settingsPath, settings) {
@@ -280,8 +285,10 @@ export const codex: Integration = {
280
285
  : `"${binaryPath}" --hook ${eventType} --cli codex`;
281
286
  return {
282
287
  type: "command",
288
+ // Codex reads `timeout` in SECONDS (its `timeout_sec` field, default 600) —
289
+ // NOT milliseconds like Claude/Cursor/Gemini. 60 = 60s, not 60000ms (~16.7h).
283
290
  command,
284
- timeout: 60_000,
291
+ timeout: 60,
285
292
  [FAILPROOFAI_HOOK_MARKER]: true,
286
293
  };
287
294
  },
@@ -290,7 +297,7 @@ export const codex: Integration = {
290
297
 
291
298
  writeHookEntries(settings, binaryPath, scope) {
292
299
  const s = settings as CodexSettingsFile;
293
- if (s.version === undefined) s.version = 1;
300
+ stripLegacyVersion(s as Record<string, unknown>);
294
301
  if (!s.hooks) s.hooks = {};
295
302
 
296
303
  for (const eventType of CODEX_HOOK_EVENT_TYPES) {
@@ -315,7 +322,11 @@ export const codex: Integration = {
315
322
 
316
323
  removeHooksFromFile(settingsPath) {
317
324
  const settings = this.readSettings(settingsPath) as CodexSettingsFile;
318
- if (!settings.hooks) return 0;
325
+ const hadVersion = stripLegacyVersion(settings as Record<string, unknown>);
326
+ if (!settings.hooks) {
327
+ if (hadVersion) this.writeSettings(settingsPath, settings as Record<string, unknown>);
328
+ return 0;
329
+ }
319
330
 
320
331
  let removed = 0;
321
332
  for (const eventType of Object.keys(settings.hooks)) {
@@ -333,7 +344,9 @@ export const codex: Integration = {
333
344
  }
334
345
  if (Object.keys(settings.hooks).length === 0) delete settings.hooks;
335
346
 
336
- this.writeSettings(settingsPath, settings as Record<string, unknown>);
347
+ if (removed > 0 || hadVersion) {
348
+ this.writeSettings(settingsPath, settings as Record<string, unknown>);
349
+ }
337
350
  return removed;
338
351
  },
339
352
 
@@ -79,7 +79,7 @@ export const CODEX_TOOL_MAP: Record<string, string> = {
79
79
  // Settings paths:
80
80
  // user → ~/.copilot/hooks/failproofai.json
81
81
  // project → <cwd>/.github/hooks/failproofai.json (also where the cloud agent reads)
82
- // Settings file carries `version: 1` like Codex's hooks.json.
82
+ // Settings file carries `version: 1`.
83
83
 
84
84
  export const COPILOT_HOOK_SCOPES = ["user", "project"] as const;
85
85
  export type CopilotHookScope = (typeof COPILOT_HOOK_SCOPES)[number];
@@ -159,7 +159,7 @@ export const COPILOT_TOOL_MAP: Record<string, string> = {
159
159
  // Settings paths:
160
160
  // user → ~/.cursor/hooks.json
161
161
  // project → <cwd>/.cursor/hooks.json
162
- // Settings file carries `version: 1` like Codex/Copilot.
162
+ // Settings file carries `version: 1` like Copilot.
163
163
 
164
164
  export const CURSOR_HOOK_SCOPES = ["user", "project"] as const;
165
165
  export type CursorHookScope = (typeof CURSOR_HOOK_SCOPES)[number];