failproofai 1.0.10 → 1.0.11-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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +6 -6
- package/.next/standalone/.next/prerender-manifest.json +4 -4
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js +4 -4
- 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.meta +8 -0
- 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/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +4 -4
- 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.meta +8 -0
- 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 +4 -4
- 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 +4 -4
- 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 +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 +2 -2
- 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 +4 -4
- 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 +3 -3
- 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 +3 -3
- 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 +1 -1
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/audit/page.js +4 -4
- 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.meta +8 -0
- 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/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js +4 -4
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
- package/.next/standalone/.next/server/app/policies/page.js +8 -8
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page.js +5 -5
- package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +5 -5
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/projects/page.js +5 -5
- 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/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/settings/page.js +9 -9
- 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/{[externals]__0qxhecv._.js → [externals]__0d7i9ea._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[externals]__0sg9-3p._.js → [externals]__0hjaw70._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[externals]__1_9ze9b._.js +3 -0
- package/.next/standalone/.next/server/chunks/[externals]__1oenfmn._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08dchfu._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ga9hs7._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l3yhx4._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0moxohc._.js +22 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o07qi9._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0z2ll-a._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1adacul._.js +11 -11
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1autwno._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1v25n-6._.js +3 -0
- package/.next/standalone/.next/server/chunks/_09dz7xv._.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/_1ek68ln._.js +2 -2
- package/.next/standalone/.next/server/chunks/_1fz8m31._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1jrv3hg._.js +3 -0
- package/.next/standalone/.next/server/chunks/_1nx8fim._.js +3 -0
- package/.next/standalone/.next/server/chunks/_1ogwigf._.js +1 -1
- package/.next/standalone/.next/server/chunks/{_1q5i8mb._.js → _1q27azx._.js} +2 -2
- package/.next/standalone/.next/server/chunks/lib_telemetry_ts_0dctyyw._.js +1 -1
- package/.next/standalone/.next/server/chunks/{node_modules_posthog-node_dist_entrypoints_index_node_mjs_0el6rg8._.js → node_modules_posthog-node_dist_entrypoints_index_node_mjs_0ol5pa3._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{node_modules_posthog-node_dist_entrypoints_index_node_mjs_04op_ou._.js → node_modules_posthog-node_dist_entrypoints_index_node_mjs_1rqmk27._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{node_modules_posthog-node_dist_entrypoints_index_node_mjs_0dr20uz._.js → node_modules_posthog-node_dist_entrypoints_index_node_mjs_1w7tiq4._.js} +2 -2
- 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]__0oqrl71._.js → [root-of-the-server]__042u-jn._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__04usis8._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1-bm5zf._.js → [root-of-the-server]__0502lat._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0_gn5iz._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0f765xr._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__01bmjsj._.js → [root-of-the-server]__0h38gzz._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0hoaz1g._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1ouobn4._.js → [root-of-the-server]__0mxmwtx._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__19evfi8._.js → [root-of-the-server]__0uescqv._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__13d-wb6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1484zv2._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1mf3zp6._.js → [root-of-the-server]__19dutr7._.js} +4 -4
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1u6sn69._.js → [root-of-the-server]__1ab4ifb._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1fbrk56._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1pprgri._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1um4yxn._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1wb4yt2._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1y3n3cn._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/_08x1r5t._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0bqoto4._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0yq5_3a._.js → _1ffxwxz._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1gb0ifp._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_042cgl1._.js → _1o95rf0._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_1zopuov._.js → _1thr5rf._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_16pa9ht._.js → _1v1o2ya._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo.js +12 -14
- package/.next/standalone/.next/server/chunks/ssr/app_actions_get-scheduled-audit_ts_0ei9sni._.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_02tf1h4._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_1hl81y4._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_0nkkbfv._.js +6 -0
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_fp-config_ts_04t589g._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_fp-home_ts_0je3xkv._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +6 -6
- package/.next/standalone/.next/server/middleware.js +1 -1
- 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 +23 -23
- package/.next/standalone/.next/static/chunks/08tmc_7n-rba1.js +1 -0
- package/.next/standalone/.next/static/chunks/{3mjfvng11xnoo.js → 09tlrmucn6oq3.js} +1 -1
- package/.next/standalone/.next/static/chunks/{078dofaxvjgpd.js → 0i69k917myh7b.js} +1 -1
- package/.next/standalone/.next/static/chunks/{03h3b-uomi7_d.js → 0u_nhsujkactp.js} +1 -1
- package/.next/standalone/.next/static/chunks/{2j92xul6y24_v.js → 0zp51hzx62i-u.js} +1 -1
- package/.next/standalone/.next/static/chunks/{3u1s8dsqiean5.js → 1fz7q0gtnmeod.js} +1 -1
- package/.next/standalone/.next/static/chunks/{3ob2161ap37ul.js → 1j75le8wln-26.js} +1 -1
- package/.next/standalone/.next/static/chunks/{2kj826h1w9r47.js → 1z4km7tw0_50h.js} +1 -1
- package/.next/standalone/.next/static/chunks/{1fqukzzowjflt.js → 239ay_80-xr8z.js} +1 -1
- package/.next/standalone/.next/static/chunks/{3nkc2jlgyygda.js → 2c9pc5xco6rnu.js} +1 -1
- package/.next/standalone/.next/static/chunks/{3i8rg2fv9nd6e.js → 3n46e45atic-m.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0542cuk_va8g1.js → 3sg07wnn969xq.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-11dn2pegmg9_9.js → turbopack-1opxka4dtjbc5.js} +1 -1
- package/.next/standalone/app/actions/install-hooks-web.ts +10 -2
- package/.next/standalone/hermes-plugin/plugin.yaml +1 -1
- package/.next/standalone/node_modules/@next/env/package.json +1 -1
- package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
- package/.next/standalone/node_modules/next/dist/compiled/hash.js/sha256/256.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/hash.js/sha256/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +17 -17
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +18 -18
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +3 -3
- package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +13 -13
- package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
- package/.next/standalone/node_modules/next/dist/server/base-server.js +1 -2
- package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/image-optimizer.js +265 -53
- package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +177 -19
- package/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/index.js +36 -17
- package/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js +14 -6
- package/.next/standalone/node_modules/next/dist/server/lib/match-next-data-pathname.js +3 -1
- package/.next/standalone/node_modules/next/dist/server/lib/node-fs-methods.js +14 -0
- package/.next/standalone/node_modules/next/dist/server/lib/route-cache-key.js +77 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/block-cross-site-dev.js +9 -11
- package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/mcp/get-mcp-middleware.js +4 -2
- package/.next/standalone/node_modules/next/dist/server/next-server.js +7 -3
- package/.next/standalone/node_modules/next/dist/server/response-cache/index.js +32 -16
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/app-page-route-matcher-provider.js +2 -2
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/pages-handler.js +6 -1
- package/.next/standalone/node_modules/next/dist/server/route-modules/route-module.js +9 -2
- package/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +30 -29
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/app-paths.js +18 -1
- package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
- package/.next/standalone/node_modules/next/package.json +10 -10
- package/.next/standalone/package.json +14 -11
- package/.next/standalone/sdk/python/README.md +41 -0
- package/.next/standalone/sdk/python/docs/README.md +1 -0
- package/.next/standalone/sdk/python/docs/otel/README.md +36 -0
- package/.next/standalone/sdk/python/docs/otel/examples/agent_trace.py +30 -0
- package/.next/standalone/sdk/python/docs/otel/examples/quickstart.py +22 -0
- package/.next/standalone/sdk/python/failproofai_sdk/__init__.py +8 -0
- package/.next/standalone/sdk/python/failproofai_sdk/integrations/__init__.py +3 -0
- package/.next/standalone/sdk/python/failproofai_sdk/integrations/otel.py +189 -0
- package/.next/standalone/sdk/python/pyproject.toml +2 -1
- package/.next/standalone/sdk/python/tests/test_docs.py +16 -3
- package/.next/standalone/sdk/python/tests/test_integrations.py +1 -1
- package/.next/standalone/sdk/python/tests/test_otel.py +147 -0
- package/.next/standalone/sdk/python/tests/test_zero_dependencies.py +4 -1
- package/.next/standalone/sdk/python/uv.lock +258 -147
- package/.next/standalone/sdk/typescript/README.md +43 -0
- package/.next/standalone/sdk/typescript/integration/ai.test.ts +9 -2
- package/.next/standalone/sdk/typescript/package-lock.json +57 -5
- package/.next/standalone/sdk/typescript/package.json +2 -0
- package/.next/standalone/sdk/typescript/src/edge/index.ts +9 -0
- package/.next/standalone/sdk/typescript/src/index.ts +2 -0
- package/.next/standalone/sdk/typescript/src/integrations/index.ts +4 -1
- package/.next/standalone/sdk/typescript/src/integrations/otel.ts +204 -0
- package/.next/standalone/sdk/typescript/test/integrations.test.ts +1 -1
- package/.next/standalone/sdk/typescript/test/otel.test.ts +125 -0
- package/.next/standalone/server.js +1 -1
- package/bin/failproofai.mjs +653 -1077
- package/dist/cli.mjs +8174 -3930
- package/dist/worker.mjs +170 -62
- package/hermes-plugin/plugin.yaml +1 -1
- package/package.json +14 -11
- package/scripts/launch-facts.ts +157 -0
- package/scripts/launch-ready.ts +228 -0
- package/scripts/launch-screen.ts +202 -0
- package/scripts/launch.ts +106 -49
- package/scripts/skew-log-filter.ts +42 -0
- package/src/audit/cli-login.ts +39 -59
- package/src/audit/cli.ts +308 -228
- package/src/audit/index.ts +45 -2
- package/src/audit/schedule-cli.ts +83 -120
- package/src/audit/types.ts +31 -0
- package/src/hooks/agent-selection.ts +155 -0
- package/src/hooks/backfill-cli.ts +151 -137
- package/src/hooks/backfill-request.ts +149 -0
- package/src/hooks/cloud-connection.ts +1 -1
- package/src/hooks/cloud-enrollment-cli.ts +78 -28
- package/src/hooks/cloud-introspect.ts +3 -0
- package/src/hooks/collector-config.ts +10 -1
- package/src/hooks/config-status.ts +606 -0
- package/src/hooks/configure-wizard.ts +915 -989
- package/src/hooks/daemon-service.ts +16 -6
- package/src/hooks/did-you-mean.ts +185 -0
- package/src/hooks/flush-cli.ts +33 -7
- package/src/hooks/fp-config.ts +96 -0
- package/src/hooks/fp-home.ts +11 -0
- package/src/hooks/fp-reset.ts +102 -95
- package/src/hooks/handler.ts +4 -0
- package/src/hooks/harness-cli.ts +87 -138
- package/src/hooks/install-prompt.ts +38 -477
- package/src/hooks/integrations.ts +1 -1
- package/src/hooks/jev-cli.ts +183 -196
- package/src/hooks/manager.ts +554 -358
- package/src/hooks/onboarding-attempt.ts +11 -9
- package/src/hooks/otel-cli.ts +344 -0
- package/src/hooks/otel-output.ts +24 -0
- package/src/hooks/otel-writers.ts +225 -0
- package/src/hooks/pack-cli.ts +219 -204
- package/src/hooks/report-body.ts +50 -0
- package/src/hooks/safe-config-write.ts +4 -2
- package/src/hooks/session-pause-cli.ts +93 -73
- package/src/hooks/tui.ts +849 -389
- package/src/hooks/uninstall-cli.ts +136 -149
- package/src/hooks/untraced-note.ts +52 -0
- package/.next/standalone/.next/server/chunks/[externals]__19_pzeq._.js +0 -3
- package/.next/standalone/.next/server/chunks/[externals]__20kzpkf._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01eqny5._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05ja_05._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0igxt32._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zyc_nm._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ttrwnd._.js +0 -22
- package/.next/standalone/.next/server/chunks/_0bs-v8p._.js +0 -3
- package/.next/standalone/.next/server/chunks/_185gyk9._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__056wjo4._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0n0xg95._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0rwtwpm._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0yrsbd_._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11mayhe._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15578wp._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1m_svbe._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1q4p5b8._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1n3w9lb._.js +0 -6
- package/.next/standalone/.next/static/chunks/1lyg_puttohbc.js +0 -1
- /package/.next/standalone/.next/static/{ECs8__hcNabYV58WfDh-3 → UZKCiP4Q2TeU8zOB-h9Xj}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{ECs8__hcNabYV58WfDh-3 → UZKCiP4Q2TeU8zOB-h9Xj}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{ECs8__hcNabYV58WfDh-3 → UZKCiP4Q2TeU8zOB-h9Xj}/_ssgManifest.js +0 -0
|
@@ -14,13 +14,12 @@ import {
|
|
|
14
14
|
cloudCredentialPath,
|
|
15
15
|
} from "./cloud-enrollment";
|
|
16
16
|
import {
|
|
17
|
-
daemonRestartCommand,
|
|
18
17
|
daemonServiceStatus,
|
|
19
18
|
daemonStatusCommand,
|
|
20
19
|
daemonVersionSkew,
|
|
21
20
|
} from "./daemon-service";
|
|
22
21
|
import { clearActiveCloudManagedPolicies } from "./cloud-managed-policies";
|
|
23
|
-
import {
|
|
22
|
+
import { optsFor, rows as kitRows, stack, warning } from "./tui";
|
|
24
23
|
import { deliveryHealth, deliveryHealthLine } from "./delivery-health";
|
|
25
24
|
import { clearJevCloudCredential, readVersionFile, readCredentials } from "./fp-config";
|
|
26
25
|
// A CLI command's import, never the hook path's: `jev-cloud-connection` reaches
|
|
@@ -97,9 +96,8 @@ export interface CommandResult {
|
|
|
97
96
|
* the one reader who cannot use them, and it made the id look like the machine's
|
|
98
97
|
* name. The id still has to appear: labels default to the hostname and are free to
|
|
99
98
|
* collide, so the label alone cannot identify a machine. Eight hex characters
|
|
100
|
-
* distinguish any realistic fleet while staying readable.
|
|
101
|
-
*
|
|
102
|
-
* `failproofai config --status --verbose` prints the full id for support.
|
|
99
|
+
* distinguish any realistic fleet while staying readable. `full` gives the whole
|
|
100
|
+
* id; no command prints it today.
|
|
103
101
|
*/
|
|
104
102
|
export function describeMachine(
|
|
105
103
|
machineId: string,
|
|
@@ -181,11 +179,13 @@ function daemonWarning(status: ReturnType<typeof daemonServiceStatus>): string[]
|
|
|
181
179
|
/**
|
|
182
180
|
* What `config --token` (and `config --connect … --token`) ends with, connected
|
|
183
181
|
* or not: every Jev remedy sends people to that spelling, and the key is in
|
|
184
|
-
* history either way.
|
|
182
|
+
* history either way. A `▲` notice: the state, then the fix, with the command
|
|
183
|
+
* in backticks so the printer paints it (`screenKit().notice`). `jev setup
|
|
184
|
+
* --token` says the same thing in `TOKEN_ON_ARGV`'s words.
|
|
185
185
|
*/
|
|
186
186
|
export const CONFIG_TOKEN_HISTORY_WARNING = [
|
|
187
|
-
|
|
188
|
-
"Next time,
|
|
187
|
+
"--token put the key in your shell history and, while this ran, the process list. Rotate it if that matters.",
|
|
188
|
+
"Next time, set FAILPROOFAI_CLOUD_TOKEN instead: `read -rs FAILPROOFAI_CLOUD_TOKEN && export FAILPROOFAI_CLOUD_TOKEN`",
|
|
189
189
|
];
|
|
190
190
|
|
|
191
191
|
export async function runConnectCommand(opts: ConnectOptions): Promise<CommandResult> {
|
|
@@ -298,7 +298,9 @@ export async function runRenameCommand(
|
|
|
298
298
|
exitCode: 1,
|
|
299
299
|
lines: [
|
|
300
300
|
"This machine is not connected to FailproofAI Cloud, so it has no name to change.",
|
|
301
|
-
|
|
301
|
+
// `failproofai config`, not `--connect <url> --token <key>`: a key on
|
|
302
|
+
// the command line lands in shell history and the process list.
|
|
303
|
+
"Connect it first: `failproofai config`",
|
|
302
304
|
],
|
|
303
305
|
};
|
|
304
306
|
}
|
|
@@ -330,6 +332,62 @@ export async function runRenameCommand(
|
|
|
330
332
|
return { exitCode: 0, lines };
|
|
331
333
|
}
|
|
332
334
|
|
|
335
|
+
/**
|
|
336
|
+
* Why `config --oss|--agents --machine-label <name>` cannot apply the name, or
|
|
337
|
+
* null when it can. Asked BEFORE setup, so a refusal changes nothing.
|
|
338
|
+
*
|
|
339
|
+
* Alongside a setup option the label is the name to connect under, and setup
|
|
340
|
+
* only connects when it is given a key. With no key and no saved connection
|
|
341
|
+
* there is nothing to name — unless somebody is at the prompt, where a key can
|
|
342
|
+
* still be pasted. --oss never connects. Before this check the label was
|
|
343
|
+
* dropped without a word and the run exited 0.
|
|
344
|
+
*/
|
|
345
|
+
export function machineLabelRefusal(opts: { oss: boolean; keyGiven: boolean; interactive: boolean }): string | null {
|
|
346
|
+
if (readCloudCredentials()) return null;
|
|
347
|
+
if (opts.oss) {
|
|
348
|
+
return (
|
|
349
|
+
"--machine-label names a machine connected to FailproofAI Cloud, and --oss leaves this one unconnected.\n" +
|
|
350
|
+
"Drop --machine-label, or set FAILPROOFAI_CLOUD_TOKEN and run `failproofai config --machine-label <name>`."
|
|
351
|
+
);
|
|
352
|
+
}
|
|
353
|
+
if (opts.keyGiven || opts.interactive) return null;
|
|
354
|
+
return (
|
|
355
|
+
"--machine-label names a machine connected to FailproofAI Cloud, and this one is not connected.\n" +
|
|
356
|
+
"Set FAILPROOFAI_CLOUD_TOKEN to connect under that name, or drop --machine-label."
|
|
357
|
+
);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* The name `config --oss|--agents --machine-label <name>` asked for, applied
|
|
362
|
+
* after setup ran. Null when there is nothing to report: no label, or setup
|
|
363
|
+
* already connected under it.
|
|
364
|
+
*
|
|
365
|
+
* Setup applies the label only when it connects. On a machine it left
|
|
366
|
+
* connected as it was — `--oss`, `--agents` with no new key, Enter on the saved
|
|
367
|
+
* key — this is the rename the flag asked for.
|
|
368
|
+
*/
|
|
369
|
+
export async function applyMachineLabelAfterSetup(
|
|
370
|
+
label: string | undefined,
|
|
371
|
+
deps: { verify?: typeof verifyCloudCredentials } = {},
|
|
372
|
+
): Promise<CommandResult | null> {
|
|
373
|
+
const trimmed = label?.trim();
|
|
374
|
+
if (!trimmed) return null;
|
|
375
|
+
const creds = readCloudCredentials();
|
|
376
|
+
if (creds?.machineLabel === trimmed) return null;
|
|
377
|
+
if (!creds) {
|
|
378
|
+
// Reached only from the prompt (see machineLabelRefusal): a key could have
|
|
379
|
+
// been pasted, and open source was chosen instead.
|
|
380
|
+
return {
|
|
381
|
+
exitCode: 0,
|
|
382
|
+
lines: [
|
|
383
|
+
`▲ ${trimmed} was not applied: this machine is not connected to FailproofAI Cloud.`,
|
|
384
|
+
" Name it as it connects: `failproofai config --machine-label <name>`",
|
|
385
|
+
],
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
return runRenameCommand(trimmed, deps);
|
|
389
|
+
}
|
|
390
|
+
|
|
333
391
|
export function runDisconnectCommand(): CommandResult {
|
|
334
392
|
const existing = readCloudCredentials();
|
|
335
393
|
const hadIngest = hasIngestCredential();
|
|
@@ -399,15 +457,14 @@ export function runDisconnectCommand(): CommandResult {
|
|
|
399
457
|
...jevLines,
|
|
400
458
|
];
|
|
401
459
|
if (removedIngest) {
|
|
402
|
-
//
|
|
403
|
-
//
|
|
404
|
-
//
|
|
405
|
-
//
|
|
406
|
-
//
|
|
460
|
+
// A running failproofaid notices on its own: its collector manager polls
|
|
461
|
+
// the collector config, which includes this credential, and stops the
|
|
462
|
+
// collector within one interval once it is gone (`spawn_collector_manager`
|
|
463
|
+
// in main.rs). This line used to say to restart the daemon, written when
|
|
464
|
+
// the manager started once per daemon lifetime and cached the key.
|
|
407
465
|
lines.push(
|
|
408
|
-
" No new hook activity or transcripts will be queued
|
|
409
|
-
"
|
|
410
|
-
` sending: ${daemonRestartCommand() ?? "restart failproofaid"}`,
|
|
466
|
+
" No new hook activity or transcripts will be queued, and a running failproofaid",
|
|
467
|
+
" stops sending within a few seconds: it notices the key is gone.",
|
|
411
468
|
);
|
|
412
469
|
}
|
|
413
470
|
return { exitCode: 0, lines };
|
|
@@ -445,10 +502,7 @@ export interface ConnectionStatusReport {
|
|
|
445
502
|
* the pause block together: rendered independently they computed two different
|
|
446
503
|
* label columns and the window read as two commands' output stacked up.
|
|
447
504
|
*/
|
|
448
|
-
export function connectionStatusReport(
|
|
449
|
-
daemonStatus = daemonServiceStatus,
|
|
450
|
-
verbose = false,
|
|
451
|
-
): ConnectionStatusReport {
|
|
505
|
+
export function connectionStatusReport(daemonStatus = daemonServiceStatus): ConnectionStatusReport {
|
|
452
506
|
const envUrl = process.env.FAILPROOFAI_CLOUD_URL;
|
|
453
507
|
if (envUrl) {
|
|
454
508
|
// Env wins over the file in the daemon, so reporting the file here would
|
|
@@ -489,7 +543,7 @@ export function connectionStatusReport(
|
|
|
489
543
|
const detail: Array<[string, string]> = [];
|
|
490
544
|
if (creds) {
|
|
491
545
|
detail.push(["cloud", `connected to ${creds.url}`]);
|
|
492
|
-
detail.push(["machine", describeMachine(creds.machineId, creds.machineLabel
|
|
546
|
+
detail.push(["machine", describeMachine(creds.machineId, creds.machineLabel)]);
|
|
493
547
|
detail.push(["token", maskToken(creds.token)]);
|
|
494
548
|
detail.push(["policy", "pulling centrally-managed policies"]);
|
|
495
549
|
} else {
|
|
@@ -528,13 +582,9 @@ export function connectionStatusReport(
|
|
|
528
582
|
}
|
|
529
583
|
|
|
530
584
|
/** The same report, rendered on its own — for any caller printing only this. */
|
|
531
|
-
export function connectionStatusLines(
|
|
532
|
-
daemonStatus = daemonServiceStatus,
|
|
533
|
-
/** Print the full machine id rather than a short prefix. */
|
|
534
|
-
verbose = false,
|
|
535
|
-
): string[] {
|
|
585
|
+
export function connectionStatusLines(daemonStatus = daemonServiceStatus): string[] {
|
|
536
586
|
const opts = optsFor(process.stdout);
|
|
537
|
-
const report = connectionStatusReport(daemonStatus
|
|
587
|
+
const report = connectionStatusReport(daemonStatus);
|
|
538
588
|
return stack(
|
|
539
589
|
kitRows(report.rows, opts),
|
|
540
590
|
report.warnings.length > 0 ? warning(report.warnings, opts) : null,
|
|
@@ -44,6 +44,8 @@ export interface KeyIdentity {
|
|
|
44
44
|
/** The EFFECTIVE permission set — what the server enforces. */
|
|
45
45
|
permissions: string[];
|
|
46
46
|
expiresAt?: string | null;
|
|
47
|
+
/** Missing on older Cloud versions; absence is unknown, never an error. */
|
|
48
|
+
otelIngest?: boolean;
|
|
47
49
|
}
|
|
48
50
|
|
|
49
51
|
export type IntrospectResult =
|
|
@@ -128,6 +130,7 @@ export async function introspectKey(
|
|
|
128
130
|
orgName: typeof b.org_name === "string" ? b.org_name : undefined,
|
|
129
131
|
permissions: b.permissions.filter((p): p is string => typeof p === "string"),
|
|
130
132
|
expiresAt: typeof b.expires_at === "string" ? b.expires_at : null,
|
|
133
|
+
otelIngest: typeof b.otel_ingest === "boolean" ? b.otel_ingest : undefined,
|
|
131
134
|
},
|
|
132
135
|
};
|
|
133
136
|
}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* the only thing that writes them.
|
|
14
14
|
*/
|
|
15
15
|
import { credentialsFile, failproofaiHome as layoutHome } from "./fp-home";
|
|
16
|
-
import { readCredentials, writeCredentials, updateConfig } from "./fp-config";
|
|
16
|
+
import { readConfig, readCredentials, writeCredentials, updateConfig } from "./fp-config";
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* The hosted ingest endpoint — a COMPLETE endpoint, not a base to join onto.
|
|
@@ -42,6 +42,8 @@ export interface IngestCredential {
|
|
|
42
42
|
export interface CollectorSettings {
|
|
43
43
|
/** Ship agent session transcripts. Separate opt-in from having a key. */
|
|
44
44
|
sessions: boolean;
|
|
45
|
+
agents?: Record<string, { sessions?: boolean }>;
|
|
46
|
+
otlp?: { enabled: boolean; port?: number };
|
|
45
47
|
/** Ship hook activity. */
|
|
46
48
|
hooks: boolean;
|
|
47
49
|
hooksVerbosity?: "all" | "decisions" | "off";
|
|
@@ -60,6 +62,11 @@ export function failproofaiHome(): string {
|
|
|
60
62
|
return layoutHome();
|
|
61
63
|
}
|
|
62
64
|
|
|
65
|
+
export function agentSessionsEnabled(agent: string): boolean {
|
|
66
|
+
const collector = readConfig().collector;
|
|
67
|
+
return collector.agents?.[agent]?.sessions ?? collector.sessions;
|
|
68
|
+
}
|
|
69
|
+
|
|
63
70
|
export function ingestPath(): string {
|
|
64
71
|
return credentialsFile();
|
|
65
72
|
}
|
|
@@ -122,6 +129,8 @@ export function writeCollectorSettings(settings: CollectorSettings): void {
|
|
|
122
129
|
redact: settings.redact ?? "minimal",
|
|
123
130
|
environment: settings.environment ?? "local",
|
|
124
131
|
machineId: settings.machineId,
|
|
132
|
+
agents: settings.agents ?? readConfig().collector.agents,
|
|
133
|
+
otlp: settings.otlp ?? readConfig().collector.otlp,
|
|
125
134
|
},
|
|
126
135
|
});
|
|
127
136
|
}
|