failproofai 1.0.1-beta.0 → 1.0.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 +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/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 +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +14 -14
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +13 -13
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/audit/invite/route.js +1 -1
- package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/audit/run/route.js +1 -1
- package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/audit/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-request/route.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-verify/route.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/status/route.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js +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 +1 -1
- package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +14 -14
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +13 -13
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +14 -14
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page/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 +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +10 -10
- package/.next/standalone/.next/server/app/policies/page.js +1 -1
- 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 +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page/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 +2 -2
- 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 +4 -4
- package/.next/standalone/.next/server/app/settings/page.js +1 -1
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0nne229._.js → [root-of-the-server]__0_usx0j._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1hstmft._.js → [root-of-the-server]__0_zk340._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0d1u_na._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1adacul._.js +5 -5
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0ny9q5d._.js → [root-of-the-server]__1l-khtb._.js} +1 -1
- package/.next/standalone/.next/server/chunks/_0lxbzdq._.js +1 -1
- package/.next/standalone/.next/server/chunks/{_18ty6si._.js → _1ger0a2._.js} +1 -1
- package/.next/standalone/.next/server/chunks/_1vslkoe._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1zuiiy3._.js +1 -1
- 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_01r25oi._.js +2 -2
- package/.next/standalone/.next/server/chunks/{node_modules_posthog-node_dist_entrypoints_index_node_mjs_0f-x2b0._.js → node_modules_posthog-node_dist_entrypoints_index_node_mjs_09d5c79._.js} +1 -1
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_09z9-p7._.js +2 -2
- package/.next/standalone/.next/server/chunks/{node_modules_posthog-node_dist_entrypoints_index_node_mjs_0hwvl7e._.js → node_modules_posthog-node_dist_entrypoints_index_node_mjs_0el6rg8._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{node_modules_posthog-node_dist_entrypoints_index_node_mjs_1ctjdzl._.js → node_modules_posthog-node_dist_entrypoints_index_node_mjs_1d2g73o._.js} +1 -1
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4v._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__07tbbf3._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0cxe_2_._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__15c_z97._.js → [root-of-the-server]__0jzbk4_._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0kc8_v5._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0kgy9da._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0mhqk5a._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0oa1lav._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pltpn8._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qkcyf-._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0spkm68._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w0x_ok._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1_dfocn._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__03eykvd._.js → [root-of-the-server]__1bfex62._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__07oh8b5._.js → [root-of-the-server]__1ctpynv._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1kzapg5._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__11z_299._.js → [root-of-the-server]__1m84s36._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_08x1r5t._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_04j57fb._.js → _0h_douw._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0lvyuv4._.js +23 -0
- package/.next/standalone/.next/server/chunks/ssr/{_05enntk._.js → _0u5zauv._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1_ozgif._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0hom1s1._.js → _1u8-lu2._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_1q7j05x._.js → _1zopuov._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpc._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_settings_settings-client_tsx_20lq-mq._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_13n822a._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1v8aef8._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuzn._.js +2 -2
- package/.next/standalone/.next/server/middleware-build-manifest.js +6 -6
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +15 -15
- package/.next/standalone/.next/static/chunks/{1o5sxp_mdaoci.js → 0k5050ezjvv49.js} +1 -1
- package/.next/standalone/.next/static/chunks/{054eg7y_cjyf9.js → 1ide1wl2f7zi1.js} +1 -1
- package/.next/standalone/.next/static/chunks/1oml7c7env4-g.js +31 -0
- package/.next/standalone/.next/static/chunks/1za08zjcctyil.js +22 -0
- package/.next/standalone/.next/static/chunks/2_2lhuojq2xop.js +1 -0
- package/.next/standalone/.next/static/chunks/{0mjufa_0xxz75.js → 2zpp1we2jv6tb.js} +1 -1
- package/.next/standalone/.next/static/chunks/{1-oz4co31nvc5.js → 31s1smp-g7gks.js} +1 -1
- package/.next/standalone/.next/static/chunks/36fw6yk1s6x_f.js +1 -0
- package/.next/standalone/.next/static/chunks/{2es4z1ei90vsv.js → 37fcpc36x9gpe.js} +1 -1
- package/.next/standalone/.next/static/chunks/{136ldjmzxhush.js → 3c808qrfcq0im.js} +1 -1
- package/.next/standalone/.next/static/chunks/3k7mxbp9hiom0.js +1 -0
- package/.next/standalone/.next/static/chunks/3tzq0260n17ae.js +6 -0
- package/.next/standalone/.next/static/chunks/{turbopack-0-gxz80mjds94.js → turbopack-3kjgdgwci4tqf.js} +1 -1
- package/.next/standalone/docs-old/agenteye/alerts.mdx +63 -0
- package/.next/standalone/docs-old/agenteye/api-keys.mdx +280 -0
- package/.next/standalone/docs-old/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/agenteye/audits.mdx +54 -0
- package/.next/standalone/docs-old/agenteye/cli-and-agents.mdx +80 -0
- package/.next/standalone/docs-old/agenteye/cli-recipes.mdx +179 -0
- package/.next/standalone/docs-old/agenteye/cli-skill.mdx +159 -0
- package/.next/standalone/docs-old/agenteye/cli.mdx +350 -0
- package/.next/standalone/docs-old/agenteye/codex-capture.mdx +55 -0
- package/.next/standalone/docs-old/agenteye/concepts.mdx +87 -0
- package/.next/standalone/docs-old/agenteye/dashboards.mdx +46 -0
- package/.next/standalone/docs-old/agenteye/error-tracking.mdx +41 -0
- package/.next/standalone/docs-old/agenteye/evaluation-suite.mdx +402 -0
- package/.next/standalone/docs-old/agenteye/evaluations.mdx +51 -0
- package/.next/standalone/docs-old/agenteye/evaluator-skill.mdx +167 -0
- package/.next/standalone/docs-old/agenteye/event-stream.mdx +50 -0
- package/.next/standalone/docs-old/agenteye/hermes-capture.mdx +53 -0
- package/.next/standalone/docs-old/agenteye/images/alert-new.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/alerts.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/api-keys.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/assistant.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/audits.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/dashboard-fleet.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/dashboard-quality.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/errors.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/events-stream.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/hooks.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/incident-detail.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/incidents.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/login.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/models.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/queries.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/query-lab.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/session-detail.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/sessions-list.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/settings.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/tools.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/users.png +0 -0
- package/.next/standalone/docs-old/agenteye/images/video-audit.jpg +0 -0
- package/.next/standalone/docs-old/agenteye/images/video-tracing.jpg +0 -0
- package/.next/standalone/docs-old/agenteye/incidents.mdx +50 -0
- package/.next/standalone/docs-old/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/agenteye/openclaw-capture.mdx +49 -0
- package/.next/standalone/docs-old/agenteye/overview.mdx +108 -0
- package/.next/standalone/docs-old/agenteye/python-sdk-skill.mdx +131 -0
- package/.next/standalone/docs-old/agenteye/python-sdk.mdx +436 -0
- package/.next/standalone/docs-old/agenteye/queries.mdx +56 -0
- package/.next/standalone/docs-old/agenteye/security.mdx +68 -0
- package/.next/standalone/docs-old/agenteye/sessions.mdx +57 -0
- package/.next/standalone/docs-old/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/ar/agenteye/alerts.mdx +63 -0
- package/.next/standalone/docs-old/ar/agenteye/api-keys.mdx +279 -0
- package/.next/standalone/docs-old/ar/agenteye/assistant.mdx +62 -0
- package/.next/standalone/docs-old/ar/agenteye/audits.mdx +55 -0
- package/.next/standalone/docs-old/ar/agenteye/cli-and-agents.mdx +81 -0
- package/.next/standalone/docs-old/ar/agenteye/cli-recipes.mdx +178 -0
- package/.next/standalone/docs-old/ar/agenteye/cli-skill.mdx +160 -0
- package/.next/standalone/docs-old/ar/agenteye/cli.mdx +349 -0
- package/.next/standalone/docs-old/ar/agenteye/codex-capture.mdx +56 -0
- package/.next/standalone/docs-old/ar/agenteye/concepts.mdx +88 -0
- package/.next/standalone/docs-old/ar/agenteye/dashboards.mdx +46 -0
- package/.next/standalone/docs-old/ar/agenteye/error-tracking.mdx +41 -0
- package/.next/standalone/docs-old/ar/agenteye/evaluation-suite.mdx +299 -0
- package/.next/standalone/docs-old/ar/agenteye/evaluations.mdx +51 -0
- package/.next/standalone/docs-old/ar/agenteye/evaluator-skill.mdx +168 -0
- package/.next/standalone/docs-old/ar/agenteye/event-stream.mdx +50 -0
- package/.next/standalone/docs-old/ar/agenteye/hermes-capture.mdx +54 -0
- package/.next/standalone/docs-old/ar/agenteye/incidents.mdx +51 -0
- package/.next/standalone/docs-old/ar/agenteye/observability.mdx +24 -0
- package/.next/standalone/docs-old/ar/agenteye/openclaw-capture.mdx +50 -0
- package/.next/standalone/docs-old/ar/agenteye/overview.mdx +108 -0
- package/.next/standalone/docs-old/ar/agenteye/python-sdk-skill.mdx +129 -0
- package/.next/standalone/docs-old/ar/agenteye/python-sdk.mdx +435 -0
- package/.next/standalone/docs-old/ar/agenteye/queries.mdx +57 -0
- package/.next/standalone/docs-old/ar/agenteye/security.mdx +68 -0
- package/.next/standalone/docs-old/ar/agenteye/sessions.mdx +58 -0
- package/.next/standalone/docs-old/ar/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/ar/architecture.mdx +333 -0
- package/.next/standalone/docs-old/ar/built-in-policies.mdx +860 -0
- package/.next/standalone/docs-old/ar/cli/audit.mdx +120 -0
- package/.next/standalone/docs-old/ar/cli/dashboard.mdx +30 -0
- package/.next/standalone/docs-old/ar/cli/environment-variables.mdx +70 -0
- package/.next/standalone/docs-old/ar/cli/hook.mdx +31 -0
- package/.next/standalone/docs-old/ar/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/ar/cli/list-policies.mdx +32 -0
- package/.next/standalone/docs-old/ar/cli/migrate.mdx +110 -0
- package/.next/standalone/docs-old/ar/cli/remove-policies.mdx +44 -0
- package/.next/standalone/docs-old/ar/cli/update.mdx +79 -0
- package/.next/standalone/docs-old/ar/cli/version.mdx +13 -0
- package/.next/standalone/docs-old/ar/configuration.mdx +268 -0
- package/.next/standalone/docs-old/ar/custom-policies.mdx +359 -0
- package/.next/standalone/docs-old/ar/dashboard.mdx +152 -0
- package/.next/standalone/docs-old/ar/examples.mdx +307 -0
- package/.next/standalone/docs-old/ar/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/ar/getting-started.mdx +199 -0
- package/.next/standalone/docs-old/ar/introduction.mdx +58 -0
- package/.next/standalone/docs-old/ar/package-aliases.mdx +83 -0
- package/.next/standalone/docs-old/ar/testing.mdx +260 -0
- package/.next/standalone/docs-old/architecture.mdx +332 -0
- package/.next/standalone/docs-old/built-in-policies.mdx +859 -0
- package/.next/standalone/docs-old/cli/audit.mdx +188 -0
- package/.next/standalone/docs-old/cli/dashboard.mdx +29 -0
- package/.next/standalone/docs-old/cli/environment-variables.mdx +75 -0
- package/.next/standalone/docs-old/cli/hook.mdx +30 -0
- package/.next/standalone/docs-old/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/cli/list-policies.mdx +31 -0
- package/.next/standalone/docs-old/cli/migrate.mdx +117 -0
- package/.next/standalone/docs-old/cli/remove-policies.mdx +43 -0
- package/.next/standalone/docs-old/cli/update.mdx +94 -0
- package/.next/standalone/docs-old/cli/version.mdx +12 -0
- package/.next/standalone/docs-old/configuration.mdx +295 -0
- package/.next/standalone/docs-old/custom-policies.mdx +362 -0
- package/.next/standalone/docs-old/dashboard.mdx +176 -0
- package/.next/standalone/docs-old/de/agenteye/alerts.mdx +63 -0
- package/.next/standalone/docs-old/de/agenteye/api-keys.mdx +280 -0
- package/.next/standalone/docs-old/de/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/de/agenteye/audits.mdx +54 -0
- package/.next/standalone/docs-old/de/agenteye/cli-and-agents.mdx +80 -0
- package/.next/standalone/docs-old/de/agenteye/cli-recipes.mdx +179 -0
- package/.next/standalone/docs-old/de/agenteye/cli-skill.mdx +159 -0
- package/.next/standalone/docs-old/de/agenteye/cli.mdx +350 -0
- package/.next/standalone/docs-old/de/agenteye/codex-capture.mdx +55 -0
- package/.next/standalone/docs-old/de/agenteye/concepts.mdx +87 -0
- package/.next/standalone/docs-old/de/agenteye/dashboards.mdx +46 -0
- package/.next/standalone/docs-old/de/agenteye/error-tracking.mdx +41 -0
- package/.next/standalone/docs-old/de/agenteye/evaluation-suite.mdx +300 -0
- package/.next/standalone/docs-old/de/agenteye/evaluations.mdx +50 -0
- package/.next/standalone/docs-old/de/agenteye/evaluator-skill.mdx +167 -0
- package/.next/standalone/docs-old/de/agenteye/event-stream.mdx +50 -0
- package/.next/standalone/docs-old/de/agenteye/hermes-capture.mdx +53 -0
- package/.next/standalone/docs-old/de/agenteye/incidents.mdx +50 -0
- package/.next/standalone/docs-old/de/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/de/agenteye/openclaw-capture.mdx +49 -0
- package/.next/standalone/docs-old/de/agenteye/overview.mdx +108 -0
- package/.next/standalone/docs-old/de/agenteye/python-sdk-skill.mdx +131 -0
- package/.next/standalone/docs-old/de/agenteye/python-sdk.mdx +436 -0
- package/.next/standalone/docs-old/de/agenteye/queries.mdx +56 -0
- package/.next/standalone/docs-old/de/agenteye/security.mdx +68 -0
- package/.next/standalone/docs-old/de/agenteye/sessions.mdx +57 -0
- package/.next/standalone/docs-old/de/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/de/architecture.mdx +332 -0
- package/.next/standalone/docs-old/de/built-in-policies.mdx +859 -0
- package/.next/standalone/docs-old/de/cli/audit.mdx +131 -0
- package/.next/standalone/docs-old/de/cli/dashboard.mdx +29 -0
- package/.next/standalone/docs-old/de/cli/environment-variables.mdx +72 -0
- package/.next/standalone/docs-old/de/cli/hook.mdx +30 -0
- package/.next/standalone/docs-old/de/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/de/cli/list-policies.mdx +31 -0
- package/.next/standalone/docs-old/de/cli/migrate.mdx +122 -0
- package/.next/standalone/docs-old/de/cli/remove-policies.mdx +43 -0
- package/.next/standalone/docs-old/de/cli/update.mdx +75 -0
- package/.next/standalone/docs-old/de/cli/version.mdx +12 -0
- package/.next/standalone/docs-old/de/configuration.mdx +272 -0
- package/.next/standalone/docs-old/de/custom-policies.mdx +358 -0
- package/.next/standalone/docs-old/de/dashboard.mdx +151 -0
- package/.next/standalone/docs-old/de/examples.mdx +307 -0
- package/.next/standalone/docs-old/de/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/de/getting-started.mdx +199 -0
- package/.next/standalone/docs-old/de/introduction.mdx +57 -0
- package/.next/standalone/docs-old/de/package-aliases.mdx +82 -0
- package/.next/standalone/docs-old/de/testing.mdx +260 -0
- package/.next/standalone/docs-old/docs.json +1830 -0
- package/.next/standalone/docs-old/es/agenteye/alerts.mdx +63 -0
- package/.next/standalone/docs-old/es/agenteye/api-keys.mdx +280 -0
- package/.next/standalone/docs-old/es/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/es/agenteye/audits.mdx +54 -0
- package/.next/standalone/docs-old/es/agenteye/cli-and-agents.mdx +80 -0
- package/.next/standalone/docs-old/es/agenteye/cli-recipes.mdx +178 -0
- package/.next/standalone/docs-old/es/agenteye/cli-skill.mdx +159 -0
- package/.next/standalone/docs-old/es/agenteye/cli.mdx +350 -0
- package/.next/standalone/docs-old/es/agenteye/codex-capture.mdx +55 -0
- package/.next/standalone/docs-old/es/agenteye/concepts.mdx +87 -0
- package/.next/standalone/docs-old/es/agenteye/dashboards.mdx +46 -0
- package/.next/standalone/docs-old/es/agenteye/error-tracking.mdx +41 -0
- package/.next/standalone/docs-old/es/agenteye/evaluation-suite.mdx +300 -0
- package/.next/standalone/docs-old/es/agenteye/evaluations.mdx +50 -0
- package/.next/standalone/docs-old/es/agenteye/evaluator-skill.mdx +167 -0
- package/.next/standalone/docs-old/es/agenteye/event-stream.mdx +50 -0
- package/.next/standalone/docs-old/es/agenteye/hermes-capture.mdx +53 -0
- package/.next/standalone/docs-old/es/agenteye/incidents.mdx +50 -0
- package/.next/standalone/docs-old/es/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/es/agenteye/openclaw-capture.mdx +49 -0
- package/.next/standalone/docs-old/es/agenteye/overview.mdx +108 -0
- package/.next/standalone/docs-old/es/agenteye/python-sdk-skill.mdx +135 -0
- package/.next/standalone/docs-old/es/agenteye/python-sdk.mdx +436 -0
- package/.next/standalone/docs-old/es/agenteye/queries.mdx +56 -0
- package/.next/standalone/docs-old/es/agenteye/security.mdx +68 -0
- package/.next/standalone/docs-old/es/agenteye/sessions.mdx +56 -0
- package/.next/standalone/docs-old/es/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/es/architecture.mdx +332 -0
- package/.next/standalone/docs-old/es/built-in-policies.mdx +853 -0
- package/.next/standalone/docs-old/es/cli/audit.mdx +137 -0
- package/.next/standalone/docs-old/es/cli/dashboard.mdx +29 -0
- package/.next/standalone/docs-old/es/cli/environment-variables.mdx +72 -0
- package/.next/standalone/docs-old/es/cli/hook.mdx +30 -0
- package/.next/standalone/docs-old/es/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/es/cli/list-policies.mdx +31 -0
- package/.next/standalone/docs-old/es/cli/migrate.mdx +86 -0
- package/.next/standalone/docs-old/es/cli/remove-policies.mdx +43 -0
- package/.next/standalone/docs-old/es/cli/update.mdx +64 -0
- package/.next/standalone/docs-old/es/cli/version.mdx +12 -0
- package/.next/standalone/docs-old/es/configuration.mdx +271 -0
- package/.next/standalone/docs-old/es/custom-policies.mdx +358 -0
- package/.next/standalone/docs-old/es/dashboard.mdx +151 -0
- package/.next/standalone/docs-old/es/examples.mdx +307 -0
- package/.next/standalone/docs-old/es/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/es/getting-started.mdx +199 -0
- package/.next/standalone/docs-old/es/introduction.mdx +57 -0
- package/.next/standalone/docs-old/es/package-aliases.mdx +82 -0
- package/.next/standalone/docs-old/es/testing.mdx +260 -0
- package/.next/standalone/docs-old/examples.mdx +307 -0
- package/.next/standalone/docs-old/favicon.ico +0 -0
- package/.next/standalone/docs-old/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/fr/agenteye/alerts.mdx +63 -0
- package/.next/standalone/docs-old/fr/agenteye/api-keys.mdx +280 -0
- package/.next/standalone/docs-old/fr/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/fr/agenteye/audits.mdx +54 -0
- package/.next/standalone/docs-old/fr/agenteye/cli-and-agents.mdx +79 -0
- package/.next/standalone/docs-old/fr/agenteye/cli-recipes.mdx +179 -0
- package/.next/standalone/docs-old/fr/agenteye/cli-skill.mdx +159 -0
- package/.next/standalone/docs-old/fr/agenteye/cli.mdx +350 -0
- package/.next/standalone/docs-old/fr/agenteye/codex-capture.mdx +55 -0
- package/.next/standalone/docs-old/fr/agenteye/concepts.mdx +87 -0
- package/.next/standalone/docs-old/fr/agenteye/dashboards.mdx +46 -0
- package/.next/standalone/docs-old/fr/agenteye/error-tracking.mdx +40 -0
- package/.next/standalone/docs-old/fr/agenteye/evaluation-suite.mdx +401 -0
- package/.next/standalone/docs-old/fr/agenteye/evaluations.mdx +50 -0
- package/.next/standalone/docs-old/fr/agenteye/evaluator-skill.mdx +167 -0
- package/.next/standalone/docs-old/fr/agenteye/event-stream.mdx +50 -0
- package/.next/standalone/docs-old/fr/agenteye/hermes-capture.mdx +53 -0
- package/.next/standalone/docs-old/fr/agenteye/incidents.mdx +50 -0
- package/.next/standalone/docs-old/fr/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/fr/agenteye/openclaw-capture.mdx +49 -0
- package/.next/standalone/docs-old/fr/agenteye/overview.mdx +108 -0
- package/.next/standalone/docs-old/fr/agenteye/python-sdk-skill.mdx +135 -0
- package/.next/standalone/docs-old/fr/agenteye/python-sdk.mdx +436 -0
- package/.next/standalone/docs-old/fr/agenteye/queries.mdx +56 -0
- package/.next/standalone/docs-old/fr/agenteye/security.mdx +68 -0
- package/.next/standalone/docs-old/fr/agenteye/sessions.mdx +57 -0
- package/.next/standalone/docs-old/fr/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/fr/architecture.mdx +332 -0
- package/.next/standalone/docs-old/fr/built-in-policies.mdx +851 -0
- package/.next/standalone/docs-old/fr/cli/audit.mdx +126 -0
- package/.next/standalone/docs-old/fr/cli/dashboard.mdx +29 -0
- package/.next/standalone/docs-old/fr/cli/environment-variables.mdx +70 -0
- package/.next/standalone/docs-old/fr/cli/hook.mdx +30 -0
- package/.next/standalone/docs-old/fr/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/fr/cli/list-policies.mdx +31 -0
- package/.next/standalone/docs-old/fr/cli/migrate.mdx +86 -0
- package/.next/standalone/docs-old/fr/cli/remove-policies.mdx +43 -0
- package/.next/standalone/docs-old/fr/cli/update.mdx +64 -0
- package/.next/standalone/docs-old/fr/cli/version.mdx +12 -0
- package/.next/standalone/docs-old/fr/configuration.mdx +271 -0
- package/.next/standalone/docs-old/fr/custom-policies.mdx +358 -0
- package/.next/standalone/docs-old/fr/dashboard.mdx +151 -0
- package/.next/standalone/docs-old/fr/examples.mdx +307 -0
- package/.next/standalone/docs-old/fr/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/fr/getting-started.mdx +199 -0
- package/.next/standalone/docs-old/fr/introduction.mdx +57 -0
- package/.next/standalone/docs-old/fr/package-aliases.mdx +82 -0
- package/.next/standalone/docs-old/fr/testing.mdx +260 -0
- package/.next/standalone/docs-old/getting-started.mdx +201 -0
- package/.next/standalone/docs-old/he/agenteye/alerts.mdx +63 -0
- package/.next/standalone/docs-old/he/agenteye/api-keys.mdx +279 -0
- package/.next/standalone/docs-old/he/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/he/agenteye/audits.mdx +53 -0
- package/.next/standalone/docs-old/he/agenteye/cli-and-agents.mdx +80 -0
- package/.next/standalone/docs-old/he/agenteye/cli-recipes.mdx +179 -0
- package/.next/standalone/docs-old/he/agenteye/cli-skill.mdx +160 -0
- package/.next/standalone/docs-old/he/agenteye/cli.mdx +349 -0
- package/.next/standalone/docs-old/he/agenteye/codex-capture.mdx +56 -0
- package/.next/standalone/docs-old/he/agenteye/concepts.mdx +87 -0
- package/.next/standalone/docs-old/he/agenteye/dashboards.mdx +46 -0
- package/.next/standalone/docs-old/he/agenteye/error-tracking.mdx +41 -0
- package/.next/standalone/docs-old/he/agenteye/evaluation-suite.mdx +299 -0
- package/.next/standalone/docs-old/he/agenteye/evaluations.mdx +51 -0
- package/.next/standalone/docs-old/he/agenteye/evaluator-skill.mdx +168 -0
- package/.next/standalone/docs-old/he/agenteye/event-stream.mdx +50 -0
- package/.next/standalone/docs-old/he/agenteye/hermes-capture.mdx +54 -0
- package/.next/standalone/docs-old/he/agenteye/incidents.mdx +50 -0
- package/.next/standalone/docs-old/he/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/he/agenteye/openclaw-capture.mdx +50 -0
- package/.next/standalone/docs-old/he/agenteye/overview.mdx +108 -0
- package/.next/standalone/docs-old/he/agenteye/python-sdk-skill.mdx +132 -0
- package/.next/standalone/docs-old/he/agenteye/python-sdk.mdx +436 -0
- package/.next/standalone/docs-old/he/agenteye/queries.mdx +56 -0
- package/.next/standalone/docs-old/he/agenteye/security.mdx +67 -0
- package/.next/standalone/docs-old/he/agenteye/sessions.mdx +58 -0
- package/.next/standalone/docs-old/he/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/he/architecture.mdx +332 -0
- package/.next/standalone/docs-old/he/built-in-policies.mdx +857 -0
- package/.next/standalone/docs-old/he/cli/audit.mdx +116 -0
- package/.next/standalone/docs-old/he/cli/dashboard.mdx +30 -0
- package/.next/standalone/docs-old/he/cli/environment-variables.mdx +69 -0
- package/.next/standalone/docs-old/he/cli/hook.mdx +30 -0
- package/.next/standalone/docs-old/he/cli/install-policies.mdx +58 -0
- package/.next/standalone/docs-old/he/cli/list-policies.mdx +32 -0
- package/.next/standalone/docs-old/he/cli/migrate.mdx +87 -0
- package/.next/standalone/docs-old/he/cli/remove-policies.mdx +44 -0
- package/.next/standalone/docs-old/he/cli/update.mdx +64 -0
- package/.next/standalone/docs-old/he/cli/version.mdx +13 -0
- package/.next/standalone/docs-old/he/configuration.mdx +264 -0
- package/.next/standalone/docs-old/he/custom-policies.mdx +359 -0
- package/.next/standalone/docs-old/he/dashboard.mdx +155 -0
- package/.next/standalone/docs-old/he/examples.mdx +308 -0
- package/.next/standalone/docs-old/he/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/he/getting-started.mdx +200 -0
- package/.next/standalone/docs-old/he/introduction.mdx +58 -0
- package/.next/standalone/docs-old/he/package-aliases.mdx +82 -0
- package/.next/standalone/docs-old/he/testing.mdx +260 -0
- package/.next/standalone/docs-old/hi/agenteye/alerts.mdx +62 -0
- package/.next/standalone/docs-old/hi/agenteye/api-keys.mdx +279 -0
- package/.next/standalone/docs-old/hi/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/hi/agenteye/audits.mdx +53 -0
- package/.next/standalone/docs-old/hi/agenteye/cli-and-agents.mdx +80 -0
- package/.next/standalone/docs-old/hi/agenteye/cli-recipes.mdx +178 -0
- package/.next/standalone/docs-old/hi/agenteye/cli-skill.mdx +159 -0
- package/.next/standalone/docs-old/hi/agenteye/cli.mdx +350 -0
- package/.next/standalone/docs-old/hi/agenteye/codex-capture.mdx +56 -0
- package/.next/standalone/docs-old/hi/agenteye/concepts.mdx +87 -0
- package/.next/standalone/docs-old/hi/agenteye/dashboards.mdx +47 -0
- package/.next/standalone/docs-old/hi/agenteye/error-tracking.mdx +42 -0
- package/.next/standalone/docs-old/hi/agenteye/evaluation-suite.mdx +299 -0
- package/.next/standalone/docs-old/hi/agenteye/evaluations.mdx +51 -0
- package/.next/standalone/docs-old/hi/agenteye/evaluator-skill.mdx +171 -0
- package/.next/standalone/docs-old/hi/agenteye/event-stream.mdx +49 -0
- package/.next/standalone/docs-old/hi/agenteye/hermes-capture.mdx +53 -0
- package/.next/standalone/docs-old/hi/agenteye/incidents.mdx +50 -0
- package/.next/standalone/docs-old/hi/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/hi/agenteye/openclaw-capture.mdx +50 -0
- package/.next/standalone/docs-old/hi/agenteye/overview.mdx +107 -0
- package/.next/standalone/docs-old/hi/agenteye/python-sdk-skill.mdx +133 -0
- package/.next/standalone/docs-old/hi/agenteye/python-sdk.mdx +434 -0
- package/.next/standalone/docs-old/hi/agenteye/queries.mdx +57 -0
- package/.next/standalone/docs-old/hi/agenteye/security.mdx +68 -0
- package/.next/standalone/docs-old/hi/agenteye/sessions.mdx +57 -0
- package/.next/standalone/docs-old/hi/agenteye/telemetry.mdx +51 -0
- package/.next/standalone/docs-old/hi/architecture.mdx +332 -0
- package/.next/standalone/docs-old/hi/built-in-policies.mdx +848 -0
- package/.next/standalone/docs-old/hi/cli/audit.mdx +117 -0
- package/.next/standalone/docs-old/hi/cli/dashboard.mdx +29 -0
- package/.next/standalone/docs-old/hi/cli/environment-variables.mdx +64 -0
- package/.next/standalone/docs-old/hi/cli/hook.mdx +30 -0
- package/.next/standalone/docs-old/hi/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/hi/cli/list-policies.mdx +31 -0
- package/.next/standalone/docs-old/hi/cli/migrate.mdx +85 -0
- package/.next/standalone/docs-old/hi/cli/remove-policies.mdx +43 -0
- package/.next/standalone/docs-old/hi/cli/update.mdx +65 -0
- package/.next/standalone/docs-old/hi/cli/version.mdx +12 -0
- package/.next/standalone/docs-old/hi/configuration.mdx +264 -0
- package/.next/standalone/docs-old/hi/custom-policies.mdx +359 -0
- package/.next/standalone/docs-old/hi/dashboard.mdx +152 -0
- package/.next/standalone/docs-old/hi/examples.mdx +307 -0
- package/.next/standalone/docs-old/hi/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/hi/getting-started.mdx +200 -0
- package/.next/standalone/docs-old/hi/introduction.mdx +58 -0
- package/.next/standalone/docs-old/hi/package-aliases.mdx +83 -0
- package/.next/standalone/docs-old/hi/testing.mdx +260 -0
- package/.next/standalone/docs-old/i18n/README.ar.md +230 -0
- package/.next/standalone/docs-old/i18n/README.de.md +225 -0
- package/.next/standalone/docs-old/i18n/README.es.md +225 -0
- package/.next/standalone/docs-old/i18n/README.fr.md +225 -0
- package/.next/standalone/docs-old/i18n/README.he.md +230 -0
- package/.next/standalone/docs-old/i18n/README.hi.md +222 -0
- package/.next/standalone/docs-old/i18n/README.it.md +225 -0
- package/.next/standalone/docs-old/i18n/README.ja.md +219 -0
- package/.next/standalone/docs-old/i18n/README.ko.md +225 -0
- package/.next/standalone/docs-old/i18n/README.pt-br.md +225 -0
- package/.next/standalone/docs-old/i18n/README.ru.md +222 -0
- package/.next/standalone/docs-old/i18n/README.tr.md +221 -0
- package/.next/standalone/docs-old/i18n/README.vi.md +225 -0
- package/.next/standalone/docs-old/i18n/README.zh.md +219 -0
- package/.next/standalone/docs-old/introduction.mdx +57 -0
- package/.next/standalone/docs-old/it/agenteye/alerts.mdx +62 -0
- package/.next/standalone/docs-old/it/agenteye/api-keys.mdx +279 -0
- package/.next/standalone/docs-old/it/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/it/agenteye/audits.mdx +54 -0
- package/.next/standalone/docs-old/it/agenteye/cli-and-agents.mdx +80 -0
- package/.next/standalone/docs-old/it/agenteye/cli-recipes.mdx +179 -0
- package/.next/standalone/docs-old/it/agenteye/cli-skill.mdx +159 -0
- package/.next/standalone/docs-old/it/agenteye/cli.mdx +349 -0
- package/.next/standalone/docs-old/it/agenteye/codex-capture.mdx +56 -0
- package/.next/standalone/docs-old/it/agenteye/concepts.mdx +87 -0
- package/.next/standalone/docs-old/it/agenteye/dashboards.mdx +46 -0
- package/.next/standalone/docs-old/it/agenteye/error-tracking.mdx +41 -0
- package/.next/standalone/docs-old/it/agenteye/evaluation-suite.mdx +299 -0
- package/.next/standalone/docs-old/it/agenteye/evaluations.mdx +51 -0
- package/.next/standalone/docs-old/it/agenteye/evaluator-skill.mdx +170 -0
- package/.next/standalone/docs-old/it/agenteye/event-stream.mdx +50 -0
- package/.next/standalone/docs-old/it/agenteye/hermes-capture.mdx +53 -0
- package/.next/standalone/docs-old/it/agenteye/incidents.mdx +49 -0
- package/.next/standalone/docs-old/it/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/it/agenteye/openclaw-capture.mdx +49 -0
- package/.next/standalone/docs-old/it/agenteye/overview.mdx +107 -0
- package/.next/standalone/docs-old/it/agenteye/python-sdk-skill.mdx +132 -0
- package/.next/standalone/docs-old/it/agenteye/python-sdk.mdx +437 -0
- package/.next/standalone/docs-old/it/agenteye/queries.mdx +55 -0
- package/.next/standalone/docs-old/it/agenteye/security.mdx +68 -0
- package/.next/standalone/docs-old/it/agenteye/sessions.mdx +57 -0
- package/.next/standalone/docs-old/it/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/it/architecture.mdx +333 -0
- package/.next/standalone/docs-old/it/built-in-policies.mdx +853 -0
- package/.next/standalone/docs-old/it/cli/audit.mdx +126 -0
- package/.next/standalone/docs-old/it/cli/dashboard.mdx +30 -0
- package/.next/standalone/docs-old/it/cli/environment-variables.mdx +65 -0
- package/.next/standalone/docs-old/it/cli/hook.mdx +30 -0
- package/.next/standalone/docs-old/it/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/it/cli/list-policies.mdx +31 -0
- package/.next/standalone/docs-old/it/cli/migrate.mdx +122 -0
- package/.next/standalone/docs-old/it/cli/remove-policies.mdx +43 -0
- package/.next/standalone/docs-old/it/cli/update.mdx +86 -0
- package/.next/standalone/docs-old/it/cli/version.mdx +12 -0
- package/.next/standalone/docs-old/it/configuration.mdx +269 -0
- package/.next/standalone/docs-old/it/custom-policies.mdx +359 -0
- package/.next/standalone/docs-old/it/dashboard.mdx +151 -0
- package/.next/standalone/docs-old/it/examples.mdx +307 -0
- package/.next/standalone/docs-old/it/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/it/getting-started.mdx +199 -0
- package/.next/standalone/docs-old/it/introduction.mdx +58 -0
- package/.next/standalone/docs-old/it/package-aliases.mdx +82 -0
- package/.next/standalone/docs-old/it/testing.mdx +261 -0
- package/.next/standalone/docs-old/ja/agenteye/alerts.mdx +63 -0
- package/.next/standalone/docs-old/ja/agenteye/api-keys.mdx +280 -0
- package/.next/standalone/docs-old/ja/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/ja/agenteye/audits.mdx +54 -0
- package/.next/standalone/docs-old/ja/agenteye/cli-and-agents.mdx +80 -0
- package/.next/standalone/docs-old/ja/agenteye/cli-recipes.mdx +179 -0
- package/.next/standalone/docs-old/ja/agenteye/cli-skill.mdx +159 -0
- package/.next/standalone/docs-old/ja/agenteye/cli.mdx +350 -0
- package/.next/standalone/docs-old/ja/agenteye/codex-capture.mdx +55 -0
- package/.next/standalone/docs-old/ja/agenteye/concepts.mdx +87 -0
- package/.next/standalone/docs-old/ja/agenteye/dashboards.mdx +46 -0
- package/.next/standalone/docs-old/ja/agenteye/error-tracking.mdx +41 -0
- package/.next/standalone/docs-old/ja/agenteye/evaluation-suite.mdx +300 -0
- package/.next/standalone/docs-old/ja/agenteye/evaluations.mdx +51 -0
- package/.next/standalone/docs-old/ja/agenteye/evaluator-skill.mdx +167 -0
- package/.next/standalone/docs-old/ja/agenteye/event-stream.mdx +50 -0
- package/.next/standalone/docs-old/ja/agenteye/hermes-capture.mdx +53 -0
- package/.next/standalone/docs-old/ja/agenteye/incidents.mdx +50 -0
- package/.next/standalone/docs-old/ja/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/ja/agenteye/openclaw-capture.mdx +49 -0
- package/.next/standalone/docs-old/ja/agenteye/overview.mdx +108 -0
- package/.next/standalone/docs-old/ja/agenteye/python-sdk-skill.mdx +131 -0
- package/.next/standalone/docs-old/ja/agenteye/python-sdk.mdx +433 -0
- package/.next/standalone/docs-old/ja/agenteye/queries.mdx +56 -0
- package/.next/standalone/docs-old/ja/agenteye/security.mdx +68 -0
- package/.next/standalone/docs-old/ja/agenteye/sessions.mdx +57 -0
- package/.next/standalone/docs-old/ja/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/ja/architecture.mdx +332 -0
- package/.next/standalone/docs-old/ja/built-in-policies.mdx +848 -0
- package/.next/standalone/docs-old/ja/cli/audit.mdx +116 -0
- package/.next/standalone/docs-old/ja/cli/dashboard.mdx +29 -0
- package/.next/standalone/docs-old/ja/cli/environment-variables.mdx +63 -0
- package/.next/standalone/docs-old/ja/cli/hook.mdx +30 -0
- package/.next/standalone/docs-old/ja/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/ja/cli/list-policies.mdx +31 -0
- package/.next/standalone/docs-old/ja/cli/migrate.mdx +86 -0
- package/.next/standalone/docs-old/ja/cli/remove-policies.mdx +43 -0
- package/.next/standalone/docs-old/ja/cli/update.mdx +64 -0
- package/.next/standalone/docs-old/ja/cli/version.mdx +12 -0
- package/.next/standalone/docs-old/ja/configuration.mdx +264 -0
- package/.next/standalone/docs-old/ja/custom-policies.mdx +358 -0
- package/.next/standalone/docs-old/ja/dashboard.mdx +151 -0
- package/.next/standalone/docs-old/ja/examples.mdx +307 -0
- package/.next/standalone/docs-old/ja/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/ja/getting-started.mdx +199 -0
- package/.next/standalone/docs-old/ja/introduction.mdx +57 -0
- package/.next/standalone/docs-old/ja/package-aliases.mdx +82 -0
- package/.next/standalone/docs-old/ja/testing.mdx +260 -0
- package/.next/standalone/docs-old/ko/agenteye/alerts.mdx +63 -0
- package/.next/standalone/docs-old/ko/agenteye/api-keys.mdx +280 -0
- package/.next/standalone/docs-old/ko/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/ko/agenteye/audits.mdx +54 -0
- package/.next/standalone/docs-old/ko/agenteye/cli-and-agents.mdx +80 -0
- package/.next/standalone/docs-old/ko/agenteye/cli-recipes.mdx +179 -0
- package/.next/standalone/docs-old/ko/agenteye/cli-skill.mdx +159 -0
- package/.next/standalone/docs-old/ko/agenteye/cli.mdx +350 -0
- package/.next/standalone/docs-old/ko/agenteye/codex-capture.mdx +55 -0
- package/.next/standalone/docs-old/ko/agenteye/concepts.mdx +87 -0
- package/.next/standalone/docs-old/ko/agenteye/dashboards.mdx +46 -0
- package/.next/standalone/docs-old/ko/agenteye/error-tracking.mdx +40 -0
- package/.next/standalone/docs-old/ko/agenteye/evaluation-suite.mdx +303 -0
- package/.next/standalone/docs-old/ko/agenteye/evaluations.mdx +50 -0
- package/.next/standalone/docs-old/ko/agenteye/evaluator-skill.mdx +167 -0
- package/.next/standalone/docs-old/ko/agenteye/event-stream.mdx +50 -0
- package/.next/standalone/docs-old/ko/agenteye/hermes-capture.mdx +53 -0
- package/.next/standalone/docs-old/ko/agenteye/incidents.mdx +50 -0
- package/.next/standalone/docs-old/ko/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/ko/agenteye/openclaw-capture.mdx +49 -0
- package/.next/standalone/docs-old/ko/agenteye/overview.mdx +108 -0
- package/.next/standalone/docs-old/ko/agenteye/python-sdk-skill.mdx +130 -0
- package/.next/standalone/docs-old/ko/agenteye/python-sdk.mdx +433 -0
- package/.next/standalone/docs-old/ko/agenteye/queries.mdx +56 -0
- package/.next/standalone/docs-old/ko/agenteye/security.mdx +68 -0
- package/.next/standalone/docs-old/ko/agenteye/sessions.mdx +57 -0
- package/.next/standalone/docs-old/ko/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/ko/architecture.mdx +332 -0
- package/.next/standalone/docs-old/ko/built-in-policies.mdx +854 -0
- package/.next/standalone/docs-old/ko/cli/audit.mdx +131 -0
- package/.next/standalone/docs-old/ko/cli/dashboard.mdx +29 -0
- package/.next/standalone/docs-old/ko/cli/environment-variables.mdx +66 -0
- package/.next/standalone/docs-old/ko/cli/hook.mdx +30 -0
- package/.next/standalone/docs-old/ko/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/ko/cli/list-policies.mdx +31 -0
- package/.next/standalone/docs-old/ko/cli/migrate.mdx +86 -0
- package/.next/standalone/docs-old/ko/cli/remove-policies.mdx +43 -0
- package/.next/standalone/docs-old/ko/cli/update.mdx +64 -0
- package/.next/standalone/docs-old/ko/cli/version.mdx +12 -0
- package/.next/standalone/docs-old/ko/configuration.mdx +267 -0
- package/.next/standalone/docs-old/ko/custom-policies.mdx +358 -0
- package/.next/standalone/docs-old/ko/dashboard.mdx +151 -0
- package/.next/standalone/docs-old/ko/examples.mdx +307 -0
- package/.next/standalone/docs-old/ko/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/ko/getting-started.mdx +199 -0
- package/.next/standalone/docs-old/ko/introduction.mdx +57 -0
- package/.next/standalone/docs-old/ko/package-aliases.mdx +82 -0
- package/.next/standalone/docs-old/ko/testing.mdx +260 -0
- package/.next/standalone/docs-old/logo/Failproof_AI_logo.png +0 -0
- package/.next/standalone/docs-old/logo/Failproof_AI_logo_light.png +0 -0
- package/.next/standalone/docs-old/package-aliases.mdx +82 -0
- package/.next/standalone/docs-old/pt-br/agenteye/alerts.mdx +63 -0
- package/.next/standalone/docs-old/pt-br/agenteye/api-keys.mdx +280 -0
- package/.next/standalone/docs-old/pt-br/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/pt-br/agenteye/audits.mdx +54 -0
- package/.next/standalone/docs-old/pt-br/agenteye/cli-and-agents.mdx +80 -0
- package/.next/standalone/docs-old/pt-br/agenteye/cli-recipes.mdx +179 -0
- package/.next/standalone/docs-old/pt-br/agenteye/cli-skill.mdx +159 -0
- package/.next/standalone/docs-old/pt-br/agenteye/cli.mdx +350 -0
- package/.next/standalone/docs-old/pt-br/agenteye/codex-capture.mdx +55 -0
- package/.next/standalone/docs-old/pt-br/agenteye/concepts.mdx +87 -0
- package/.next/standalone/docs-old/pt-br/agenteye/dashboards.mdx +45 -0
- package/.next/standalone/docs-old/pt-br/agenteye/error-tracking.mdx +40 -0
- package/.next/standalone/docs-old/pt-br/agenteye/evaluation-suite.mdx +401 -0
- package/.next/standalone/docs-old/pt-br/agenteye/evaluations.mdx +51 -0
- package/.next/standalone/docs-old/pt-br/agenteye/evaluator-skill.mdx +167 -0
- package/.next/standalone/docs-old/pt-br/agenteye/event-stream.mdx +50 -0
- package/.next/standalone/docs-old/pt-br/agenteye/hermes-capture.mdx +53 -0
- package/.next/standalone/docs-old/pt-br/agenteye/incidents.mdx +50 -0
- package/.next/standalone/docs-old/pt-br/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/pt-br/agenteye/openclaw-capture.mdx +49 -0
- package/.next/standalone/docs-old/pt-br/agenteye/overview.mdx +108 -0
- package/.next/standalone/docs-old/pt-br/agenteye/python-sdk-skill.mdx +136 -0
- package/.next/standalone/docs-old/pt-br/agenteye/python-sdk.mdx +436 -0
- package/.next/standalone/docs-old/pt-br/agenteye/queries.mdx +56 -0
- package/.next/standalone/docs-old/pt-br/agenteye/security.mdx +68 -0
- package/.next/standalone/docs-old/pt-br/agenteye/sessions.mdx +56 -0
- package/.next/standalone/docs-old/pt-br/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/pt-br/architecture.mdx +332 -0
- package/.next/standalone/docs-old/pt-br/built-in-policies.mdx +858 -0
- package/.next/standalone/docs-old/pt-br/cli/audit.mdx +132 -0
- package/.next/standalone/docs-old/pt-br/cli/dashboard.mdx +29 -0
- package/.next/standalone/docs-old/pt-br/cli/environment-variables.mdx +72 -0
- package/.next/standalone/docs-old/pt-br/cli/hook.mdx +30 -0
- package/.next/standalone/docs-old/pt-br/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/pt-br/cli/list-policies.mdx +31 -0
- package/.next/standalone/docs-old/pt-br/cli/migrate.mdx +86 -0
- package/.next/standalone/docs-old/pt-br/cli/remove-policies.mdx +43 -0
- package/.next/standalone/docs-old/pt-br/cli/update.mdx +64 -0
- package/.next/standalone/docs-old/pt-br/cli/version.mdx +12 -0
- package/.next/standalone/docs-old/pt-br/configuration.mdx +268 -0
- package/.next/standalone/docs-old/pt-br/custom-policies.mdx +358 -0
- package/.next/standalone/docs-old/pt-br/dashboard.mdx +151 -0
- package/.next/standalone/docs-old/pt-br/examples.mdx +307 -0
- package/.next/standalone/docs-old/pt-br/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/pt-br/getting-started.mdx +199 -0
- package/.next/standalone/docs-old/pt-br/introduction.mdx +57 -0
- package/.next/standalone/docs-old/pt-br/package-aliases.mdx +82 -0
- package/.next/standalone/docs-old/pt-br/testing.mdx +260 -0
- package/.next/standalone/docs-old/ru/agenteye/alerts.mdx +63 -0
- package/.next/standalone/docs-old/ru/agenteye/api-keys.mdx +280 -0
- package/.next/standalone/docs-old/ru/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/ru/agenteye/audits.mdx +54 -0
- package/.next/standalone/docs-old/ru/agenteye/cli-and-agents.mdx +80 -0
- package/.next/standalone/docs-old/ru/agenteye/cli-recipes.mdx +179 -0
- package/.next/standalone/docs-old/ru/agenteye/cli-skill.mdx +159 -0
- package/.next/standalone/docs-old/ru/agenteye/cli.mdx +350 -0
- package/.next/standalone/docs-old/ru/agenteye/codex-capture.mdx +55 -0
- package/.next/standalone/docs-old/ru/agenteye/concepts.mdx +87 -0
- package/.next/standalone/docs-old/ru/agenteye/dashboards.mdx +46 -0
- package/.next/standalone/docs-old/ru/agenteye/error-tracking.mdx +41 -0
- package/.next/standalone/docs-old/ru/agenteye/evaluation-suite.mdx +401 -0
- package/.next/standalone/docs-old/ru/agenteye/evaluations.mdx +51 -0
- package/.next/standalone/docs-old/ru/agenteye/evaluator-skill.mdx +171 -0
- package/.next/standalone/docs-old/ru/agenteye/event-stream.mdx +51 -0
- package/.next/standalone/docs-old/ru/agenteye/hermes-capture.mdx +53 -0
- package/.next/standalone/docs-old/ru/agenteye/incidents.mdx +50 -0
- package/.next/standalone/docs-old/ru/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/ru/agenteye/openclaw-capture.mdx +49 -0
- package/.next/standalone/docs-old/ru/agenteye/overview.mdx +107 -0
- package/.next/standalone/docs-old/ru/agenteye/python-sdk-skill.mdx +131 -0
- package/.next/standalone/docs-old/ru/agenteye/python-sdk.mdx +437 -0
- package/.next/standalone/docs-old/ru/agenteye/queries.mdx +56 -0
- package/.next/standalone/docs-old/ru/agenteye/security.mdx +68 -0
- package/.next/standalone/docs-old/ru/agenteye/sessions.mdx +57 -0
- package/.next/standalone/docs-old/ru/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/ru/architecture.mdx +333 -0
- package/.next/standalone/docs-old/ru/built-in-policies.mdx +853 -0
- package/.next/standalone/docs-old/ru/cli/audit.mdx +132 -0
- package/.next/standalone/docs-old/ru/cli/dashboard.mdx +29 -0
- package/.next/standalone/docs-old/ru/cli/environment-variables.mdx +72 -0
- package/.next/standalone/docs-old/ru/cli/hook.mdx +30 -0
- package/.next/standalone/docs-old/ru/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/ru/cli/list-policies.mdx +31 -0
- package/.next/standalone/docs-old/ru/cli/migrate.mdx +91 -0
- package/.next/standalone/docs-old/ru/cli/remove-policies.mdx +44 -0
- package/.next/standalone/docs-old/ru/cli/update.mdx +64 -0
- package/.next/standalone/docs-old/ru/cli/version.mdx +12 -0
- package/.next/standalone/docs-old/ru/configuration.mdx +269 -0
- package/.next/standalone/docs-old/ru/custom-policies.mdx +358 -0
- package/.next/standalone/docs-old/ru/dashboard.mdx +155 -0
- package/.next/standalone/docs-old/ru/examples.mdx +307 -0
- package/.next/standalone/docs-old/ru/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/ru/getting-started.mdx +199 -0
- package/.next/standalone/docs-old/ru/introduction.mdx +58 -0
- package/.next/standalone/docs-old/ru/package-aliases.mdx +82 -0
- package/.next/standalone/docs-old/ru/testing.mdx +260 -0
- package/.next/standalone/docs-old/styles/config/vocabularies/Mintlify/accept.txt +52 -0
- package/.next/standalone/docs-old/superpowers/specs/2026-06-11-audit-poster-restructure-design.md +332 -0
- package/.next/standalone/docs-old/testing.mdx +260 -0
- package/.next/standalone/docs-old/tr/agenteye/alerts.mdx +63 -0
- package/.next/standalone/docs-old/tr/agenteye/api-keys.mdx +279 -0
- package/.next/standalone/docs-old/tr/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/tr/agenteye/audits.mdx +54 -0
- package/.next/standalone/docs-old/tr/agenteye/cli-and-agents.mdx +80 -0
- package/.next/standalone/docs-old/tr/agenteye/cli-recipes.mdx +179 -0
- package/.next/standalone/docs-old/tr/agenteye/cli-skill.mdx +161 -0
- package/.next/standalone/docs-old/tr/agenteye/cli.mdx +350 -0
- package/.next/standalone/docs-old/tr/agenteye/codex-capture.mdx +56 -0
- package/.next/standalone/docs-old/tr/agenteye/concepts.mdx +87 -0
- package/.next/standalone/docs-old/tr/agenteye/dashboards.mdx +46 -0
- package/.next/standalone/docs-old/tr/agenteye/error-tracking.mdx +41 -0
- package/.next/standalone/docs-old/tr/agenteye/evaluation-suite.mdx +299 -0
- package/.next/standalone/docs-old/tr/agenteye/evaluations.mdx +51 -0
- package/.next/standalone/docs-old/tr/agenteye/evaluator-skill.mdx +167 -0
- package/.next/standalone/docs-old/tr/agenteye/event-stream.mdx +50 -0
- package/.next/standalone/docs-old/tr/agenteye/hermes-capture.mdx +53 -0
- package/.next/standalone/docs-old/tr/agenteye/incidents.mdx +50 -0
- package/.next/standalone/docs-old/tr/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/tr/agenteye/openclaw-capture.mdx +50 -0
- package/.next/standalone/docs-old/tr/agenteye/overview.mdx +107 -0
- package/.next/standalone/docs-old/tr/agenteye/python-sdk-skill.mdx +130 -0
- package/.next/standalone/docs-old/tr/agenteye/python-sdk.mdx +436 -0
- package/.next/standalone/docs-old/tr/agenteye/queries.mdx +55 -0
- package/.next/standalone/docs-old/tr/agenteye/security.mdx +69 -0
- package/.next/standalone/docs-old/tr/agenteye/sessions.mdx +57 -0
- package/.next/standalone/docs-old/tr/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/tr/architecture.mdx +332 -0
- package/.next/standalone/docs-old/tr/built-in-policies.mdx +848 -0
- package/.next/standalone/docs-old/tr/cli/audit.mdx +117 -0
- package/.next/standalone/docs-old/tr/cli/dashboard.mdx +29 -0
- package/.next/standalone/docs-old/tr/cli/environment-variables.mdx +65 -0
- package/.next/standalone/docs-old/tr/cli/hook.mdx +31 -0
- package/.next/standalone/docs-old/tr/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/tr/cli/list-policies.mdx +31 -0
- package/.next/standalone/docs-old/tr/cli/migrate.mdx +87 -0
- package/.next/standalone/docs-old/tr/cli/remove-policies.mdx +43 -0
- package/.next/standalone/docs-old/tr/cli/update.mdx +88 -0
- package/.next/standalone/docs-old/tr/cli/version.mdx +12 -0
- package/.next/standalone/docs-old/tr/configuration.mdx +268 -0
- package/.next/standalone/docs-old/tr/custom-policies.mdx +358 -0
- package/.next/standalone/docs-old/tr/dashboard.mdx +152 -0
- package/.next/standalone/docs-old/tr/examples.mdx +307 -0
- package/.next/standalone/docs-old/tr/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/tr/getting-started.mdx +199 -0
- package/.next/standalone/docs-old/tr/introduction.mdx +57 -0
- package/.next/standalone/docs-old/tr/package-aliases.mdx +82 -0
- package/.next/standalone/docs-old/tr/testing.mdx +261 -0
- package/.next/standalone/docs-old/vi/agenteye/alerts.mdx +63 -0
- package/.next/standalone/docs-old/vi/agenteye/api-keys.mdx +280 -0
- package/.next/standalone/docs-old/vi/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/vi/agenteye/audits.mdx +54 -0
- package/.next/standalone/docs-old/vi/agenteye/cli-and-agents.mdx +80 -0
- package/.next/standalone/docs-old/vi/agenteye/cli-recipes.mdx +178 -0
- package/.next/standalone/docs-old/vi/agenteye/cli-skill.mdx +159 -0
- package/.next/standalone/docs-old/vi/agenteye/cli.mdx +349 -0
- package/.next/standalone/docs-old/vi/agenteye/codex-capture.mdx +55 -0
- package/.next/standalone/docs-old/vi/agenteye/concepts.mdx +88 -0
- package/.next/standalone/docs-old/vi/agenteye/dashboards.mdx +46 -0
- package/.next/standalone/docs-old/vi/agenteye/error-tracking.mdx +41 -0
- package/.next/standalone/docs-old/vi/agenteye/evaluation-suite.mdx +300 -0
- package/.next/standalone/docs-old/vi/agenteye/evaluations.mdx +51 -0
- package/.next/standalone/docs-old/vi/agenteye/evaluator-skill.mdx +171 -0
- package/.next/standalone/docs-old/vi/agenteye/event-stream.mdx +50 -0
- package/.next/standalone/docs-old/vi/agenteye/hermes-capture.mdx +53 -0
- package/.next/standalone/docs-old/vi/agenteye/incidents.mdx +50 -0
- package/.next/standalone/docs-old/vi/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/vi/agenteye/openclaw-capture.mdx +49 -0
- package/.next/standalone/docs-old/vi/agenteye/overview.mdx +109 -0
- package/.next/standalone/docs-old/vi/agenteye/python-sdk-skill.mdx +131 -0
- package/.next/standalone/docs-old/vi/agenteye/python-sdk.mdx +433 -0
- package/.next/standalone/docs-old/vi/agenteye/queries.mdx +55 -0
- package/.next/standalone/docs-old/vi/agenteye/security.mdx +68 -0
- package/.next/standalone/docs-old/vi/agenteye/sessions.mdx +57 -0
- package/.next/standalone/docs-old/vi/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/vi/architecture.mdx +332 -0
- package/.next/standalone/docs-old/vi/built-in-policies.mdx +853 -0
- package/.next/standalone/docs-old/vi/cli/audit.mdx +120 -0
- package/.next/standalone/docs-old/vi/cli/dashboard.mdx +29 -0
- package/.next/standalone/docs-old/vi/cli/environment-variables.mdx +69 -0
- package/.next/standalone/docs-old/vi/cli/hook.mdx +30 -0
- package/.next/standalone/docs-old/vi/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/vi/cli/list-policies.mdx +32 -0
- package/.next/standalone/docs-old/vi/cli/migrate.mdx +122 -0
- package/.next/standalone/docs-old/vi/cli/remove-policies.mdx +43 -0
- package/.next/standalone/docs-old/vi/cli/update.mdx +95 -0
- package/.next/standalone/docs-old/vi/cli/version.mdx +12 -0
- package/.next/standalone/docs-old/vi/configuration.mdx +268 -0
- package/.next/standalone/docs-old/vi/custom-policies.mdx +358 -0
- package/.next/standalone/docs-old/vi/dashboard.mdx +151 -0
- package/.next/standalone/docs-old/vi/examples.mdx +308 -0
- package/.next/standalone/docs-old/vi/for-agents.mdx +39 -0
- package/.next/standalone/docs-old/vi/getting-started.mdx +200 -0
- package/.next/standalone/docs-old/vi/introduction.mdx +57 -0
- package/.next/standalone/docs-old/vi/package-aliases.mdx +83 -0
- package/.next/standalone/docs-old/vi/testing.mdx +261 -0
- package/.next/standalone/docs-old/zh/agenteye/alerts.mdx +63 -0
- package/.next/standalone/docs-old/zh/agenteye/api-keys.mdx +280 -0
- package/.next/standalone/docs-old/zh/agenteye/assistant.mdx +63 -0
- package/.next/standalone/docs-old/zh/agenteye/audits.mdx +54 -0
- package/.next/standalone/docs-old/zh/agenteye/cli-and-agents.mdx +79 -0
- package/.next/standalone/docs-old/zh/agenteye/cli-recipes.mdx +179 -0
- package/.next/standalone/docs-old/zh/agenteye/cli-skill.mdx +159 -0
- package/.next/standalone/docs-old/zh/agenteye/cli.mdx +350 -0
- package/.next/standalone/docs-old/zh/agenteye/codex-capture.mdx +55 -0
- package/.next/standalone/docs-old/zh/agenteye/concepts.mdx +87 -0
- package/.next/standalone/docs-old/zh/agenteye/dashboards.mdx +46 -0
- package/.next/standalone/docs-old/zh/agenteye/error-tracking.mdx +40 -0
- package/.next/standalone/docs-old/zh/agenteye/evaluation-suite.mdx +300 -0
- package/.next/standalone/docs-old/zh/agenteye/evaluations.mdx +51 -0
- package/.next/standalone/docs-old/zh/agenteye/evaluator-skill.mdx +167 -0
- package/.next/standalone/docs-old/zh/agenteye/event-stream.mdx +50 -0
- package/.next/standalone/docs-old/zh/agenteye/hermes-capture.mdx +53 -0
- package/.next/standalone/docs-old/zh/agenteye/incidents.mdx +50 -0
- package/.next/standalone/docs-old/zh/agenteye/observability.mdx +23 -0
- package/.next/standalone/docs-old/zh/agenteye/openclaw-capture.mdx +49 -0
- package/.next/standalone/docs-old/zh/agenteye/overview.mdx +108 -0
- package/.next/standalone/docs-old/zh/agenteye/python-sdk-skill.mdx +131 -0
- package/.next/standalone/docs-old/zh/agenteye/python-sdk.mdx +433 -0
- package/.next/standalone/docs-old/zh/agenteye/queries.mdx +56 -0
- package/.next/standalone/docs-old/zh/agenteye/security.mdx +68 -0
- package/.next/standalone/docs-old/zh/agenteye/sessions.mdx +56 -0
- package/.next/standalone/docs-old/zh/agenteye/telemetry.mdx +52 -0
- package/.next/standalone/docs-old/zh/architecture.mdx +332 -0
- package/.next/standalone/docs-old/zh/built-in-policies.mdx +850 -0
- package/.next/standalone/docs-old/zh/cli/audit.mdx +115 -0
- package/.next/standalone/docs-old/zh/cli/dashboard.mdx +29 -0
- package/.next/standalone/docs-old/zh/cli/environment-variables.mdx +62 -0
- package/.next/standalone/docs-old/zh/cli/hook.mdx +30 -0
- package/.next/standalone/docs-old/zh/cli/install-policies.mdx +57 -0
- package/.next/standalone/docs-old/zh/cli/list-policies.mdx +31 -0
- package/.next/standalone/docs-old/zh/cli/migrate.mdx +86 -0
- package/.next/standalone/docs-old/zh/cli/remove-policies.mdx +43 -0
- package/.next/standalone/docs-old/zh/cli/update.mdx +65 -0
- package/.next/standalone/docs-old/zh/cli/version.mdx +12 -0
- package/.next/standalone/docs-old/zh/configuration.mdx +266 -0
- package/.next/standalone/docs-old/zh/custom-policies.mdx +358 -0
- package/.next/standalone/docs-old/zh/dashboard.mdx +151 -0
- package/.next/standalone/docs-old/zh/examples.mdx +307 -0
- package/.next/standalone/docs-old/zh/for-agents.mdx +38 -0
- package/.next/standalone/docs-old/zh/getting-started.mdx +199 -0
- package/.next/standalone/docs-old/zh/introduction.mdx +57 -0
- package/.next/standalone/docs-old/zh/package-aliases.mdx +82 -0
- package/.next/standalone/docs-old/zh/testing.mdx +260 -0
- package/.next/standalone/lib/telemetry.ts +45 -40
- package/.next/standalone/node_modules/@next/env/package.json +1 -1
- package/.next/standalone/node_modules/@swc/helpers/esm/_interop_require_default.js +4 -0
- package/.next/standalone/node_modules/@swc/helpers/esm/_interop_require_wildcard.js +36 -0
- package/.next/standalone/node_modules/@swc/helpers/package.json +703 -469
- package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js +8 -6
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/ppr-navigations.js +26 -20
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js +2 -1
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js +5 -2
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js +2 -1
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js +3 -1
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/cache.js +150 -169
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js +16 -54
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/navigation.js +115 -23
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/optimistic-routes.js +61 -6
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/scheduler.js +53 -36
- package/.next/standalone/node_modules/next/dist/client/route-params.js +4 -8
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +26 -26
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +26 -26
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +2 -2
- package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +9 -9
- package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
- package/.next/standalone/node_modules/next/dist/lib/turbopack-cache-seed.js +15 -7
- package/.next/standalone/node_modules/next/dist/server/app-render/app-render.js +2 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/dev-validation-worker-snapshot.js +2 -1
- package/.next/standalone/node_modules/next/dist/server/async-storage/request-store.js +29 -20
- package/.next/standalone/node_modules/next/dist/server/async-storage/work-store.js +1 -0
- package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/dev/dev-validation-worker-pool.js +90 -11
- package/.next/standalone/node_modules/next/dist/server/dev/dev-validation-worker.js +51 -9
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +24 -4
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/dev/use-cache-probe-worker.js +1 -0
- package/.next/standalone/node_modules/next/dist/server/image-optimizer.js +1 -0
- package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/encode-header-safe.js +44 -0
- package/.next/standalone/node_modules/next/dist/server/lib/implicit-tags.js +3 -3
- package/.next/standalone/node_modules/next/dist/server/lib/patch-fetch.js +2 -2
- package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/use-cache/handlers.js +14 -0
- package/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-probe-scheduler.js +2 -1
- package/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +100 -31
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/adapters/headers.js +88 -2
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/revalidate.js +12 -5
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/unstable-cache.js +13 -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 +11 -11
- package/.next/standalone/package.json +10 -10
- package/.next/standalone/server.js +1 -1
- package/README.md +11 -11
- package/dist/cli.mjs +81 -101
- package/dist/worker.mjs +1 -1
- package/lib/telemetry.ts +45 -40
- package/package.json +10 -10
- package/scripts/release-announcement.mjs +686 -0
- package/scripts/translate-docs/config.ts +19 -1
- package/src/audit/cli.ts +64 -49
- package/src/hooks/hook-telemetry.ts +3 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g2rg69._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0m98kzy._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0v5_91z._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1-a3135._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1e5g_ur._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1hmqefd._.js +0 -4
- package/.next/standalone/.next/server/chunks/ssr/_1nq-35m._.js +0 -23
- package/.next/standalone/.next/server/chunks/ssr/node_modules_1j2z5jb._.js +0 -3
- package/.next/standalone/.next/static/chunks/00q6cfzuzpc85.js +0 -1
- package/.next/standalone/.next/static/chunks/13--2yvqek_s1.js +0 -1
- package/.next/standalone/.next/static/chunks/18fqy3doo2ial.js +0 -6
- package/.next/standalone/.next/static/chunks/2ts65czrjjd_k.js +0 -31
- package/.next/standalone/.next/static/chunks/31orv9uidm1fn.js +0 -22
- package/.next/standalone/.next/static/chunks/3peix2vxzj7eh.js +0 -1
- package/.next/standalone/node_modules/next/dist/server/lib/encode-cache-tag.js +0 -45
- /package/.next/standalone/.next/static/{jSKB7CQQSNTX-uSbY2bUs → ZklXxyA5ygsWSQz2u_zii}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{jSKB7CQQSNTX-uSbY2bUs → ZklXxyA5ygsWSQz2u_zii}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{jSKB7CQQSNTX-uSbY2bUs → ZklXxyA5ygsWSQz2u_zii}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,686 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the Discord webhook payload for a STABLE release.
|
|
3
|
+
*
|
|
4
|
+
* Called by the `announce` job in `.github/workflows/publish.yml`, after the
|
|
5
|
+
* registry check and the four `verify-install` legs have proved the release is
|
|
6
|
+
* real.
|
|
7
|
+
*
|
|
8
|
+
* **The GitHub Release body is the source of record; CHANGELOG.md is the
|
|
9
|
+
* fallback.** Stable releases are cut from the GitHub Releases page, and the
|
|
10
|
+
* notes written there are what the maintainer decided this release says —
|
|
11
|
+
* chosen for an audience, ordered on purpose, sometimes rewritten from the
|
|
12
|
+
* changelog entirely. Announcing from CHANGELOG.md instead would publish a
|
|
13
|
+
* DIFFERENT summary than the one on the release page, in the channel where more
|
|
14
|
+
* people read it. So the body wins whenever there is one, and the changelog
|
|
15
|
+
* covers the two cases where there is not: an empty release body, and a
|
|
16
|
+
* `workflow_dispatch` build, which has no release event at all.
|
|
17
|
+
*
|
|
18
|
+
* Three other things are load-bearing and easy to get wrong:
|
|
19
|
+
*
|
|
20
|
+
* **From the changelog, a stable release carries its whole beta line.** Somebody
|
|
21
|
+
* on `latest` moving 1.0.0 -> 1.0.1 receives everything that shipped across
|
|
22
|
+
* `1.0.1-beta.*` as well as whatever the release commit itself carried, and the
|
|
23
|
+
* `## 1.0.1` section deliberately does NOT restate it ("Everything below this
|
|
24
|
+
* heading shipped across the `1.0.0-beta.*` line" — the 1.0.0 section says so
|
|
25
|
+
* in as many words). Announcing only the stable section would describe a
|
|
26
|
+
* release as a handful of entries when it is forty, so `collectRelease` gathers
|
|
27
|
+
* `## <version>` and every `## <version>-*` section under it and merges them.
|
|
28
|
+
*
|
|
29
|
+
* **Only the first sentence of an entry survives.** This changelog's entries are
|
|
30
|
+
* paragraphs — several are over 2000 characters, which is the entire Discord
|
|
31
|
+
* message limit on its own. The first sentence is written as a headline in
|
|
32
|
+
* every entry in the file, so it is the one summary already there rather than
|
|
33
|
+
* one this script invents. GitHub's own generated notes are one PR title per
|
|
34
|
+
* bullet, so the same pass leaves them untouched.
|
|
35
|
+
*
|
|
36
|
+
* **The mention goes in `content`, never in the embed.** Discord does not
|
|
37
|
+
* resolve mentions inside embeds — a `<@&id>` there renders as the raw string
|
|
38
|
+
* and pings nobody. Paired with `allowed_mentions: {parse: [], roles: [id]}`
|
|
39
|
+
* so that the release role is the ONLY thing that can be pinged: release notes
|
|
40
|
+
* reach the embed unescaped, and `parse: []` is what stops an `@everyone` in
|
|
41
|
+
* them from becoming one.
|
|
42
|
+
*/
|
|
43
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
44
|
+
import { resolve, dirname } from "node:path";
|
|
45
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
46
|
+
|
|
47
|
+
const REPO_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
48
|
+
|
|
49
|
+
/** The brand pink — `HUES.pink` in `src/hooks/tui.ts`, as Discord's integer. */
|
|
50
|
+
export const BRAND_COLOR = 0xff2e88;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Entries under these headings are left out of the embed. A notification is
|
|
54
|
+
* not the changelog; it links to it. Dependency bumps are the one category
|
|
55
|
+
* nobody reads a release announcement for, and they routinely outnumber
|
|
56
|
+
* everything else. `collectRelease` still counts them, so the "+N more" line
|
|
57
|
+
* stays honest, and a release that is ONLY dependency bumps falls back to
|
|
58
|
+
* showing them rather than announcing nothing.
|
|
59
|
+
*/
|
|
60
|
+
const DEPRIORITIZED_GROUPS = new Set(["dependencies"]);
|
|
61
|
+
|
|
62
|
+
/** Highlights shown per heading before the rest collapse into a "+N more". */
|
|
63
|
+
const MAX_ENTRIES_PER_GROUP = 6;
|
|
64
|
+
|
|
65
|
+
/** A headline longer than this is cut at a word boundary. */
|
|
66
|
+
const MAX_HEADLINE = 180;
|
|
67
|
+
|
|
68
|
+
/** How much of a stable section's prose preamble reaches the embed. */
|
|
69
|
+
const MAX_LEAD = 600;
|
|
70
|
+
|
|
71
|
+
// Discord's documented maxima. Exceeding any one of them is a 400 from the
|
|
72
|
+
// webhook, i.e. a release that publishes fine and announces nothing.
|
|
73
|
+
const LIMIT_CONTENT = 2000;
|
|
74
|
+
const LIMIT_DESCRIPTION = 4096;
|
|
75
|
+
const LIMIT_FIELD_VALUE = 1024;
|
|
76
|
+
const LIMIT_TITLE = 256;
|
|
77
|
+
const LIMIT_EMBED_TOTAL = 6000;
|
|
78
|
+
|
|
79
|
+
// ── Changelog parsing ───────────────────────────────────────────────────────
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Split `CHANGELOG.md` into `## <version> — <date>` sections.
|
|
83
|
+
*
|
|
84
|
+
* The separator is matched as em dash, en dash or hyphen because the file is
|
|
85
|
+
* hand-written and a heading is exactly the kind of line where that slips. The
|
|
86
|
+
* date is optional for the same reason: a heading with no date is still a
|
|
87
|
+
* release, and refusing to parse it would take the announcement down over
|
|
88
|
+
* punctuation.
|
|
89
|
+
*
|
|
90
|
+
* Sections are returned in FILE order (newest first) and duplicate versions are
|
|
91
|
+
* kept as separate sections — the file genuinely carries two `## 1.0.0-beta.13`
|
|
92
|
+
* headings and two `## 1.0.0-beta.15` headings, and dropping either would drop
|
|
93
|
+
* real entries. `collectRelease` merges them.
|
|
94
|
+
*/
|
|
95
|
+
export function parseChangelog(text) {
|
|
96
|
+
const lines = String(text).split(/\r?\n/);
|
|
97
|
+
const sections = [];
|
|
98
|
+
let current = null;
|
|
99
|
+
|
|
100
|
+
for (const line of lines) {
|
|
101
|
+
const heading = /^##\s+(\S+)\s*(?:[—–-]\s*(.*))?$/.exec(line);
|
|
102
|
+
if (heading) {
|
|
103
|
+
current = { version: heading[1], date: (heading[2] ?? "").trim(), body: [] };
|
|
104
|
+
sections.push(current);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (current) current.body.push(line);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return sections.map((s) => ({ ...s, body: s.body.join("\n") }));
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Split a section body into `### <name>` groups plus any prose that precedes
|
|
115
|
+
* the first one.
|
|
116
|
+
*
|
|
117
|
+
* Bullets are joined across continuation lines: an entry runs until the next
|
|
118
|
+
* line that starts a new bullet or a new heading. Every entry in this file is
|
|
119
|
+
* currently one long line, which is exactly why a wrapped one would otherwise
|
|
120
|
+
* be silently truncated at the wrap.
|
|
121
|
+
*/
|
|
122
|
+
export function parseSectionBody(body) {
|
|
123
|
+
const lines = String(body).split(/\r?\n/);
|
|
124
|
+
const lead = [];
|
|
125
|
+
const groups = [];
|
|
126
|
+
let group = null;
|
|
127
|
+
let entry = null;
|
|
128
|
+
|
|
129
|
+
const flush = () => {
|
|
130
|
+
if (entry !== null && group) group.entries.push(entry.join(" ").trim());
|
|
131
|
+
entry = null;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
for (const line of lines) {
|
|
135
|
+
const heading = /^###\s+(.+?)\s*$/.exec(line);
|
|
136
|
+
if (heading) {
|
|
137
|
+
flush();
|
|
138
|
+
group = { name: heading[1], entries: [] };
|
|
139
|
+
groups.push(group);
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const bullet = /^[-*]\s+(.*)$/.exec(line);
|
|
144
|
+
if (bullet && group) {
|
|
145
|
+
flush();
|
|
146
|
+
entry = [bullet[1]];
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (entry !== null) {
|
|
151
|
+
// A blank line ends an entry; anything else continues it.
|
|
152
|
+
if (line.trim() === "") flush();
|
|
153
|
+
else entry.push(line.trim());
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if (!group) lead.push(line);
|
|
158
|
+
}
|
|
159
|
+
flush();
|
|
160
|
+
|
|
161
|
+
return { lead: lead.join("\n").trim(), groups };
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Gather the stable section for `version` plus every prerelease section under
|
|
166
|
+
* it, merging groups of the same name.
|
|
167
|
+
*
|
|
168
|
+
* Merging by name is not tidiness: `1.0.1-beta.2` carries TWO `### Fixes`
|
|
169
|
+
* headings, so keying on the heading text is what keeps the second one's
|
|
170
|
+
* entries from replacing the first one's — and what keeps `Fixes` from
|
|
171
|
+
* appearing twice in the embed.
|
|
172
|
+
*
|
|
173
|
+
* Only the stable section's prose preamble is kept. A beta's preamble is
|
|
174
|
+
* written for people tracking betas, and stacking four of them would bury the
|
|
175
|
+
* entries.
|
|
176
|
+
*/
|
|
177
|
+
export function collectRelease(changelogText, version) {
|
|
178
|
+
const sections = parseChangelog(changelogText);
|
|
179
|
+
const mine = sections.filter((s) => s.version === version || s.version.startsWith(`${version}-`));
|
|
180
|
+
if (mine.length === 0) return null;
|
|
181
|
+
|
|
182
|
+
const byName = new Map();
|
|
183
|
+
let lead = "";
|
|
184
|
+
let date = "";
|
|
185
|
+
|
|
186
|
+
for (const section of mine) {
|
|
187
|
+
const parsed = parseSectionBody(section.body);
|
|
188
|
+
if (section.version === version) {
|
|
189
|
+
if (!lead) lead = parsed.lead;
|
|
190
|
+
if (!date) date = section.date;
|
|
191
|
+
}
|
|
192
|
+
for (const group of parsed.groups) {
|
|
193
|
+
const key = group.name.trim().toLowerCase();
|
|
194
|
+
if (!byName.has(key)) byName.set(key, { name: group.name.trim(), entries: [] });
|
|
195
|
+
byName.get(key).entries.push(...group.entries);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
const groups = [...byName.values()].map((g) => ({
|
|
200
|
+
name: g.name,
|
|
201
|
+
entries: g.entries.map(summarizeEntry),
|
|
202
|
+
}));
|
|
203
|
+
|
|
204
|
+
return {
|
|
205
|
+
version,
|
|
206
|
+
date,
|
|
207
|
+
lead,
|
|
208
|
+
groups,
|
|
209
|
+
total: groups.reduce((n, g) => n + g.entries.length, 0),
|
|
210
|
+
sections: mine.map((s) => s.version),
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* A GitHub Release body -> the same `{lead, groups, total}` shape a changelog
|
|
216
|
+
* section produces, so everything downstream is source-agnostic.
|
|
217
|
+
*
|
|
218
|
+
* Two shapes arrive here and both have to work:
|
|
219
|
+
*
|
|
220
|
+
* * **GitHub's generated notes** — `## What's Changed`, then one
|
|
221
|
+
* `* <PR title> by @someone in <pull url>` per merged PR, then a
|
|
222
|
+
* `**Full Changelog**: <compare url>` line. The trailing attribution is
|
|
223
|
+
* stripped and the pull URL becomes the `#NNN` link, because "by @x in
|
|
224
|
+
* https://github.com/…/pull/123" is 60 characters of noise per line in a
|
|
225
|
+
* message with a 4096-character budget.
|
|
226
|
+
*
|
|
227
|
+
* * **Hand-written notes** — arbitrary markdown, usually `###` sections with
|
|
228
|
+
* `-` bullets, which is the changelog's own shape.
|
|
229
|
+
*
|
|
230
|
+
* Notes with no headings at all are still notes: their bullets land in one
|
|
231
|
+
* unnamed group rather than being dropped, and prose with no bullets at all
|
|
232
|
+
* becomes the lead. The empty case returns null so the caller can fall back.
|
|
233
|
+
*/
|
|
234
|
+
export function parseReleaseBody(text) {
|
|
235
|
+
const body = String(text ?? "").trim();
|
|
236
|
+
if (!body) return null;
|
|
237
|
+
|
|
238
|
+
const lead = [];
|
|
239
|
+
const groups = [];
|
|
240
|
+
let group = null;
|
|
241
|
+
let entry = null;
|
|
242
|
+
let compareUrl = null;
|
|
243
|
+
|
|
244
|
+
const flush = () => {
|
|
245
|
+
if (entry !== null) {
|
|
246
|
+
const joined = entry.join(" ").trim();
|
|
247
|
+
if (joined) {
|
|
248
|
+
if (!group) {
|
|
249
|
+
group = { name: "Highlights", entries: [] };
|
|
250
|
+
groups.push(group);
|
|
251
|
+
}
|
|
252
|
+
group.entries.push(joined);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
entry = null;
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
for (const line of body.split(/\r?\n/)) {
|
|
259
|
+
const heading = /^#{2,4}\s+(.+?)\s*$/.exec(line);
|
|
260
|
+
if (heading) {
|
|
261
|
+
flush();
|
|
262
|
+
group = { name: heading[1].replace(/^what's changed$/i, "Changes"), entries: [] };
|
|
263
|
+
groups.push(group);
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// GitHub appends this to every generated body. We render our own link, and
|
|
268
|
+
// a compare URL is a better one than a blob URL when it is offered.
|
|
269
|
+
const full = /^\*{0,2}Full Changelog\*{0,2}:\s*(\S+)\s*$/i.exec(line.trim());
|
|
270
|
+
if (full) {
|
|
271
|
+
flush();
|
|
272
|
+
compareUrl = full[1];
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
const bullet = /^\s*[-*+]\s+(.*)$/.exec(line);
|
|
277
|
+
if (bullet) {
|
|
278
|
+
flush();
|
|
279
|
+
entry = [bullet[1]];
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if (entry !== null) {
|
|
284
|
+
if (line.trim() === "") flush();
|
|
285
|
+
else entry.push(line.trim());
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
if (!group) lead.push(line);
|
|
290
|
+
}
|
|
291
|
+
flush();
|
|
292
|
+
|
|
293
|
+
const parsed = groups
|
|
294
|
+
.map((g) => ({ name: g.name, entries: g.entries.map(summarizeEntry) }))
|
|
295
|
+
.filter((g) => g.entries.length > 0);
|
|
296
|
+
|
|
297
|
+
const leadText = lead.join("\n").trim();
|
|
298
|
+
if (parsed.length === 0 && !leadText) return null;
|
|
299
|
+
|
|
300
|
+
return {
|
|
301
|
+
lead: leadText,
|
|
302
|
+
groups: parsed,
|
|
303
|
+
total: parsed.reduce((n, g) => n + g.entries.length, 0),
|
|
304
|
+
compareUrl,
|
|
305
|
+
sections: ["the GitHub Release body"],
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Pick the source and return the notes, or null when neither has anything.
|
|
311
|
+
* The precedence — release body, then changelog — is the whole point; see the
|
|
312
|
+
* module header.
|
|
313
|
+
*/
|
|
314
|
+
export function chooseNotes({ releaseBody, changelog, version }) {
|
|
315
|
+
return (
|
|
316
|
+
parseReleaseBody(releaseBody) ??
|
|
317
|
+
(changelog ? collectRelease(changelog, version) : null)
|
|
318
|
+
);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// ── Entry summarizing ───────────────────────────────────────────────────────
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Abbreviations whose trailing period does not end a sentence. Without these,
|
|
325
|
+
* "e.g. the daemon" splits after "e.g." and the headline is two words long.
|
|
326
|
+
*/
|
|
327
|
+
const ABBREVIATIONS = new Set(["e.g", "i.e", "cf", "vs", "etc", "approx", "incl", "no", "fig"]);
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* The first sentence of `text`, with inline code spans protected.
|
|
331
|
+
*
|
|
332
|
+
* Periods are everywhere in this changelog that are not sentence ends —
|
|
333
|
+
* `policy-evaluator.ts`, `1.0.15`, `~/.failproofai/run/` — and almost all of
|
|
334
|
+
* them sit inside backticks, so the spans are masked before the search and
|
|
335
|
+
* restored after. What is left is a period (or `!`/`?`) that may be followed by
|
|
336
|
+
* closing emphasis (`**`, `_`, `` ` ``, `)`, `"`), then whitespace, then the
|
|
337
|
+
* start of a new sentence. Entries in this file routinely open with a whole
|
|
338
|
+
* bolded sentence — `**Stop the digest shipping secrets verbatim.**` — which is
|
|
339
|
+
* why the closing markers have to be consumed before the boundary, not after.
|
|
340
|
+
*
|
|
341
|
+
* A candidate boundary that would leave less than `MIN_SENTENCE` characters is
|
|
342
|
+
* skipped: it is nearly always a false positive on an initial or a stray
|
|
343
|
+
* abbreviation, and a six-character headline is worse than a long one. The
|
|
344
|
+
* length is measured on the RESTORED text — an entry opening with a long path
|
|
345
|
+
* in backticks masks down to three characters, and measuring the masked form
|
|
346
|
+
* rejected every real boundary after it.
|
|
347
|
+
*/
|
|
348
|
+
export function firstSentence(text) {
|
|
349
|
+
const MIN_SENTENCE = 12;
|
|
350
|
+
const spans = [];
|
|
351
|
+
const masked = String(text).replace(/`[^`]*`/g, (m) => {
|
|
352
|
+
spans.push(m);
|
|
353
|
+
return `${spans.length - 1}`;
|
|
354
|
+
});
|
|
355
|
+
const restore = (s) => s.replace(/(\d+)/g, (_, i) => spans[Number(i)]);
|
|
356
|
+
|
|
357
|
+
const boundary = /([.!?])([*_`)"'\]]*)(\s+)/g;
|
|
358
|
+
let match;
|
|
359
|
+
while ((match = boundary.exec(masked)) !== null) {
|
|
360
|
+
const end = match.index + match[1].length + match[2].length;
|
|
361
|
+
const candidate = restore(masked.slice(0, end)).trim();
|
|
362
|
+
if (candidate.length < MIN_SENTENCE) continue;
|
|
363
|
+
|
|
364
|
+
const before = masked.slice(0, match.index);
|
|
365
|
+
const word = /([A-Za-z.]+)$/.exec(before)?.[1] ?? "";
|
|
366
|
+
if (ABBREVIATIONS.has(word.toLowerCase().replace(/\.$/, ""))) continue;
|
|
367
|
+
|
|
368
|
+
// A lone capital before the period is an initial ("J. Smith"), not an end.
|
|
369
|
+
if (/(^|\s)[A-Z]$/.test(before)) continue;
|
|
370
|
+
|
|
371
|
+
return candidate;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
return restore(masked).trim();
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/** Cut at a word boundary, so a headline never ends mid-token. */
|
|
378
|
+
export function truncate(text, max) {
|
|
379
|
+
const s = String(text);
|
|
380
|
+
if (s.length <= max) return s;
|
|
381
|
+
const cut = s.slice(0, max - 1);
|
|
382
|
+
const space = cut.lastIndexOf(" ");
|
|
383
|
+
return `${(space > max * 0.6 ? cut.slice(0, space) : cut).replace(/[\s,;:—–-]+$/, "")}…`;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* One entry — from either source — into `{headline, pr}`.
|
|
388
|
+
*
|
|
389
|
+
* The PR reference is read off the END of the WHOLE entry before the first
|
|
390
|
+
* sentence is taken, because that is where it lives in both formats and the
|
|
391
|
+
* first sentence never contains it. Three trailing forms are recognised: the
|
|
392
|
+
* changelog's `(#123)`, GitHub's `by @someone in <pull url>`, and a bare pull
|
|
393
|
+
* URL. `(#PR)` and other non-numeric placeholders yield no link rather than a
|
|
394
|
+
* broken one.
|
|
395
|
+
*/
|
|
396
|
+
export function summarizeEntry(entry) {
|
|
397
|
+
let text = String(entry).trim();
|
|
398
|
+
let pr = null;
|
|
399
|
+
|
|
400
|
+
const attribution = /\s+by\s+@[\w-]+\s+in\s+https?:\/\/\S*?\/pull\/(\d+)\/?\s*$/i.exec(text);
|
|
401
|
+
const bareUrl = /\s+https?:\/\/\S*?\/pull\/(\d+)\/?\s*$/i.exec(text);
|
|
402
|
+
const parenRef = /\(#(\d+)\)\s*$/.exec(text);
|
|
403
|
+
|
|
404
|
+
if (attribution) {
|
|
405
|
+
pr = Number(attribution[1]);
|
|
406
|
+
text = text.slice(0, attribution.index);
|
|
407
|
+
} else if (bareUrl) {
|
|
408
|
+
pr = Number(bareUrl[1]);
|
|
409
|
+
text = text.slice(0, bareUrl.index);
|
|
410
|
+
} else if (parenRef) {
|
|
411
|
+
pr = Number(parenRef[1]);
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
return {
|
|
415
|
+
headline: truncate(firstSentence(text.replace(/\s*\(#[^)]*\)\s*$/, "")), MAX_HEADLINE),
|
|
416
|
+
pr,
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
// ── Payload ─────────────────────────────────────────────────────────────────
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* Order the groups for display: the deprioritized ones last, everything else in
|
|
424
|
+
* the order the changelog introduced it. Returns `[shown, hiddenCount]`.
|
|
425
|
+
*/
|
|
426
|
+
function selectGroups(groups) {
|
|
427
|
+
const kept = groups.filter((g) => g.entries.length > 0);
|
|
428
|
+
const primary = kept.filter((g) => !DEPRIORITIZED_GROUPS.has(g.name.toLowerCase()));
|
|
429
|
+
// A release that is nothing but dependency bumps still gets a description.
|
|
430
|
+
const shown = primary.length > 0 ? primary : kept;
|
|
431
|
+
const hidden = kept
|
|
432
|
+
.filter((g) => !shown.includes(g))
|
|
433
|
+
.reduce((n, g) => n + g.entries.length, 0);
|
|
434
|
+
return [shown, hidden];
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
/**
|
|
438
|
+
* Assemble the description within `budget`, dropping WHOLE groups rather than
|
|
439
|
+
* cutting mid-sentence, and always ending on the changelog link.
|
|
440
|
+
*
|
|
441
|
+
* The link is the part that must survive: everything above it is a sample, and
|
|
442
|
+
* the link is what makes the sample honest. The first version of this appended
|
|
443
|
+
* it and then truncated the finished string, which on a release the size of
|
|
444
|
+
* 1.0.0 cut the link off and ended the message on "Stop sending anything about
|
|
445
|
+
* a…" — a notification that showed a third of a release and pointed nowhere.
|
|
446
|
+
*
|
|
447
|
+
* The tail line states what was left out, counted rather than implied, so a
|
|
448
|
+
* reader can tell "that was everything" from "that was the first six".
|
|
449
|
+
*
|
|
450
|
+
* @param {{
|
|
451
|
+
* lead: string,
|
|
452
|
+
* blocks: Array<{text: string, entries: number}>,
|
|
453
|
+
* deprioritized: number,
|
|
454
|
+
* changelogUrl: string,
|
|
455
|
+
* budget: number,
|
|
456
|
+
* }} options
|
|
457
|
+
*/
|
|
458
|
+
export function fitDescription({ lead, blocks, deprioritized, changelogUrl, budget }) {
|
|
459
|
+
const tailFor = (dropped) => {
|
|
460
|
+
const notes = [];
|
|
461
|
+
if (dropped > 0) notes.push(`${dropped} more entr${dropped === 1 ? "y" : "ies"}`);
|
|
462
|
+
if (deprioritized > 0) notes.push(`${deprioritized} dependency update${deprioritized === 1 ? "" : "s"}`);
|
|
463
|
+
const suffix = notes.length > 0 ? ` — ${notes.join(" and ")} not shown` : "";
|
|
464
|
+
return `[Full changelog](${changelogUrl})${suffix}`;
|
|
465
|
+
};
|
|
466
|
+
|
|
467
|
+
const total = blocks.reduce((n, b) => n + b.entries, 0);
|
|
468
|
+
const parts = lead ? [lead] : [];
|
|
469
|
+
let used = 0;
|
|
470
|
+
|
|
471
|
+
for (const block of blocks) {
|
|
472
|
+
const candidate = [...parts, block.text, tailFor(total - used - block.entries)].join("\n\n");
|
|
473
|
+
if (candidate.length > budget) break;
|
|
474
|
+
parts.push(block.text);
|
|
475
|
+
used += block.entries;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
const out = [...parts, tailFor(total - used)].join("\n\n");
|
|
479
|
+
// A lead long enough to crowd out every group is the only way to still be
|
|
480
|
+
// over budget here, and cutting it is preferable to dropping the link.
|
|
481
|
+
return out.length <= budget ? out : `${truncate(lead, Math.max(0, budget - tailFor(total).length - 2))}\n\n${tailFor(total)}`;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
function renderGroup(group, repo) {
|
|
485
|
+
const lines = [`**${group.name}**`];
|
|
486
|
+
for (const entry of group.entries.slice(0, MAX_ENTRIES_PER_GROUP)) {
|
|
487
|
+
const link = entry.pr ? ` ([#${entry.pr}](https://github.com/${repo}/pull/${entry.pr}))` : "";
|
|
488
|
+
lines.push(`• ${entry.headline}${link}`);
|
|
489
|
+
}
|
|
490
|
+
const rest = group.entries.length - MAX_ENTRIES_PER_GROUP;
|
|
491
|
+
if (rest > 0) lines.push(`• …and ${rest} more`);
|
|
492
|
+
return lines.join("\n");
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
/**
|
|
496
|
+
* Assemble the webhook body.
|
|
497
|
+
*
|
|
498
|
+
* `notes` may be null — a stable release with notes in neither source is a
|
|
499
|
+
* mistake `publish.yml` checks for at preflight, but the announcement still
|
|
500
|
+
* goes out without highlights rather than not at all. The release has already
|
|
501
|
+
* shipped by the time this runs; silence is the worse failure.
|
|
502
|
+
*
|
|
503
|
+
* @param {{
|
|
504
|
+
* version: string,
|
|
505
|
+
* repo: string,
|
|
506
|
+
* notes: ReturnType<typeof collectRelease> | ReturnType<typeof parseReleaseBody>,
|
|
507
|
+
* roleId?: string | null,
|
|
508
|
+
* releaseUrl?: string | null,
|
|
509
|
+
* timestamp?: string | null,
|
|
510
|
+
* }} options
|
|
511
|
+
*/
|
|
512
|
+
export function buildDiscordPayload({
|
|
513
|
+
version,
|
|
514
|
+
repo,
|
|
515
|
+
notes,
|
|
516
|
+
roleId = null,
|
|
517
|
+
releaseUrl = null,
|
|
518
|
+
timestamp = null,
|
|
519
|
+
}) {
|
|
520
|
+
const tag = `v${version}`;
|
|
521
|
+
const release = releaseUrl || `https://github.com/${repo}/releases/tag/${tag}`;
|
|
522
|
+
const mention = roleId ? `<@&${roleId}> ` : "";
|
|
523
|
+
|
|
524
|
+
// Only the FIRST paragraph of a stable section's preamble. 1.0.0's runs to
|
|
525
|
+
// four, and flattening them all into the description produced a wall of prose
|
|
526
|
+
// above the entries anybody opened the message to read.
|
|
527
|
+
const lead = notes?.lead ? truncate(notes.lead.split(/\n\s*\n/)[0].replace(/\s*\n\s*/g, " "), MAX_LEAD) : "";
|
|
528
|
+
const [shown, deprioritized] = notes ? selectGroups(notes.groups) : [[], 0];
|
|
529
|
+
|
|
530
|
+
// A generated release body ends on a compare link, which says more than a
|
|
531
|
+
// blob link to the file does. Without one, the changelog at this tag.
|
|
532
|
+
const changelogUrl = notes?.compareUrl || `https://github.com/${repo}/blob/${tag}/CHANGELOG.md`;
|
|
533
|
+
const blocks = shown.map((g) => ({ text: renderGroup(g, repo), entries: g.entries.length }));
|
|
534
|
+
|
|
535
|
+
const description = fitDescription({
|
|
536
|
+
lead,
|
|
537
|
+
blocks,
|
|
538
|
+
deprioritized,
|
|
539
|
+
changelogUrl,
|
|
540
|
+
budget: LIMIT_DESCRIPTION,
|
|
541
|
+
});
|
|
542
|
+
|
|
543
|
+
const embed = {
|
|
544
|
+
title: truncate(`failproofai ${tag}`, LIMIT_TITLE),
|
|
545
|
+
url: release,
|
|
546
|
+
color: BRAND_COLOR,
|
|
547
|
+
description,
|
|
548
|
+
fields: [
|
|
549
|
+
{
|
|
550
|
+
name: "Install",
|
|
551
|
+
value: truncate("```sh\nnpm install -g failproofai\n```", LIMIT_FIELD_VALUE),
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
name: "Links",
|
|
555
|
+
value: truncate(
|
|
556
|
+
[
|
|
557
|
+
`[Release notes](${release})`,
|
|
558
|
+
`[npm](https://www.npmjs.com/package/failproofai/v/${version})`,
|
|
559
|
+
"[Docs](https://docs.befailproof.ai/)",
|
|
560
|
+
].join(" · "),
|
|
561
|
+
LIMIT_FIELD_VALUE,
|
|
562
|
+
),
|
|
563
|
+
},
|
|
564
|
+
],
|
|
565
|
+
footer: { text: `published from ${repo}` },
|
|
566
|
+
};
|
|
567
|
+
if (timestamp) embed.timestamp = timestamp;
|
|
568
|
+
|
|
569
|
+
// Discord's 6000-character ceiling is over the SUM of an embed's text fields,
|
|
570
|
+
// which no single limit above covers. Everything but the description is fixed
|
|
571
|
+
// and small, so the description is re-fitted against what is left rather than
|
|
572
|
+
// chopped — same rule as above, the changelog link outlives the cut.
|
|
573
|
+
const fixed = embed.title.length + embed.footer.text.length + embed.fields.reduce((n, f) => n + f.name.length + f.value.length, 0);
|
|
574
|
+
if (fixed + embed.description.length > LIMIT_EMBED_TOTAL) {
|
|
575
|
+
embed.description = fitDescription({
|
|
576
|
+
lead,
|
|
577
|
+
blocks,
|
|
578
|
+
deprioritized,
|
|
579
|
+
changelogUrl,
|
|
580
|
+
budget: Math.max(0, LIMIT_EMBED_TOTAL - fixed),
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
return {
|
|
585
|
+
content: truncate(`${mention}**failproofai ${tag}** is out.`, LIMIT_CONTENT),
|
|
586
|
+
// `parse: []` is the guard, not the roles list: it stops @everyone/@here
|
|
587
|
+
// and any user mention that changelog prose happens to contain. The role
|
|
588
|
+
// is then re-allowed by id, so exactly one thing in this message pings.
|
|
589
|
+
allowed_mentions: { parse: [], roles: roleId ? [String(roleId)] : [] },
|
|
590
|
+
embeds: [embed],
|
|
591
|
+
};
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
// ── CLI ─────────────────────────────────────────────────────────────────────
|
|
595
|
+
|
|
596
|
+
/** `plural(1, "entry", "entries")` -> `"1 entry"`. */
|
|
597
|
+
function plural(n, one, many) {
|
|
598
|
+
return `${n} ${n === 1 ? one : many}`;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
function parseArgs(argv) {
|
|
602
|
+
const out = {};
|
|
603
|
+
for (let i = 0; i < argv.length; i++) {
|
|
604
|
+
const arg = argv[i];
|
|
605
|
+
if (!arg.startsWith("--")) continue;
|
|
606
|
+
const eq = arg.indexOf("=");
|
|
607
|
+
if (eq !== -1) out[arg.slice(2, eq)] = arg.slice(eq + 1);
|
|
608
|
+
else out[arg.slice(2)] = argv[i + 1] && !argv[i + 1].startsWith("--") ? argv[++i] : "true";
|
|
609
|
+
}
|
|
610
|
+
return out;
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
export function main(argv = process.argv.slice(2), io = console) {
|
|
614
|
+
const args = parseArgs(argv);
|
|
615
|
+
const version = args.version;
|
|
616
|
+
const repo = args.repo || process.env.GITHUB_REPOSITORY || "failproof-ai/failproofai";
|
|
617
|
+
if (!version) {
|
|
618
|
+
io.error(
|
|
619
|
+
"usage: release-announcement.mjs --version <x.y.z> [--repo owner/name] [--notes-file FILE] " +
|
|
620
|
+
"[--role-id ID] [--release-url URL] [--out FILE] [--check]",
|
|
621
|
+
);
|
|
622
|
+
process.exitCode = 1;
|
|
623
|
+
return null;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
// The release body arrives as a FILE, never as an argument. It is arbitrary
|
|
627
|
+
// markdown a human typed into a web form, and putting it on a command line
|
|
628
|
+
// (or into a shell string) is how a backtick in someone's release notes
|
|
629
|
+
// becomes command substitution in the release pipeline.
|
|
630
|
+
const notesPath = args["notes-file"] && args["notes-file"] !== "true" ? args["notes-file"] : null;
|
|
631
|
+
const releaseBody = notesPath && existsSync(notesPath) ? readFileSync(notesPath, "utf8") : "";
|
|
632
|
+
|
|
633
|
+
const changelogPath = args.changelog || resolve(REPO_ROOT, "CHANGELOG.md");
|
|
634
|
+
const changelog = existsSync(changelogPath) ? readFileSync(changelogPath, "utf8") : "";
|
|
635
|
+
const notes = chooseNotes({ releaseBody, changelog, version });
|
|
636
|
+
const source = parseReleaseBody(releaseBody) ? "the GitHub Release body" : `${changelogPath}`;
|
|
637
|
+
|
|
638
|
+
// `--check` is publish.yml's preflight gate: it answers "will this release
|
|
639
|
+
// have anything to announce" before anything is built, which is the one point
|
|
640
|
+
// in the pipeline where the answer "no" is nearly free to act on.
|
|
641
|
+
if (args.check === "true") {
|
|
642
|
+
if (!notes) {
|
|
643
|
+
io.error(
|
|
644
|
+
`::error file=CHANGELOG.md::Nothing to announce for ${version}: the GitHub Release body is ` +
|
|
645
|
+
`empty and CHANGELOG.md has no section for ${version} (or any ${version}-* prerelease). ` +
|
|
646
|
+
`A stable release announces itself in Discord, so it would post with no release notes in ` +
|
|
647
|
+
`it. Write the release notes, or add the changelog section, and re-run.`,
|
|
648
|
+
);
|
|
649
|
+
process.exitCode = 1;
|
|
650
|
+
return null;
|
|
651
|
+
}
|
|
652
|
+
io.error(`${version} has release notes (${plural(notes.total, "entry", "entries")}, from ${source}).`);
|
|
653
|
+
return notes;
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
if (!notes) {
|
|
657
|
+
// A warning rather than an error: the release is already on npm by the
|
|
658
|
+
// time this runs, and an announcement with no highlights still tells
|
|
659
|
+
// people the version exists and how to install it.
|
|
660
|
+
io.error(`::warning::No release notes for ${version} in the release body or ${changelogPath} — announcing without highlights.`);
|
|
661
|
+
} else {
|
|
662
|
+
io.error(`Collected ${plural(notes.total, "entry", "entries")} from ${source}.`);
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
const payload = buildDiscordPayload({
|
|
666
|
+
version,
|
|
667
|
+
repo,
|
|
668
|
+
notes,
|
|
669
|
+
roleId: args["role-id"] && args["role-id"] !== "true" ? args["role-id"] : null,
|
|
670
|
+
releaseUrl: args["release-url"] && args["release-url"] !== "true" ? args["release-url"] : null,
|
|
671
|
+
timestamp: args.timestamp && args.timestamp !== "true" ? args.timestamp : new Date().toISOString(),
|
|
672
|
+
});
|
|
673
|
+
|
|
674
|
+
const json = JSON.stringify(payload, null, 2);
|
|
675
|
+
if (args.out && args.out !== "true") {
|
|
676
|
+
writeFileSync(args.out, json);
|
|
677
|
+
io.error(`Wrote ${args.out} (${json.length} bytes).`);
|
|
678
|
+
} else {
|
|
679
|
+
io.log(json);
|
|
680
|
+
}
|
|
681
|
+
return payload;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
685
|
+
main();
|
|
686
|
+
}
|