failproofai 1.0.11-beta.3 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +4 -4
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  6. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.rsc +2 -2
  10. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  11. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  12. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.rsc +3 -3
  18. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  19. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  20. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  21. package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/audit/status/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
  30. package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/index.html +1 -1
  33. package/.next/standalone/.next/server/app/index.rsc +3 -3
  34. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  35. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  36. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  37. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  38. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
  41. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  44. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  47. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  48. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  51. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  54. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/chunks/_09dz7xva4ce_2._.js +1 -1
  57. package/.next/standalone/.next/server/chunks/_0tovk6q0miud6._.js +1 -1
  58. package/.next/standalone/.next/server/chunks/_0trp3ycqv17cl._.js +1 -1
  59. package/.next/standalone/.next/server/chunks/_1vslkoe35wok6._.js +1 -1
  60. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4vkpxxu7._.js +1 -1
  61. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08ch3staq3ejw._.js +1 -1
  62. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0m2etnchhciwn._.js → [root-of-the-server]__0_lbstb5x2t15._.js} +2 -2
  63. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bigvy9xmv2ka._.js +1 -1
  64. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h86bl2qf0k_o._.js +1 -1
  65. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pia5h3p8re4c._.js +1 -1
  66. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1-ey9fgesfbc0._.js +1 -1
  67. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15usvs-ms-0hf._.js +1 -1
  68. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16gb3_92zvk5x._.js +1 -1
  69. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1avi2kypusyb_._.js +1 -1
  70. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1r7drlqli-ado._.js +1 -1
  71. package/.next/standalone/.next/server/chunks/ssr/{_0g62t_u7bsc4i._.js → _0dc-of_bn0cim._.js} +2 -2
  72. package/.next/standalone/.next/server/chunks/ssr/_0eoura3_9gjb-._.js +1 -1
  73. package/.next/standalone/.next/server/chunks/ssr/_0pedwblqdoh58._.js +1 -1
  74. package/.next/standalone/.next/server/chunks/ssr/_1djqs9i27e4kg._.js +1 -1
  75. package/.next/standalone/.next/server/chunks/ssr/_1gb0ifpkowwub._.js +1 -1
  76. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo5_vm5f.js +2 -2
  77. package/.next/standalone/.next/server/chunks/ssr/app_actions_get-scheduled-audit_ts_0ei9snixb5fd-._.js +1 -1
  78. package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47q0xq5w._.js +1 -1
  79. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x33jqb6._.js +1 -1
  80. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpcz0uxur._.js +1 -1
  81. package/.next/standalone/.next/server/chunks/ssr/app_settings_02tf1h47jmhhd._.js +1 -1
  82. package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_1pr0bebnuzhnk.js → node_modules_html-to-image_es_index_1f_ymmaonkksc.js} +1 -1
  83. package/.next/standalone/.next/server/chunks/ssr/package_json_[json]_cjs_013tntikdft59._.js +1 -1
  84. package/.next/standalone/.next/server/chunks/ssr/src_hooks_pack-cli_ts_0t7me658zqmh_._.js +1 -1
  85. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  86. package/.next/standalone/.next/server/pages/404.html +1 -1
  87. package/.next/standalone/.next/server/pages/500.html +1 -1
  88. package/.next/standalone/.next/server/preview-props.json +3 -3
  89. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/server-reference-manifest.json +23 -23
  91. package/.next/standalone/.next/static/chunks/{08ri7z1cva-nm.js → 0ol2gj4ntfn56.js} +1 -1
  92. package/.next/standalone/.next/static/chunks/{0ychntysspq47.js → 15rm15u5a6dua.js} +1 -1
  93. package/.next/standalone/.next/static/chunks/{2ifk4hst9gfec.js → 16z6_d7sp61jm.js} +1 -1
  94. package/.next/standalone/.next/static/chunks/{2dbn-cl_ju3yb.js → 1_c0dc7zqj1n7.js} +1 -1
  95. package/.next/standalone/.next/static/chunks/{0kv4jur9k6mb0.js → 1kwj8uqxuv85t.js} +1 -1
  96. package/.next/standalone/.next/static/chunks/{0jz_z_4al287_.js → 302llgh97ce6w.js} +1 -1
  97. package/.next/standalone/.next/static/chunks/{1ti1i01dr_j1i.js → 37stoe-_yd852.js} +1 -1
  98. package/.next/standalone/.next/static/chunks/3hj5_7i3nw4zj.js +1 -0
  99. package/.next/standalone/.next/static/chunks/3iyoapeoq_hup.js +1 -0
  100. package/.next/standalone/.next/static/chunks/{1qbr87v23mzk5.js → 44a7k2_62qc-9.js} +2 -2
  101. package/.next/standalone/hermes-plugin/plugin.yaml +1 -1
  102. package/.next/standalone/package.json +9 -9
  103. package/.next/standalone/sdk/python/CHANGELOG.md +17 -5
  104. package/.next/standalone/sdk/python/failproofai_sdk/_redact.py +3 -5
  105. package/.next/standalone/sdk/python/failproofai_sdk/_resolver.py +13 -2
  106. package/.next/standalone/sdk/python/failproofai_sdk/integrations/otel.py +3 -1
  107. package/.next/standalone/sdk/python/tests/test_otel.py +25 -0
  108. package/.next/standalone/sdk/typescript/CHANGELOG.md +26 -1
  109. package/.next/standalone/sdk/typescript/integration/fixtures/mastra-0/package-lock.json +3 -3
  110. package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package-lock.json +162 -162
  111. package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package.json +1 -1
  112. package/.next/standalone/sdk/typescript/src/integrations/otel.ts +2 -1
  113. package/.next/standalone/sdk/typescript/src/resolver.ts +2 -1
  114. package/.next/standalone/sdk/typescript/test/otel.test.ts +25 -0
  115. package/.next/standalone/server.js +1 -1
  116. package/dist/cli.mjs +39 -23
  117. package/dist/worker.mjs +1 -1
  118. package/hermes-plugin/plugin.yaml +1 -1
  119. package/package.json +9 -9
  120. package/src/hooks/cloud-connection.ts +4 -1
  121. package/src/hooks/config-status.ts +2 -2
  122. package/src/hooks/otel-cli.ts +26 -8
  123. package/src/hooks/otel-writers.ts +16 -1
  124. package/.next/standalone/.next/static/chunks/140-bwb6l7ue8.js +0 -1
  125. package/.next/standalone/.next/static/chunks/3qx-e3n59bxxv.js +0 -1
  126. /package/.next/standalone/.next/static/{7n08rZWjZdMWbpBpp08dI → kEFP3ybXwZdriNEQmWwlH}/_buildManifest.js +0 -0
  127. /package/.next/standalone/.next/static/{7n08rZWjZdMWbpBpp08dI → kEFP3ybXwZdriNEQmWwlH}/_clientMiddlewareManifest.js +0 -0
  128. /package/.next/standalone/.next/static/{7n08rZWjZdMWbpBpp08dI → kEFP3ybXwZdriNEQmWwlH}/_ssgManifest.js +0 -0
@@ -8,6 +8,8 @@ import threading
8
8
  import uuid
9
9
  from pathlib import Path
10
10
 
11
+ from .._resolver import failproofai_home
12
+
11
13
  _MAX_BYTES = 8 * 1024 * 1024
12
14
  _METADATA = b'{"path":"/v1/traces","content_type":"application/json","encoding":null}\n'
13
15
 
@@ -85,7 +87,7 @@ class OtelSpanExporter:
85
87
  if self._stopped:
86
88
  return SpanExportResult.FAILURE
87
89
  try:
88
- directory = self._directory or Path(os.environ.get("FAILPROOFAI_HOME", Path.home() / ".failproofai")) / "state" / "spool-otlp"
90
+ directory = self._directory or failproofai_home() / "state" / "spool-otlp"
89
91
  items, chunks, size = [], [], 20
90
92
  for span in spans:
91
93
  encoded = json.dumps(_resource_span(span), ensure_ascii=True, separators=(",", ":")).encode("utf8")
@@ -102,6 +102,31 @@ def test_exporter_reports_failures_and_shutdown(tmp_path):
102
102
  provider.shutdown()
103
103
 
104
104
 
105
+ @pytest.mark.parametrize("blank", ["", " "])
106
+ def test_blank_failproofai_home_means_the_default_not_the_cwd(tmp_path, monkeypatch, blank):
107
+ from failproofai_sdk import _redact, _resolver
108
+ home, cwd = tmp_path / "home", tmp_path / "cwd"
109
+ cwd.mkdir()
110
+ monkeypatch.setenv("HOME", str(home))
111
+ monkeypatch.setenv("FAILPROOFAI_HOME", blank)
112
+ monkeypatch.chdir(cwd)
113
+ default = home / ".failproofai"
114
+ assert _resolver.failproofai_home() == default
115
+ assert _resolver.failproofai_custom_agents_dir() == default / "custom-agents"
116
+ provider = TracerProvider()
117
+ span = provider.get_tracer("app").start_span("blank-home")
118
+ span.end()
119
+ assert failproofai_sdk.OtelSpanExporter().export([span]) == SpanExportResult.SUCCESS
120
+ assert len(batches(default)) == 1
121
+ assert not any(cwd.iterdir()), "a blank FAILPROOFAI_HOME wrote into the working directory"
122
+ # Redaction reads the same root: a switch in the cwd must not be consulted.
123
+ (cwd / "config.json").write_text('{"collector":{"redact":"off"}}')
124
+ default.mkdir(parents=True, exist_ok=True)
125
+ (default / "config.json").write_text('{"collector":{"redact":"minimal"}}')
126
+ assert _redact.redaction_enabled(tmp_path / "unrelated") is True
127
+ provider.shutdown()
128
+
129
+
105
130
  def test_batches_split_at_relay_limit(tmp_path, monkeypatch):
106
131
  from opentelemetry.sdk.trace import SpanLimits
107
132
  monkeypatch.setenv("FAILPROOFAI_HOME", str(tmp_path))
@@ -8,10 +8,23 @@ Headings are `## <version> — <YYYY-MM-DD>`, and the section matching the versi
8
8
  in `src/version.ts` becomes that release's GitHub Release body. A release whose
9
9
  section is missing or empty is refused before anything is built.
10
10
 
11
- ## 0.0.1-beta.1 — 2026-09-24
11
+ ## 0.0.1-beta.1 — 2026-10-15
12
+
13
+ ### Features
14
+
15
+ - **OpenTelemetry spans to FailproofAI Cloud, without a network call in your
16
+ process.** `OtelSpanExporter`, or `instrument("otel", { spanProcessors })` before
17
+ you construct your provider, writes each finished batch of spans as OTLP/JSON to
18
+ the local spool (`~/.failproofai/state/spool-otlp`); the failproofai daemon
19
+ delivers it to Cloud with the machine's key and retries if Cloud is unreachable.
20
+ `@opentelemetry/sdk-trace-base` is only loaded when you call it.
12
21
 
13
22
  ### Fixes
14
23
 
24
+ - **A blank `FAILPROOFAI_HOME` no longer means the current directory.** An empty or
25
+ whitespace-only value made the exporter and the custom-agents resolver write
26
+ under the working directory, where the daemon never reads. Blank now means unset.
27
+
15
28
  - **The integration fixtures stop carrying 32 open security advisories.** Nothing
16
29
  the published package ships changed — every fixture under `integration/fixtures/`
17
30
  is `"private": true` and exists only to run the adapters against real framework
@@ -95,6 +108,18 @@ section is missing or empty is refused before anything is built.
95
108
  against the override. This package's own dev lockfile also moves
96
109
  `source-map-js` to `1.2.2` (GHSA-68fv-2mgg-jv7q). (#901)
97
110
 
111
+ - **`nextjs` and `mastra-0` clear their fixable advisories, again without moving
112
+ a pin.** `nextjs` moves `next` to `16.4.1` (six advisories, fixed in `16.3.8`),
113
+ `sharp` to `0.35.5` (GHSA-wq5f-xc86-pv6w) and `source-map-js` to `1.2.2`
114
+ (GHSA-68fv-2mgg-jv7q). `mastra-0` moves `@modelcontextprotocol/sdk` from
115
+ `1.30.1` to `1.32.1` (GHSA-6qxp-vccf-f47h), inside the `^1.17.5` range
116
+ `@mastra/mcp@0.14.5` declares, so only the lockfile changes. Dependabot's
117
+ version of this PR also moved `ai-4` to `ai@5.0.52` and `mastra-0` to
118
+ `@mastra/core@1.77.0`, which cannot install beside `@mastra/mcp@0.14.5` and
119
+ failed every integration shard, and `nextjs`'s `ai` to `7.0.141`, off the
120
+ `ai-7` twin its routes' traces are compared against. None of those are
121
+ applied. (#902)
122
+
98
123
  ## 0.0.1-beta.0 — 2026-09-23
99
124
 
100
125
  ### Added
@@ -1026,9 +1026,9 @@
1026
1026
  "license": "BSD-3-Clause"
1027
1027
  },
1028
1028
  "node_modules/@modelcontextprotocol/sdk": {
1029
- "version": "1.30.1",
1030
- "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.30.1.tgz",
1031
- "integrity": "sha512-H2HxLvC3HDNybePJaLdSrU1hhUK5iQw+WvV1b01myFyI7sdVGe1u/IPTE5D9fGCiJDVtgMV/lmFkQXLmQyIFYA==",
1029
+ "version": "1.32.1",
1030
+ "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.32.1.tgz",
1031
+ "integrity": "sha512-2DdE+SJDtzLEEWzY1ZjY7Q+VcPhcV1KisD3zI4u0XZyktsjHum1mwbMI+JaulUBi2OZk+KJAi2uPXzxichPkdw==",
1032
1032
  "license": "MIT",
1033
1033
  "dependencies": {
1034
1034
  "@hono/node-server": "^1.19.9 || ^2.0.5",