failproofai 1.0.11 → 1.0.12-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +23 -23
- 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 +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- 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 +3 -3
- 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 +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- 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 +5 -6
- 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 +24 -24
- 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 +2 -2
- 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 +4 -5
- 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 +6 -7
- 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 +6 -7
- 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 +5 -6
- 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 +2 -2
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/audit/page.js +4 -4
- package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
- 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 +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
- package/.next/standalone/.next/server/app/policies/page.js +7 -7
- 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 +7 -7
- 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 +8 -8
- 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 +3 -3
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/settings/page.js +10 -10
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/{[externals]__0qkp92tjfvw8r._.js → [externals]__0vt9i6fqinjne._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[externals]__1x24dzcbbq6-g._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02vous7mpi2xm._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03i5o4a840guz._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0__a_je8fsn65._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_hsnj_a2mvl_._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1izwqj_ij_9x_._.js → [root-of-the-server]__0f_4g-vazrvxv._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l-oi4gdtmlo5._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0swiyzbmvja2d._.js → [root-of-the-server]__0t9ufnv5hi2hq._.js} +5 -5
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wg9dk8x8bnau._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12kq3x-h7t7i1._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1a5zkndjwlc13._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1r7kbfkiw2xmu._.js → [root-of-the-server]__1aaw59g-5uty7._.js} +12 -12
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1hqpg6vgmfexv._.js +3 -0
- package/.next/standalone/.next/server/chunks/_09dz7xva4ce_2._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0hf5q4xzyg40j._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0tovk6q0miud6._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0trp3ycqv17cl._.js +1 -1
- package/.next/standalone/.next/server/chunks/_19011-u44143j._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1ek68lnh2daur._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1vslkoe35wok6._.js +1 -1
- package/.next/standalone/.next/server/chunks/{_1ixl-kxq_ctsa._.js → _1y590mjzpkbos._.js} +2 -2
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4vkpxxu7._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_hooks_0_em82s16zfym._.js +5 -0
- package/.next/standalone/.next/server/chunks/src_hooks_builtin-policies_ts_1yq5ybgx1v98e._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_hooks_custom-hooks-loader_ts_0lnb3n3h94wnn._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_hooks_daemon-client_ts_0il_yu1zc0291._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_hooks_fp-home_ts_09kv0bn_4twyh._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01j58mdcdw0vn._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0588st-tpiuia._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08ch3staq3ejw._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0_a8z2ldp2v3n._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0vcyntk4snf0f._.js → [root-of-the-server]__0b78b0j8iyv6l._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bigvy9xmv2ka._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0ffu2-38y03ic._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g8b0kyorya-t._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h86bl2qf0k_o._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1_xbg2kx30wp-._.js → [root-of-the-server]__0naevg4bcoh54._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pia5h3p8re4c._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__075uro8t92s0_._.js → [root-of-the-server]__0pwj2h2efe5f-._.js} +3 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0zn1d4blhd3bu._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1-ey9fgesfbc0._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15usvs-ms-0hf._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16gb3_92zvk5x._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__17r4zrwanhp6r._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1avi2kypusyb_._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1lnfv02ucky7m._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1mc9-zlnh656_._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1r7drlqli-ado._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1s2-ck3k3rsoo._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1l1qgu5mfapkh._.js → [root-of-the-server]__1vx7o8ukefudh._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0eoura3_9gjb-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0pedwblqdoh58._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_128ebxr83nk6g._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_1_ozgifqv1ssi._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_1gb0ifpkowwub._.js → _1a3tubds7s7ow._.js} +10 -9
- package/.next/standalone/.next/server/chunks/ssr/_1djqs9i27e4kg._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo5_vm5f.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_actions_get-scheduled-audit_ts_0ei9snixb5fd-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47q0xq5w._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x33jqb6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpcz0uxur._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_settings_02tf1h47jmhhd._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_1f_ymmaonkksc.js → node_modules_html-to-image_es_index_1i8oid1gc7s1f.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/package_json_[json]_cjs_013tntikdft59._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_06kzv9ddabn3_._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_0agdmptetetdt._.js +5 -0
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_0mdwgjisv4fub._.js +5 -0
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_1cv9_c4l1tzrm._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_daemon-client_ts_0k41_i7jg6ndv._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_pack-cli_ts_0t7me658zqmh_._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +23 -23
- package/.next/standalone/.next/server/middleware.js +2 -2
- 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/preview-props.json +3 -3
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +23 -23
- package/.next/standalone/.next/static/chunks/{0frxv4_m-m2u5.js → 063al_q720fkj.js} +1 -1
- package/.next/standalone/.next/static/chunks/0_zfad4co-t2z.js +1 -0
- package/.next/standalone/.next/static/chunks/0jutamwqz8pg5.js +1 -0
- package/.next/standalone/.next/static/chunks/114hbolvrv94e.js +1 -0
- package/.next/standalone/.next/static/chunks/{37stoe-_yd852.js → 18433qz-8njv3.js} +1 -1
- package/.next/standalone/.next/static/chunks/{1kwj8uqxuv85t.js → 1b32-afqacaen.js} +1 -1
- package/.next/standalone/.next/static/chunks/{44a7k2_62qc-9.js → 1p-hsi58i-6h0.js} +2 -2
- package/.next/standalone/.next/static/chunks/{302llgh97ce6w.js → 2-tf6_7u623kd.js} +1 -1
- package/.next/standalone/.next/static/chunks/{1_c0dc7zqj1n7.js → 24w3x2da9sk49.js} +1 -1
- package/.next/standalone/.next/static/chunks/2tjfp9dirxnku.js +1 -0
- package/.next/standalone/.next/static/chunks/{16z6_d7sp61jm.js → 3-pku9qwv1yfu.js} +1 -1
- package/.next/standalone/.next/static/chunks/{15rm15u5a6dua.js → 42e8zab314654.js} +1 -1
- package/.next/standalone/fp-cloud-cli/CHANGELOG.md +41 -0
- package/.next/standalone/fp-cloud-cli/README.md +42 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/client.py +117 -12
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/fleet_cmds.py +285 -19
- package/.next/standalone/fp-cloud-cli/fp_cli/commands/policies_cmds.py +84 -18
- package/.next/standalone/fp-cloud-cli/fp_cli/enforcement.py +170 -6
- package/.next/standalone/fp-cloud-cli/fp_cli/models.py +89 -6
- package/.next/standalone/fp-cloud-cli/fp_cli/output.py +259 -21
- package/.next/standalone/fp-cloud-cli/fp_cli/policy_check.py +8 -5
- package/.next/standalone/fp-cloud-cli/skill/SKILL.md +2 -2
- package/.next/standalone/fp-cloud-cli/skill/references/commands.md +17 -9
- package/.next/standalone/fp-cloud-cli/tests/test_cloud_jev.py +692 -0
- package/.next/standalone/fp-cloud-cli/tests/test_enforcement_logic.py +46 -0
- package/.next/standalone/fp-cloud-cli/tests/test_output.py +23 -0
- package/.next/standalone/fp-cloud-cli/uv.lock +6 -6
- package/.next/standalone/hermes-plugin/README.md +6 -4
- package/.next/standalone/hermes-plugin/__init__.py +16 -0
- package/.next/standalone/hermes-plugin/client.py +5 -1
- package/.next/standalone/hermes-plugin/plugin.yaml +1 -1
- package/.next/standalone/node_modules/@next/env/package.json +1 -1
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/api/context.js +72 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/api/diag.js +84 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/api/metrics.js +50 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/api/propagation.js +80 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/api/trace.js +70 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js +52 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js +44 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js +12 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/baggage/utils.js +41 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js +27 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/context/context.js +52 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/context-api.js +16 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js +47 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js +73 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js +34 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/diag/types.js +33 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/diag-api.js +20 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/index.js +71 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/internal/global-utils.js +60 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/internal/semver.js +111 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/metrics/Metric.js +18 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js +118 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js +20 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/metrics-api.js +17 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js +23 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js +36 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/propagation-api.js +17 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js +58 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js +68 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js +21 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js +46 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js +46 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js +33 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/context-utils.js +71 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js +94 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js +35 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/internal/utils.js +16 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js +25 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/span_kind.js +38 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js +66 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/status.js +29 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace/trace_flags.js +18 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/trace-api.js +17 -0
- package/.next/standalone/node_modules/@opentelemetry/api/build/src/version.js +10 -0
- package/.next/standalone/node_modules/@opentelemetry/api/package.json +96 -0
- package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +2 -2
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +2 -2
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +1 -1
- package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
- package/.next/standalone/node_modules/next/dist/server/app-render/async-local-storage.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/generate-agent-files.js +3 -3
- package/.next/standalone/node_modules/next/dist/server/lib/router-server.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/trace/tracer.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/typescript/rules/config.js +2 -2
- package/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +1 -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 +11 -11
- package/.next/standalone/sdk/python/CHANGELOG.md +7 -0
- package/.next/standalone/sdk/python/failproofai_sdk/_version.py +1 -1
- package/.next/standalone/sdk/python/pyproject.toml +19 -0
- package/.next/standalone/sdk/python/uv.lock +520 -301
- package/.next/standalone/sdk/typescript/CHANGELOG.md +13 -0
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package-lock.json +4 -13
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package.json +2 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package-lock.json +4 -13
- package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package.json +3 -0
- package/.next/standalone/sdk/typescript/package-lock.json +178 -162
- package/.next/standalone/sdk/typescript/package.json +1 -1
- package/.next/standalone/sdk/typescript/src/version.ts +1 -1
- package/.next/standalone/server.js +1 -1
- package/bin/failproofai.mjs +17 -1
- package/dist/cli.mjs +2866 -1124
- package/dist/worker.mjs +1450 -145
- package/hermes-plugin/README.md +6 -4
- package/hermes-plugin/__init__.py +16 -0
- package/hermes-plugin/client.py +5 -1
- package/hermes-plugin/plugin.yaml +1 -1
- package/package.json +11 -11
- package/src/hooks/agent-roster.ts +172 -0
- package/src/hooks/agent-targets.ts +60 -0
- package/src/hooks/cloud-connection.ts +97 -27
- package/src/hooks/cloud-enrollment-cli.ts +7 -4
- package/src/hooks/cloud-managed-policies.ts +380 -20
- package/src/hooks/cloud-policy-errors.ts +481 -0
- package/src/hooks/config-status.ts +1 -1
- package/src/hooks/custom-hooks-loader.ts +26 -3
- package/src/hooks/daemon-client.ts +9 -4
- package/src/hooks/daemon-service.ts +2 -1
- package/src/hooks/effective-reviewers.ts +22 -1
- package/src/hooks/fp-home.ts +6 -0
- package/src/hooks/handler.ts +235 -18
- package/src/hooks/health-probe.ts +15 -0
- package/src/hooks/integrations.ts +18 -11
- package/src/hooks/jev-cli.ts +197 -0
- package/src/hooks/jev-cloud-connection.ts +92 -0
- package/src/hooks/manager.ts +122 -16
- package/src/hooks/pack-failclosed.ts +2 -0
- package/src/hooks/pack-manifest.ts +8 -1
- package/src/hooks/policy-evaluator.ts +5 -1
- package/src/hooks/policy-registry.ts +3 -2
- package/src/hooks/policy-reviewability.ts +21 -5
- package/src/hooks/semantic/cloud-jev-health.ts +227 -0
- package/src/hooks/semantic/cloud-jev.ts +677 -0
- package/src/hooks/semantic/jev-client.ts +18 -1
- package/src/hooks/semantic/jev-config.ts +173 -3
- package/src/hooks/semantic/jev-review.ts +129 -10
- package/src/hooks/semantic/pack-policies.ts +2 -1
- package/src/hooks/semantic/types.ts +8 -0
- package/src/hooks/session-pause-cli.ts +1 -1
- package/src/hooks/worker-server.ts +5 -1
- package/.next/standalone/.next/server/chunks/[externals]__0hjaw70fchx66._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07l68zv0hqdiu._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0car70pylmvor._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0u3i025_setk_._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10a2f6s636yc7._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qt5u58xrcuk6._.js +0 -3
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_077n_4ip5__fu._.js +0 -3
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mqvvxcn6v0op._.js +0 -3
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0pb7ds5g0vzgn._.js +0 -3
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_1gasm5xkeqmm3._.js +0 -3
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_1q1heqmkhh8l4._.js +0 -3
- package/.next/standalone/.next/server/chunks/src_hooks_1aveq0uhs2t1b._.js +0 -5
- package/.next/standalone/.next/server/chunks/src_hooks_1eem5a7cyqlb2._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0888k4s6spfmh._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0_bflu046ep5j._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0_lbstb5x2t15._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0fdwgktjfhedo._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s4deza787asx._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__18qe-hu0gwqm4._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1_p_9xe520fex._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1fmhm8_s9i4re._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1g76awtnmimd1._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1pczevlpk5lxh._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0dc-of_bn0cim._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_effective-reviewers_ts_1h4wtvo55j16x._.js +0 -5
- package/.next/standalone/.next/static/chunks/0m-tv1y6ghhtk.js +0 -1
- package/.next/standalone/.next/static/chunks/0ol2gj4ntfn56.js +0 -1
- package/.next/standalone/.next/static/chunks/3hj5_7i3nw4zj.js +0 -1
- package/.next/standalone/.next/static/chunks/3iyoapeoq_hup.js +0 -1
- /package/.next/standalone/.next/static/{kEFP3ybXwZdriNEQmWwlH → xq8UgF5yFxty1VWxY2hyn}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{kEFP3ybXwZdriNEQmWwlH → xq8UgF5yFxty1VWxY2hyn}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{kEFP3ybXwZdriNEQmWwlH → xq8UgF5yFxty1VWxY2hyn}/_ssgManifest.js +0 -0
|
@@ -141,6 +141,52 @@ def test_set_replaces_the_whole_set():
|
|
|
141
141
|
assert plan.result[0].version == 5
|
|
142
142
|
|
|
143
143
|
|
|
144
|
+
def test_agent_targets_round_trip_and_survive_an_unrelated_add():
|
|
145
|
+
scoped = PolicyRef.from_dict({
|
|
146
|
+
"id": "guard", "version": 2, "effect": "enforce",
|
|
147
|
+
"agentTargets": [{"integration": "hermes", "instanceId": "agt_1234567890abcdef"}],
|
|
148
|
+
})
|
|
149
|
+
assert scoped.to_dict()["agentTargets"] == [
|
|
150
|
+
{"integration": "hermes", "instanceId": "agt_1234567890abcdef"},
|
|
151
|
+
]
|
|
152
|
+
plan = plan_deploy("machine", current=[scoped], base=2, add=["guard@3"], latest={"guard": 3})
|
|
153
|
+
assert plan.result[0].agent_targets == scoped.agent_targets
|
|
154
|
+
assert plan.result[0].version == 3
|
|
155
|
+
assert scoped.version == 2
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def test_target_changes_are_a_diff_and_clearing_is_explicit():
|
|
159
|
+
initial = ref("guard")
|
|
160
|
+
narrowed = plan_deploy(
|
|
161
|
+
"machine", current=[initial], base=1,
|
|
162
|
+
targets=["guard=hermes/agt_1234567890abcdef", "guard=codex"],
|
|
163
|
+
)
|
|
164
|
+
assert narrowed.changed == [(initial, narrowed.result[0])]
|
|
165
|
+
assert narrowed.result[0].agent_targets == [
|
|
166
|
+
{"integration": "hermes", "instanceId": "agt_1234567890abcdef"},
|
|
167
|
+
{"integration": "codex"},
|
|
168
|
+
]
|
|
169
|
+
cleared = plan_deploy(
|
|
170
|
+
"machine", current=narrowed.result, base=2, all_agents=["guard"],
|
|
171
|
+
)
|
|
172
|
+
assert cleared.result[0].agent_targets is None
|
|
173
|
+
assert cleared.set_changes
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
@pytest.mark.parametrize("targets,clears", [
|
|
177
|
+
(["guard=stranger"], []),
|
|
178
|
+
(["guard=hermes/bad"], []),
|
|
179
|
+
(["guard=hermes", "guard=hermes"], []),
|
|
180
|
+
(["guard=hermes"], ["guard"]),
|
|
181
|
+
(["missing=codex"], []),
|
|
182
|
+
(["guard@1=codex"], []),
|
|
183
|
+
])
|
|
184
|
+
def test_invalid_agent_target_request_cannot_write(targets, clears):
|
|
185
|
+
with pytest.raises(RefError):
|
|
186
|
+
plan_deploy("machine", current=[ref("guard")], base=1,
|
|
187
|
+
targets=targets, all_agents=clears)
|
|
188
|
+
|
|
189
|
+
|
|
144
190
|
def test_set_cannot_be_mixed_with_add_or_remove():
|
|
145
191
|
""""exactly these" and "these as well" have no single reading."""
|
|
146
192
|
with pytest.raises(RefError, match="cannot be combined"):
|
|
@@ -1590,6 +1590,29 @@ def test_history_says_no_change_only_when_nothing_moved(capsys):
|
|
|
1590
1590
|
assert "no change" in capsys.readouterr().out
|
|
1591
1591
|
|
|
1592
1592
|
|
|
1593
|
+
def test_history_keeps_gen_when_and_jev_on_an_80_column_terminal(capsys):
|
|
1594
|
+
"""At 80 columns every no_wrap cell got shaved at once and `gen`, `when` and
|
|
1595
|
+
`jev` vanished — but `gen` is what `fp fleet rollback` takes."""
|
|
1596
|
+
_wide_stdout(80)
|
|
1597
|
+
pols = [{"id": f"long-policy-name-{i:02d}", "version": 1, "effect": "enforce",
|
|
1598
|
+
"agentTargets": [{"integration": "claude", "instanceId": "agt_" + "ab" * 16}]}
|
|
1599
|
+
for i in range(4)]
|
|
1600
|
+
entries = [{"deployment": g, "updatedAt": f"2026-08-{10 + g:02d}T13:49:00Z",
|
|
1601
|
+
"jevMode": "observe" if g % 2 else None, "policies": pols[:g]}
|
|
1602
|
+
for g in range(1, 5)]
|
|
1603
|
+
output.render_deployment_history("m", entries)
|
|
1604
|
+
out = capsys.readouterr().out
|
|
1605
|
+
assert max(len(ln) for ln in out.splitlines()) <= 80
|
|
1606
|
+
header = next(ln for ln in out.splitlines() if "change" in ln)
|
|
1607
|
+
for col in ("gen", "when", "jev"):
|
|
1608
|
+
assert col in header, (col, out)
|
|
1609
|
+
for g in range(1, 5):
|
|
1610
|
+
row = next((ln for ln in out.splitlines() if f"#{g} " in ln), None)
|
|
1611
|
+
assert row is not None, (g, out)
|
|
1612
|
+
assert f"08-{10 + g:02d} 13:49:00" in row, out
|
|
1613
|
+
assert ("observe" if g % 2 else "local") in row, out
|
|
1614
|
+
|
|
1615
|
+
|
|
1593
1616
|
def test_clearing_a_label_is_not_reported_as_renaming_to_blank(capsys):
|
|
1594
1617
|
"""`fp fleet rename m ""` clears the override server-side, and the card
|
|
1595
1618
|
said `labelled m as ` — a sentence with a hole in it, describing neither
|
|
@@ -36,11 +36,11 @@ wheels = [
|
|
|
36
36
|
|
|
37
37
|
[[package]]
|
|
38
38
|
name = "certifi"
|
|
39
|
-
version = "2026.
|
|
39
|
+
version = "2026.10.19"
|
|
40
40
|
source = { registry = "https://pypi.org/simple" }
|
|
41
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
41
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a6/bd/1436c50cc46699de0230fbaacc1d1de7bfec413176099949e9d5112e88f2/certifi-2026.10.19.tar.gz", hash = "sha256:035c1e85572b141bf1c3a3eff0e33a8eb74917522f2559075ff8d2fea780a1ae", size = 137598, upload-time = "2026-10-20T02:24:16.604Z" }
|
|
42
42
|
wheels = [
|
|
43
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
43
|
+
{ url = "https://files.pythonhosted.org/packages/c4/51/29046e48f693c54e5b7412216d447a1d8362c9653148d98c02cdf65fa733/certifi-2026.10.19-py3-none-any.whl", hash = "sha256:42d35340cc5b9ba78e818ddbff0c5b1c2b779de448a340fd1b989f5fa8670e1b", size = 136464, upload-time = "2026-10-20T02:24:15.072Z" },
|
|
44
44
|
]
|
|
45
45
|
|
|
46
46
|
[[package]]
|
|
@@ -372,7 +372,7 @@ wheels = [
|
|
|
372
372
|
|
|
373
373
|
[[package]]
|
|
374
374
|
name = "posthog"
|
|
375
|
-
version = "7.
|
|
375
|
+
version = "7.71.0"
|
|
376
376
|
source = { registry = "https://pypi.org/simple" }
|
|
377
377
|
dependencies = [
|
|
378
378
|
{ name = "backoff" },
|
|
@@ -380,9 +380,9 @@ dependencies = [
|
|
|
380
380
|
{ name = "requests" },
|
|
381
381
|
{ name = "typing-extensions" },
|
|
382
382
|
]
|
|
383
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
383
|
+
sdist = { url = "https://files.pythonhosted.org/packages/c6/9b/12e2e82fbbf5d70f554cfd1930631a6d1cce8975721ad50b5d7b47e580ff/posthog-7.71.0.tar.gz", hash = "sha256:00950999edf7f613a90015126bacc431d3ab3964a70d91c2f792e6a0dc81f358", size = 763019, upload-time = "2026-10-16T19:24:33.765Z" }
|
|
384
384
|
wheels = [
|
|
385
|
-
{ url = "https://files.pythonhosted.org/packages/8e/
|
|
385
|
+
{ url = "https://files.pythonhosted.org/packages/f5/8e/9b185e665800a922e95fb965fb9c17d2a54cee575cf5e425308250663393/posthog-7.71.0-py3-none-any.whl", hash = "sha256:52cb1320b7e178b36ef7594cf15b4a8c492c24d4d1c46700f5bee0089ba5c6ac", size = 892234, upload-time = "2026-10-16T19:24:31.706Z" },
|
|
386
386
|
]
|
|
387
387
|
|
|
388
388
|
[[package]]
|
|
@@ -165,23 +165,25 @@ decision, because otherwise corrupted retry state could block a turn forever.
|
|
|
165
165
|
## Local protocol
|
|
166
166
|
|
|
167
167
|
Requests and responses use the existing length-prefixed failproofaid Unix
|
|
168
|
-
socket protocol, version
|
|
168
|
+
socket protocol, version 2. A v1 daemon must be upgraded before it can safely
|
|
169
|
+
evaluate agent/profile-scoped policies.
|
|
169
170
|
|
|
170
171
|
```json
|
|
171
172
|
{
|
|
172
173
|
"type": "policyEvaluation",
|
|
173
|
-
"protocolVersion":
|
|
174
|
+
"protocolVersion": 2,
|
|
174
175
|
"integration": "hermes",
|
|
175
176
|
"event": "pre_tool_call",
|
|
176
177
|
"payload": {},
|
|
177
|
-
"cwd": "/workspace/project"
|
|
178
|
+
"cwd": "/workspace/project",
|
|
179
|
+
"agentSettingsPath": "/path/to/the/hermes/profile"
|
|
178
180
|
}
|
|
179
181
|
```
|
|
180
182
|
|
|
181
183
|
```json
|
|
182
184
|
{
|
|
183
185
|
"type": "policyResult",
|
|
184
|
-
"protocolVersion":
|
|
186
|
+
"protocolVersion": 2,
|
|
185
187
|
"decision": "instruct",
|
|
186
188
|
"policyNames": ["custom/approved-write-route"],
|
|
187
189
|
"reason": "Use the approved write route.",
|
|
@@ -102,6 +102,21 @@ def _profile_name() -> str:
|
|
|
102
102
|
return "default"
|
|
103
103
|
|
|
104
104
|
|
|
105
|
+
def _profile_settings_path(profile: str) -> str | None:
|
|
106
|
+
"""Evidence of the profile running this plugin, not a transcript guess."""
|
|
107
|
+
configured = os.environ.get("HERMES_HOME", "").strip()
|
|
108
|
+
if configured:
|
|
109
|
+
selected = Path(configured).expanduser() / "config.yaml"
|
|
110
|
+
elif profile == "default":
|
|
111
|
+
selected = Path.home() / ".hermes" / "config.yaml"
|
|
112
|
+
elif re.fullmatch(r"[A-Za-z0-9._-]{1,80}", profile):
|
|
113
|
+
selected = Path.home() / ".hermes" / "profiles" / profile / "config.yaml"
|
|
114
|
+
else:
|
|
115
|
+
return None
|
|
116
|
+
# An unresolvable profile does not acquire some other profile's ID.
|
|
117
|
+
return str(selected.absolute()) if selected.is_file() else None
|
|
118
|
+
|
|
119
|
+
|
|
105
120
|
def _string(value: object) -> str:
|
|
106
121
|
return value if isinstance(value, str) else ""
|
|
107
122
|
|
|
@@ -660,6 +675,7 @@ class FailproofAIPlugin:
|
|
|
660
675
|
event=event,
|
|
661
676
|
payload=payload,
|
|
662
677
|
cwd=cwd,
|
|
678
|
+
agent_settings_path=_profile_settings_path(self.profile),
|
|
663
679
|
connect_timeout_ms=self.connect_timeout_ms,
|
|
664
680
|
evaluation_timeout_ms=timeout_ms or self.evaluation_timeout_ms,
|
|
665
681
|
)
|
|
@@ -11,7 +11,7 @@ from dataclasses import dataclass
|
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
from typing import Any, Mapping, Sequence
|
|
13
13
|
|
|
14
|
-
PROTOCOL_VERSION =
|
|
14
|
+
PROTOCOL_VERSION = 2
|
|
15
15
|
MAX_FRAME_BYTES = 16 * 1024 * 1024
|
|
16
16
|
MAX_REQUEST_BYTES = 1024 * 1024
|
|
17
17
|
|
|
@@ -75,6 +75,7 @@ def evaluate_policy(
|
|
|
75
75
|
event: str,
|
|
76
76
|
payload: Mapping[str, Any],
|
|
77
77
|
cwd: str | None,
|
|
78
|
+
agent_settings_path: str | None = None,
|
|
78
79
|
connect_timeout_ms: int = 250,
|
|
79
80
|
evaluation_timeout_ms: int = 12_000,
|
|
80
81
|
) -> PolicyVerdict:
|
|
@@ -85,6 +86,9 @@ def evaluate_policy(
|
|
|
85
86
|
"event": event,
|
|
86
87
|
"payload": dict(payload),
|
|
87
88
|
"cwd": cwd,
|
|
89
|
+
# An unknown profile is explicit. Omitting this field would let a new
|
|
90
|
+
# daemon's warm worker attribute the call to its own Hermes home.
|
|
91
|
+
"agentSettingsPath": agent_settings_path or "",
|
|
88
92
|
}
|
|
89
93
|
try:
|
|
90
94
|
body = json.dumps(
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright The OpenTelemetry Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ContextAPI = void 0;
|
|
8
|
+
const NoopContextManager_1 = require("../context/NoopContextManager");
|
|
9
|
+
const global_utils_1 = require("../internal/global-utils");
|
|
10
|
+
const diag_1 = require("./diag");
|
|
11
|
+
const API_NAME = 'context';
|
|
12
|
+
const NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager();
|
|
13
|
+
/**
|
|
14
|
+
* Singleton object which represents the entry point to the OpenTelemetry Context API
|
|
15
|
+
*
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
*/
|
|
18
|
+
class ContextAPI {
|
|
19
|
+
/** Empty private constructor prevents end users from constructing a new instance of the API */
|
|
20
|
+
constructor() { }
|
|
21
|
+
/** Get the singleton instance of the Context API */
|
|
22
|
+
static getInstance() {
|
|
23
|
+
if (!this._instance) {
|
|
24
|
+
this._instance = new ContextAPI();
|
|
25
|
+
}
|
|
26
|
+
return this._instance;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Set the current context manager.
|
|
30
|
+
*
|
|
31
|
+
* @returns true if the context manager was successfully registered, else false
|
|
32
|
+
*/
|
|
33
|
+
setGlobalContextManager(contextManager) {
|
|
34
|
+
return (0, global_utils_1.registerGlobal)(API_NAME, contextManager, diag_1.DiagAPI.instance());
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get the currently active context
|
|
38
|
+
*/
|
|
39
|
+
active() {
|
|
40
|
+
return this._getContextManager().active();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Execute a function with an active context
|
|
44
|
+
*
|
|
45
|
+
* @param context context to be active during function execution
|
|
46
|
+
* @param fn function to execute in a context
|
|
47
|
+
* @param thisArg optional receiver to be used for calling fn
|
|
48
|
+
* @param args optional arguments forwarded to fn
|
|
49
|
+
*/
|
|
50
|
+
with(context, fn, thisArg, ...args) {
|
|
51
|
+
return this._getContextManager().with(context, fn, thisArg, ...args);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Bind a context to a target function or event emitter
|
|
55
|
+
*
|
|
56
|
+
* @param context context to bind to the event emitter or function. Defaults to the currently active context
|
|
57
|
+
* @param target function or event emitter to bind
|
|
58
|
+
*/
|
|
59
|
+
bind(context, target) {
|
|
60
|
+
return this._getContextManager().bind(context, target);
|
|
61
|
+
}
|
|
62
|
+
_getContextManager() {
|
|
63
|
+
return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_CONTEXT_MANAGER;
|
|
64
|
+
}
|
|
65
|
+
/** Disable and remove the global context manager */
|
|
66
|
+
disable() {
|
|
67
|
+
this._getContextManager().disable();
|
|
68
|
+
(0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.ContextAPI = ContextAPI;
|
|
72
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright The OpenTelemetry Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.DiagAPI = void 0;
|
|
8
|
+
const ComponentLogger_1 = require("../diag/ComponentLogger");
|
|
9
|
+
const logLevelLogger_1 = require("../diag/internal/logLevelLogger");
|
|
10
|
+
const types_1 = require("../diag/types");
|
|
11
|
+
const global_utils_1 = require("../internal/global-utils");
|
|
12
|
+
const API_NAME = 'diag';
|
|
13
|
+
/**
|
|
14
|
+
* Singleton object which represents the entry point to the OpenTelemetry internal
|
|
15
|
+
* diagnostic API
|
|
16
|
+
*
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
*/
|
|
19
|
+
class DiagAPI {
|
|
20
|
+
/** Get the singleton instance of the DiagAPI API */
|
|
21
|
+
static instance() {
|
|
22
|
+
if (!this._instance) {
|
|
23
|
+
this._instance = new DiagAPI();
|
|
24
|
+
}
|
|
25
|
+
return this._instance;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Private internal constructor
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
constructor() {
|
|
32
|
+
function _logProxy(funcName) {
|
|
33
|
+
return function (...args) {
|
|
34
|
+
const logger = (0, global_utils_1.getGlobal)('diag');
|
|
35
|
+
// shortcut if logger not set
|
|
36
|
+
if (!logger)
|
|
37
|
+
return;
|
|
38
|
+
return logger[funcName](...args);
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// Using self local variable for minification purposes as 'this' cannot be minified
|
|
42
|
+
const self = this;
|
|
43
|
+
// DiagAPI specific functions
|
|
44
|
+
const setLogger = (logger, optionsOrLogLevel = { logLevel: types_1.DiagLogLevel.INFO }) => {
|
|
45
|
+
var _a, _b, _c;
|
|
46
|
+
if (logger === self) {
|
|
47
|
+
// There isn't much we can do here.
|
|
48
|
+
// Logging to the console might break the user application.
|
|
49
|
+
// Try to log to self. If a logger was previously registered it will receive the log.
|
|
50
|
+
const err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');
|
|
51
|
+
self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
if (typeof optionsOrLogLevel === 'number') {
|
|
55
|
+
optionsOrLogLevel = {
|
|
56
|
+
logLevel: optionsOrLogLevel,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const oldLogger = (0, global_utils_1.getGlobal)('diag');
|
|
60
|
+
const newLogger = (0, logLevelLogger_1.createLogLevelDiagLogger)((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : types_1.DiagLogLevel.INFO, logger);
|
|
61
|
+
// There already is an logger registered. We'll let it know before overwriting it.
|
|
62
|
+
if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {
|
|
63
|
+
const stack = (_c = new Error().stack) !== null && _c !== void 0 ? _c : '<failed to generate stacktrace>';
|
|
64
|
+
oldLogger.warn(`Current logger will be overwritten from ${stack}`);
|
|
65
|
+
newLogger.warn(`Current logger will overwrite one already registered from ${stack}`);
|
|
66
|
+
}
|
|
67
|
+
return (0, global_utils_1.registerGlobal)('diag', newLogger, self, true);
|
|
68
|
+
};
|
|
69
|
+
self.setLogger = setLogger;
|
|
70
|
+
self.disable = () => {
|
|
71
|
+
(0, global_utils_1.unregisterGlobal)(API_NAME, self);
|
|
72
|
+
};
|
|
73
|
+
self.createComponentLogger = (options) => {
|
|
74
|
+
return new ComponentLogger_1.DiagComponentLogger(options);
|
|
75
|
+
};
|
|
76
|
+
self.verbose = _logProxy('verbose');
|
|
77
|
+
self.debug = _logProxy('debug');
|
|
78
|
+
self.info = _logProxy('info');
|
|
79
|
+
self.warn = _logProxy('warn');
|
|
80
|
+
self.error = _logProxy('error');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.DiagAPI = DiagAPI;
|
|
84
|
+
//# sourceMappingURL=diag.js.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright The OpenTelemetry Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.MetricsAPI = void 0;
|
|
8
|
+
const NoopMeterProvider_1 = require("../metrics/NoopMeterProvider");
|
|
9
|
+
const global_utils_1 = require("../internal/global-utils");
|
|
10
|
+
const diag_1 = require("./diag");
|
|
11
|
+
const API_NAME = 'metrics';
|
|
12
|
+
/**
|
|
13
|
+
* Singleton object which represents the entry point to the OpenTelemetry Metrics API
|
|
14
|
+
*/
|
|
15
|
+
class MetricsAPI {
|
|
16
|
+
/** Empty private constructor prevents end users from constructing a new instance of the API */
|
|
17
|
+
constructor() { }
|
|
18
|
+
/** Get the singleton instance of the Metrics API */
|
|
19
|
+
static getInstance() {
|
|
20
|
+
if (!this._instance) {
|
|
21
|
+
this._instance = new MetricsAPI();
|
|
22
|
+
}
|
|
23
|
+
return this._instance;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Set the current global meter provider.
|
|
27
|
+
* Returns true if the meter provider was successfully registered, else false.
|
|
28
|
+
*/
|
|
29
|
+
setGlobalMeterProvider(provider) {
|
|
30
|
+
return (0, global_utils_1.registerGlobal)(API_NAME, provider, diag_1.DiagAPI.instance());
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Returns the global meter provider.
|
|
34
|
+
*/
|
|
35
|
+
getMeterProvider() {
|
|
36
|
+
return (0, global_utils_1.getGlobal)(API_NAME) || NoopMeterProvider_1.NOOP_METER_PROVIDER;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Returns a meter from the global meter provider.
|
|
40
|
+
*/
|
|
41
|
+
getMeter(name, version, options) {
|
|
42
|
+
return this.getMeterProvider().getMeter(name, version, options);
|
|
43
|
+
}
|
|
44
|
+
/** Remove the global meter provider */
|
|
45
|
+
disable() {
|
|
46
|
+
(0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.MetricsAPI = MetricsAPI;
|
|
50
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright The OpenTelemetry Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.PropagationAPI = void 0;
|
|
8
|
+
const global_utils_1 = require("../internal/global-utils");
|
|
9
|
+
const NoopTextMapPropagator_1 = require("../propagation/NoopTextMapPropagator");
|
|
10
|
+
const TextMapPropagator_1 = require("../propagation/TextMapPropagator");
|
|
11
|
+
const context_helpers_1 = require("../baggage/context-helpers");
|
|
12
|
+
const utils_1 = require("../baggage/utils");
|
|
13
|
+
const diag_1 = require("./diag");
|
|
14
|
+
const API_NAME = 'propagation';
|
|
15
|
+
const NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator_1.NoopTextMapPropagator();
|
|
16
|
+
/**
|
|
17
|
+
* Singleton object which represents the entry point to the OpenTelemetry Propagation API
|
|
18
|
+
*
|
|
19
|
+
* @since 1.0.0
|
|
20
|
+
*/
|
|
21
|
+
class PropagationAPI {
|
|
22
|
+
/** Empty private constructor prevents end users from constructing a new instance of the API */
|
|
23
|
+
constructor() {
|
|
24
|
+
this.createBaggage = utils_1.createBaggage;
|
|
25
|
+
this.getBaggage = context_helpers_1.getBaggage;
|
|
26
|
+
this.getActiveBaggage = context_helpers_1.getActiveBaggage;
|
|
27
|
+
this.setBaggage = context_helpers_1.setBaggage;
|
|
28
|
+
this.deleteBaggage = context_helpers_1.deleteBaggage;
|
|
29
|
+
}
|
|
30
|
+
/** Get the singleton instance of the Propagator API */
|
|
31
|
+
static getInstance() {
|
|
32
|
+
if (!this._instance) {
|
|
33
|
+
this._instance = new PropagationAPI();
|
|
34
|
+
}
|
|
35
|
+
return this._instance;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Set the current propagator.
|
|
39
|
+
*
|
|
40
|
+
* @returns true if the propagator was successfully registered, else false
|
|
41
|
+
*/
|
|
42
|
+
setGlobalPropagator(propagator) {
|
|
43
|
+
return (0, global_utils_1.registerGlobal)(API_NAME, propagator, diag_1.DiagAPI.instance());
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Inject context into a carrier to be propagated inter-process
|
|
47
|
+
*
|
|
48
|
+
* @param context Context carrying tracing data to inject
|
|
49
|
+
* @param carrier carrier to inject context into
|
|
50
|
+
* @param setter Function used to set values on the carrier
|
|
51
|
+
*/
|
|
52
|
+
inject(context, carrier, setter = TextMapPropagator_1.defaultTextMapSetter) {
|
|
53
|
+
return this._getGlobalPropagator().inject(context, carrier, setter);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Extract context from a carrier
|
|
57
|
+
*
|
|
58
|
+
* @param context Context which the newly created context will inherit from
|
|
59
|
+
* @param carrier Carrier to extract context from
|
|
60
|
+
* @param getter Function used to extract keys from a carrier
|
|
61
|
+
*/
|
|
62
|
+
extract(context, carrier, getter = TextMapPropagator_1.defaultTextMapGetter) {
|
|
63
|
+
return this._getGlobalPropagator().extract(context, carrier, getter);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Return a list of all fields which may be used by the propagator.
|
|
67
|
+
*/
|
|
68
|
+
fields() {
|
|
69
|
+
return this._getGlobalPropagator().fields();
|
|
70
|
+
}
|
|
71
|
+
/** Remove the global propagator */
|
|
72
|
+
disable() {
|
|
73
|
+
(0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());
|
|
74
|
+
}
|
|
75
|
+
_getGlobalPropagator() {
|
|
76
|
+
return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.PropagationAPI = PropagationAPI;
|
|
80
|
+
//# sourceMappingURL=propagation.js.map
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright The OpenTelemetry Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TraceAPI = void 0;
|
|
8
|
+
const global_utils_1 = require("../internal/global-utils");
|
|
9
|
+
const ProxyTracerProvider_1 = require("../trace/ProxyTracerProvider");
|
|
10
|
+
const spancontext_utils_1 = require("../trace/spancontext-utils");
|
|
11
|
+
const context_utils_1 = require("../trace/context-utils");
|
|
12
|
+
const diag_1 = require("./diag");
|
|
13
|
+
const API_NAME = 'trace';
|
|
14
|
+
/**
|
|
15
|
+
* Singleton object which represents the entry point to the OpenTelemetry Tracing API
|
|
16
|
+
*
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
*/
|
|
19
|
+
class TraceAPI {
|
|
20
|
+
/** Empty private constructor prevents end users from constructing a new instance of the API */
|
|
21
|
+
constructor() {
|
|
22
|
+
this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();
|
|
23
|
+
this.wrapSpanContext = spancontext_utils_1.wrapSpanContext;
|
|
24
|
+
this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;
|
|
25
|
+
this.deleteSpan = context_utils_1.deleteSpan;
|
|
26
|
+
this.getSpan = context_utils_1.getSpan;
|
|
27
|
+
this.getActiveSpan = context_utils_1.getActiveSpan;
|
|
28
|
+
this.getSpanContext = context_utils_1.getSpanContext;
|
|
29
|
+
this.setSpan = context_utils_1.setSpan;
|
|
30
|
+
this.setSpanContext = context_utils_1.setSpanContext;
|
|
31
|
+
}
|
|
32
|
+
/** Get the singleton instance of the Trace API */
|
|
33
|
+
static getInstance() {
|
|
34
|
+
if (!this._instance) {
|
|
35
|
+
this._instance = new TraceAPI();
|
|
36
|
+
}
|
|
37
|
+
return this._instance;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Set the current global tracer.
|
|
41
|
+
*
|
|
42
|
+
* @returns true if the tracer provider was successfully registered, else false
|
|
43
|
+
*/
|
|
44
|
+
setGlobalTracerProvider(provider) {
|
|
45
|
+
const success = (0, global_utils_1.registerGlobal)(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance());
|
|
46
|
+
if (success) {
|
|
47
|
+
this._proxyTracerProvider.setDelegate(provider);
|
|
48
|
+
}
|
|
49
|
+
return success;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Returns the global tracer provider.
|
|
53
|
+
*/
|
|
54
|
+
getTracerProvider() {
|
|
55
|
+
return (0, global_utils_1.getGlobal)(API_NAME) || this._proxyTracerProvider;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Returns a tracer from the global tracer provider.
|
|
59
|
+
*/
|
|
60
|
+
getTracer(name, version) {
|
|
61
|
+
return this.getTracerProvider().getTracer(name, version);
|
|
62
|
+
}
|
|
63
|
+
/** Remove the global tracer provider */
|
|
64
|
+
disable() {
|
|
65
|
+
(0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());
|
|
66
|
+
this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.TraceAPI = TraceAPI;
|
|
70
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright The OpenTelemetry Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.deleteBaggage = exports.setBaggage = exports.getActiveBaggage = exports.getBaggage = void 0;
|
|
8
|
+
const context_1 = require("../api/context");
|
|
9
|
+
const context_2 = require("../context/context");
|
|
10
|
+
/**
|
|
11
|
+
* Baggage key
|
|
12
|
+
*/
|
|
13
|
+
const BAGGAGE_KEY = (0, context_2.createContextKey)('OpenTelemetry Baggage Key');
|
|
14
|
+
/**
|
|
15
|
+
* Retrieve the current baggage from the given context
|
|
16
|
+
*
|
|
17
|
+
* @param {Context} Context that manage all context values
|
|
18
|
+
* @returns {Baggage} Extracted baggage from the context
|
|
19
|
+
*/
|
|
20
|
+
function getBaggage(context) {
|
|
21
|
+
return context.getValue(BAGGAGE_KEY) || undefined;
|
|
22
|
+
}
|
|
23
|
+
exports.getBaggage = getBaggage;
|
|
24
|
+
/**
|
|
25
|
+
* Retrieve the current baggage from the active/current context
|
|
26
|
+
*
|
|
27
|
+
* @returns {Baggage} Extracted baggage from the context
|
|
28
|
+
*/
|
|
29
|
+
function getActiveBaggage() {
|
|
30
|
+
return getBaggage(context_1.ContextAPI.getInstance().active());
|
|
31
|
+
}
|
|
32
|
+
exports.getActiveBaggage = getActiveBaggage;
|
|
33
|
+
/**
|
|
34
|
+
* Store a baggage in the given context
|
|
35
|
+
*
|
|
36
|
+
* @param {Context} Context that manage all context values
|
|
37
|
+
* @param {Baggage} baggage that will be set in the actual context
|
|
38
|
+
*/
|
|
39
|
+
function setBaggage(context, baggage) {
|
|
40
|
+
return context.setValue(BAGGAGE_KEY, baggage);
|
|
41
|
+
}
|
|
42
|
+
exports.setBaggage = setBaggage;
|
|
43
|
+
/**
|
|
44
|
+
* Delete the baggage stored in the given context
|
|
45
|
+
*
|
|
46
|
+
* @param {Context} Context that manage all context values
|
|
47
|
+
*/
|
|
48
|
+
function deleteBaggage(context) {
|
|
49
|
+
return context.deleteValue(BAGGAGE_KEY);
|
|
50
|
+
}
|
|
51
|
+
exports.deleteBaggage = deleteBaggage;
|
|
52
|
+
//# sourceMappingURL=context-helpers.js.map
|