failproofai 1.0.12-beta.1 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) 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 +2 -2
  42. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  45. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  48. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  49. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  52. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  55. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.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/_1ek68lnh2daur._.js +2 -2
  60. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4vkpxxu7._.js +1 -1
  61. package/.next/standalone/.next/server/chunks/src_hooks_0_em82s16zfym._.js +1 -1
  62. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08ch3staq3ejw._.js +1 -1
  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]__167mipqmjprq5._.js +3 -0
  69. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16gb3_92zvk5x._.js +1 -1
  70. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1avi2kypusyb_._.js +1 -1
  71. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1r7drlqli-ado._.js +1 -1
  72. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0b78b0j8iyv6l._.js → [root-of-the-server]__1vofkb2oq7p7e._.js} +1 -1
  73. package/.next/standalone/.next/server/chunks/ssr/_0eoura3_9gjb-._.js +1 -1
  74. package/.next/standalone/.next/server/chunks/ssr/{_1a3tubds7s7ow._.js → _0ouu886szh6yj._.js} +4 -4
  75. package/.next/standalone/.next/server/chunks/ssr/_0pedwblqdoh58._.js +1 -1
  76. package/.next/standalone/.next/server/chunks/ssr/_1d98fyfrcaqhy._.js +3 -0
  77. package/.next/standalone/.next/server/chunks/ssr/_1djqs9i27e4kg._.js +1 -1
  78. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo5_vm5f.js +2 -2
  79. package/.next/standalone/.next/server/chunks/ssr/app_actions_get-scheduled-audit_ts_0ei9snixb5fd-._.js +1 -1
  80. package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47q0xq5w._.js +1 -1
  81. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x33jqb6._.js +1 -1
  82. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpcz0uxur._.js +2 -2
  83. package/.next/standalone/.next/server/chunks/ssr/app_settings_02tf1h47jmhhd._.js +1 -1
  84. package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_1i8oid1gc7s1f.js → node_modules_html-to-image_es_index_0tqc05n832v7a.js} +1 -1
  85. package/.next/standalone/.next/server/chunks/ssr/package_json_[json]_cjs_013tntikdft59._.js +1 -1
  86. package/.next/standalone/.next/server/chunks/ssr/src_hooks_0agdmptetetdt._.js +1 -1
  87. package/.next/standalone/.next/server/chunks/ssr/src_hooks_0mdwgjisv4fub._.js +1 -1
  88. package/.next/standalone/.next/server/chunks/ssr/src_hooks_fp-config_ts_04t589gp4p60j._.js +1 -1
  89. package/.next/standalone/.next/server/chunks/ssr/src_hooks_pack-cli_ts_0t7me658zqmh_._.js +1 -1
  90. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  91. package/.next/standalone/.next/server/pages/404.html +1 -1
  92. package/.next/standalone/.next/server/pages/500.html +1 -1
  93. package/.next/standalone/.next/server/preview-props.json +3 -3
  94. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/server-reference-manifest.json +23 -23
  96. package/.next/standalone/.next/static/chunks/{1b32-afqacaen.js → 0el9n3h9_zp5m.js} +1 -1
  97. package/.next/standalone/.next/static/chunks/0k7g_8x3o6gd-.js +1 -0
  98. package/.next/standalone/.next/static/chunks/{42e8zab314654.js → 0umzct31duk5g.js} +1 -1
  99. package/.next/standalone/.next/static/chunks/{24w3x2da9sk49.js → 0wobqgosirs8p.js} +1 -1
  100. package/.next/standalone/.next/static/chunks/12rug3jilwqzs.js +1 -0
  101. package/.next/standalone/.next/static/chunks/{2-tf6_7u623kd.js → 1kduj74-715jh.js} +1 -1
  102. package/.next/standalone/.next/static/chunks/2701amhrbsbot.js +1 -0
  103. package/.next/standalone/.next/static/chunks/{18433qz-8njv3.js → 27cavoc8paelg.js} +1 -1
  104. package/.next/standalone/.next/static/chunks/{0_zfad4co-t2z.js → 2ve23a7keupjw.js} +1 -1
  105. package/.next/standalone/.next/static/chunks/3bv6xaoitjpnh.js +6 -0
  106. package/.next/standalone/app/actions/update-jev-config.ts +5 -3
  107. package/.next/standalone/app/settings/jev-panel.tsx +1 -1
  108. package/.next/standalone/fp-cloud-cli/CHANGELOG.md +28 -18
  109. package/.next/standalone/fp-cloud-cli/README.md +127 -9
  110. package/.next/standalone/fp-cloud-cli/fp_cli/app.py +15 -1
  111. package/.next/standalone/fp-cloud-cli/fp_cli/client.py +199 -34
  112. package/.next/standalone/fp-cloud-cli/fp_cli/cloud_output.py +523 -0
  113. package/.next/standalone/fp-cloud-cli/fp_cli/commands/_cloud.py +45 -0
  114. package/.next/standalone/fp-cloud-cli/fp_cli/commands/_write.py +3 -1
  115. package/.next/standalone/fp-cloud-cli/fp_cli/commands/account_cmds.py +171 -0
  116. package/.next/standalone/fp-cloud-cli/fp_cli/commands/agent_cmds.py +80 -7
  117. package/.next/standalone/fp-cloud-cli/fp_cli/commands/alerts_cmds.py +23 -0
  118. package/.next/standalone/fp-cloud-cli/fp_cli/commands/audits_cmds.py +2 -0
  119. package/.next/standalone/fp-cloud-cli/fp_cli/commands/contracts_cmds.py +67 -0
  120. package/.next/standalone/fp-cloud-cli/fp_cli/commands/dashboards_cmds.py +159 -0
  121. package/.next/standalone/fp-cloud-cli/fp_cli/commands/evaluators_cmds.py +380 -0
  122. package/.next/standalone/fp-cloud-cli/fp_cli/commands/events_cmds.py +14 -1
  123. package/.next/standalone/fp-cloud-cli/fp_cli/commands/fleet_cmds.py +12 -216
  124. package/.next/standalone/fp-cloud-cli/fp_cli/commands/incidents_cmds.py +82 -6
  125. package/.next/standalone/fp-cloud-cli/fp_cli/commands/list_cmds.py +4 -1
  126. package/.next/standalone/fp-cloud-cli/fp_cli/commands/orgs_cmds.py +17 -0
  127. package/.next/standalone/fp-cloud-cli/fp_cli/commands/policies_cmds.py +143 -1
  128. package/.next/standalone/fp-cloud-cli/fp_cli/commands/queries_cmds.py +70 -0
  129. package/.next/standalone/fp-cloud-cli/fp_cli/commands/sentiment_cmds.py +49 -0
  130. package/.next/standalone/fp-cloud-cli/fp_cli/commands/sessions_cmds.py +95 -1
  131. package/.next/standalone/fp-cloud-cli/fp_cli/commands/settings_cmds.py +2 -0
  132. package/.next/standalone/fp-cloud-cli/fp_cli/commands/usage_cmds.py +21 -1
  133. package/.next/standalone/fp-cloud-cli/fp_cli/commands/users_cmds.py +14 -0
  134. package/.next/standalone/fp-cloud-cli/fp_cli/enforcement.py +7 -53
  135. package/.next/standalone/fp-cloud-cli/fp_cli/errors.py +3 -0
  136. package/.next/standalone/fp-cloud-cli/fp_cli/evaluator_spec.py +266 -0
  137. package/.next/standalone/fp-cloud-cli/fp_cli/output.py +189 -152
  138. package/.next/standalone/fp-cloud-cli/fp_cli/theme.py +21 -24
  139. package/.next/standalone/fp-cloud-cli/skill/SKILL.md +124 -23
  140. package/.next/standalone/fp-cloud-cli/skill/agents/openai.yaml +2 -1
  141. package/.next/standalone/fp-cloud-cli/skill/references/commands.md +173 -22
  142. package/.next/standalone/fp-cloud-cli/tests/fake_cloud_smoke.py +312 -0
  143. package/.next/standalone/fp-cloud-cli/tests/test_cloud_account.py +125 -0
  144. package/.next/standalone/fp-cloud-cli/tests/test_cloud_agent.py +253 -0
  145. package/.next/standalone/fp-cloud-cli/tests/test_cloud_human_views.py +287 -0
  146. package/.next/standalone/fp-cloud-cli/tests/test_cloud_jev.py +32 -197
  147. package/.next/standalone/fp-cloud-cli/tests/test_cloud_observability.py +116 -0
  148. package/.next/standalone/fp-cloud-cli/tests/test_cloud_transport.py +141 -0
  149. package/.next/standalone/fp-cloud-cli/tests/test_commands.py +3 -3
  150. package/.next/standalone/fp-cloud-cli/tests/test_dashboards_agent.py +3 -3
  151. package/.next/standalone/fp-cloud-cli/tests/test_evaluator_authoring.py +449 -0
  152. package/.next/standalone/fp-cloud-cli/tests/test_facets.py +1 -1
  153. package/.next/standalone/fp-cloud-cli/tests/test_help_table_coverage.py +15 -0
  154. package/.next/standalone/fp-cloud-cli/tests/test_operator.py +1 -1
  155. package/.next/standalone/fp-cloud-cli/tests/test_orgs.py +1 -1
  156. package/.next/standalone/fp-cloud-cli/tests/test_output.py +37 -37
  157. package/.next/standalone/fp-cloud-cli/tests/test_round4_behaviour.py +144 -0
  158. package/.next/standalone/fp-cloud-cli/tests/test_screen_language.py +80 -0
  159. package/.next/standalone/fp-cloud-cli/tests/test_session_reevaluate.py +33 -0
  160. package/.next/standalone/fp-cloud-cli/tests/test_staging_parity.py +198 -0
  161. package/.next/standalone/fp-cloud-cli/tests/test_whoami.py +1 -1
  162. package/.next/standalone/hermes-plugin/__init__.py +11 -0
  163. package/.next/standalone/hermes-plugin/plugin.yaml +1 -1
  164. package/.next/standalone/package.json +11 -10
  165. package/.next/standalone/sdk/python/uv.lock +31 -8
  166. package/.next/standalone/sdk/typescript/integration/fixtures/ai-4/package-lock.json +68 -176
  167. package/.next/standalone/sdk/typescript/integration/fixtures/ai-4/package.json +2 -2
  168. package/.next/standalone/sdk/typescript/integration/fixtures/ai-5/package-lock.json +4 -4
  169. package/.next/standalone/sdk/typescript/integration/fixtures/ai-5/package.json +1 -1
  170. package/.next/standalone/sdk/typescript/integration/fixtures/ai-6/package-lock.json +7 -7
  171. package/.next/standalone/sdk/typescript/integration/fixtures/ai-6/package.json +1 -1
  172. package/.next/standalone/sdk/typescript/integration/fixtures/ai-7/package-lock.json +7 -7
  173. package/.next/standalone/sdk/typescript/integration/fixtures/ai-7/package.json +1 -1
  174. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-0.3/package-lock.json +98 -115
  175. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-0.3/package.json +3 -3
  176. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-1/package-lock.json +4 -4
  177. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-1/package.json +1 -1
  178. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-dup-core/package-lock.json +4 -4
  179. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-dup-core/package.json +1 -1
  180. package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.11/package-lock.json +149 -171
  181. package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.11/package.json +2 -2
  182. package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.12/package-lock.json +4 -4
  183. package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.12/package.json +1 -1
  184. package/.next/standalone/sdk/typescript/integration/fixtures/mastra-0/package-lock.json +25 -25
  185. package/.next/standalone/sdk/typescript/integration/fixtures/mastra-0/package.json +1 -1
  186. package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package-lock.json +7 -7
  187. package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package.json +1 -1
  188. package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package-lock.json +10 -10
  189. package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package.json +1 -1
  190. package/.next/standalone/sdk/typescript/integration/fixtures/runtimes/package-lock.json +7 -7
  191. package/.next/standalone/sdk/typescript/integration/fixtures/runtimes/package.json +1 -1
  192. package/.next/standalone/server.js +1 -1
  193. package/dist/cli.mjs +1760 -638
  194. package/dist/worker.mjs +426 -76
  195. package/hermes-plugin/__init__.py +11 -0
  196. package/hermes-plugin/plugin.yaml +1 -1
  197. package/package.json +11 -10
  198. package/src/audit/open-browser.ts +24 -7
  199. package/src/hooks/agent-roster.ts +9 -1
  200. package/src/hooks/agent-skill.ts +206 -0
  201. package/src/hooks/cloud-connection.ts +27 -51
  202. package/src/hooks/cloud-introspect.ts +5 -2
  203. package/src/hooks/cloud-login.ts +248 -0
  204. package/src/hooks/cloud-managed-policies.ts +54 -4
  205. package/src/hooks/codex-system-hooks.ts +10 -4
  206. package/src/hooks/config-status.ts +9 -3
  207. package/src/hooks/configure-wizard.ts +356 -32
  208. package/src/hooks/delivery-health.ts +47 -2
  209. package/src/hooks/effective-reviewers.ts +14 -0
  210. package/src/hooks/fp-config.ts +19 -0
  211. package/src/hooks/fp-home.ts +1 -1
  212. package/src/hooks/handler.ts +43 -5
  213. package/src/hooks/hook-activity-store.ts +7 -1
  214. package/src/hooks/integrations.ts +18 -3
  215. package/src/hooks/jev-activity.ts +117 -1
  216. package/src/hooks/jev-cli.ts +7 -9
  217. package/src/hooks/manager.ts +80 -46
  218. package/src/hooks/policy-evaluator.ts +17 -0
  219. package/src/hooks/policy-reviewability.ts +4 -2
  220. package/src/hooks/semantic/cloud-jev.ts +219 -28
  221. package/src/hooks/semantic/combine.ts +26 -1
  222. package/src/hooks/semantic/intent.ts +127 -24
  223. package/src/hooks/semantic/jev-client.ts +1 -1
  224. package/src/hooks/semantic/jev-config.ts +6 -27
  225. package/src/hooks/semantic/jev-review.ts +111 -4
  226. package/src/hooks/tui.ts +280 -0
  227. package/src/hooks/uninstall-cli.ts +12 -1
  228. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0588st-tpiuia._.js +0 -3
  229. package/.next/standalone/.next/server/chunks/ssr/_128ebxr83nk6g._.js +0 -3
  230. package/.next/standalone/.next/static/chunks/0jutamwqz8pg5.js +0 -1
  231. package/.next/standalone/.next/static/chunks/114hbolvrv94e.js +0 -1
  232. package/.next/standalone/.next/static/chunks/1p-hsi58i-6h0.js +0 -6
  233. package/.next/standalone/.next/static/chunks/3-pku9qwv1yfu.js +0 -1
  234. /package/.next/standalone/.next/static/{xq8UgF5yFxty1VWxY2hyn → D7LY1YSrw96ZxKSpxxrFw}/_buildManifest.js +0 -0
  235. /package/.next/standalone/.next/static/{xq8UgF5yFxty1VWxY2hyn → D7LY1YSrw96ZxKSpxxrFw}/_clientMiddlewareManifest.js +0 -0
  236. /package/.next/standalone/.next/static/{xq8UgF5yFxty1VWxY2hyn → D7LY1YSrw96ZxKSpxxrFw}/_ssgManifest.js +0 -0
@@ -6,35 +6,35 @@ entirely under ``NO_COLOR`` / non-color terminals.
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- ACCENT = "#9d7bff" # brand mark, box borders, active org, command names in hints
10
- TEXT = "#d8d2dd" # primary values
11
- TEXT_DIM = "#7d7488" # ids, resource names, org names
12
- LABEL = "#6b6478" # field labels, header cells, hints
13
- FAINT = "#5a5266" # separators, inactive markers
14
- THIN_RULE = "#2e2435" # the faint rule beneath a list-panel header
15
- BAR_EMPTY = "#2a2530" # the unfilled cells of a mini-bar (e.g. the aggregate avg bar)
16
- INSET_BG = "#231e2d" # a hair-lighter fill for a nested inset box (the login org picker)
9
+ ACCENT = "#66d1b5" # mint: active and successful states
10
+ TEXT = "default" # the terminal's foreground (also works on light themes)
11
+ TEXT_DIM = "#767f8b"
12
+ LABEL = "#767f8b" # grey labels and metadata
13
+ FAINT = "#767f8b"
14
+ THIN_RULE = "#3e434c"
15
+ BAR_EMPTY = "#3e434c"
16
+ INSET_BG = "default"
17
17
 
18
18
  # Errors theme — the one per-command border deviation (the `errors` list + aggregate card).
19
19
  # Always red, regardless of error count, so the two views read as one consistent family.
20
- BORDER_ERROR = "#e2564a" # red → the errors panel border (same as ERROR; consistent, not count-dependent)
21
- TITLE_ERROR_DIM = "#6e3530" # dim red → the errors title's non-name part + card separators
22
- RULE_ERROR = "#3a2d2d" # dim red → the errors list header rule (vs the neutral THIN_RULE)
20
+ BORDER_ERROR = "#e4587d"
21
+ TITLE_ERROR_DIM = LABEL
22
+ RULE_ERROR = THIN_RULE
23
23
 
24
24
  # Semantic value colors — for run/job states and score thresholds. (They coincide with
25
25
  # the perm risk colors below; named separately so the two uses can diverge later.)
26
- SUCCESS = "#5dcaa5" # green → run status: done/passed
27
- AMBER = "#ef9f27" # amber → run status: running/pending · score band .50–.80
28
- ERROR = "#e2564a" # red → run status: failed/error · score band < .50
29
- SCORE_HIGH = "#3ddbb8" # cyan-green → score band ≥ .80 (distinct from status green)
30
- BLUE = "#6b86d8" # blue → schema uuid/timestamp type category
31
- PINK = "#d4537e" # pink → numeric values (query run cells / scalar card) + numeric type category
26
+ SUCCESS = ACCENT
27
+ PINK = "#e4587d" # pink: commands, selection and attention
28
+ AMBER = PINK
29
+ ERROR = PINK
30
+ SCORE_HIGH = ACCENT
31
+ BLUE = ACCENT
32
32
 
33
33
  # Permission verb colors — by ACTION (the part after `:`), never by resource.
34
- PERM_READ = "#5dcaa5" # green → read
35
- PERM_WRITE = "#d4537e" # pink → add, create, write, update
36
- PERM_ACTION = "#ef9f27" # amber → use, trigger, run, ack
37
- PERM_DANGER = "#e2564a" # red → delete, disable, regenerate
34
+ PERM_READ = ACCENT
35
+ PERM_WRITE = PINK
36
+ PERM_ACTION = PINK
37
+ PERM_DANGER = PINK
38
38
 
39
39
  PERM_COLORS = {
40
40
  "read": PERM_READ,
@@ -44,9 +44,6 @@ PERM_COLORS = {
44
44
  }
45
45
  DEFAULT_PERM_COLOR = LABEL # any unmapped action → neutral dim (never crash / guess a risk)
46
46
 
47
- # Risk rank for ordering actions within a row: read → modify → invoke → destroy.
48
- PERM_RANK = {PERM_READ: 0, PERM_WRITE: 1, PERM_ACTION: 2, PERM_DANGER: 3}
49
-
50
47
 
51
48
  def perm_color(action: str) -> str:
52
49
  """The color for a permission action, or the neutral default if it's unmapped."""
@@ -4,12 +4,14 @@ description: |-
4
4
  The way to answer "how are my production AI agents doing?" and to run the team's agent-observability deployment — reach for it even on casual phrasing that names no tool.
5
5
 
6
6
  Trigger when the user wants to:
7
- • inspect agent telemetry — did agents error/fail/go flaky; sessions, events, latency, token usage, slowest models; eval/quality scores and whether quality dropped;
8
- • operate the deployment — ack/assign/resolve/mute/dismiss issues (alerts, reports, and audit findings) with notes; run and triage audits; see who has access and change roles (e.g. read-only); create or scope API keys (e.g. a push-only CI key); change settings; run saved or ad-hoc ClickHouse queries.
7
+ • inspect agent telemetry — did agents error/fail/go flaky; sessions, events, latency, token usage, slowest models, sentiment; eval/quality scores and whether quality dropped;
8
+ • operate the deployment — triage issues and audits; manage alerts, access, keys, settings, dashboards, and queries;
9
+ • manage Cloud enforcement — compose/test/backtest/publish policy versions (regex, Jev or both), deploy them to fleet machines or single agents, inspect guardrails, promote, or roll back;
10
+ • author, dry-run, deploy and backfill hosted code, LLM-judge or Jev evaluators (`fp evaluators`).
9
11
 
10
12
  Served by the `fp` CLI against FailproofAI Cloud.
11
13
 
12
- NOT for writing or designing an evaluator service / scoring logic (that's `agenteye-evaluator`), adding SDK/instrumentation to your app (that's `failproofai-sdk`, imported as `failproofai_sdk`), debugging the collector/daemon, or unrelated dev work (why a build/CI run failed, rotating non-FailproofAI Cloud secrets).
14
+ NOT for publishing reusable GitHub policy packs (`failproofai-policy-publish`), deciding what to evaluate (`failproofai-eval-brainstorm`), designing an evaluation's logic (`failproofai-eval-author`), instrumenting an app (`failproofai-sdk`), or debugging the local collector/daemon.
13
15
  ---
14
16
 
15
17
  # FailproofAI Cloud CLI
@@ -42,8 +44,8 @@ Throughout this skill, `fp` means "whichever form you resolved."
42
44
 
43
45
  - **Global options go BEFORE the command:** `fp --json events`, never
44
46
  `fp events --json`. Globals are `--base-url`, `--org`, `--token`,
45
- `--api-key`, `--json`, `--insecure`/`--secure`. After the command they're a
46
- usage error.
47
+ `--api-key`, `--json`, `--insecure`/`--secure`, `--timeout`, `--quiet`/`-q`,
48
+ `--no-color`. After the command they're a usage error.
47
49
  - **Two ways to authenticate, and they are not interchangeable:**
48
50
 
49
51
  | | How you supply it | What it is |
@@ -77,17 +79,19 @@ Throughout this skill, `fp` means "whichever form you resolved."
77
79
  a saved session (Click treats an empty env var as unset, so it falls to rung 4).
78
80
 
79
81
  - **Some commands need a signed-in user.** `login`, `logout`, `orgs *`, the whole
80
- `agent` group, `keys update`, and all of `policies *` / `fleet *` /
82
+ `agent` group, `agent brief`, `orgs create`, `evaluators draft`, `query compose`, `slack *`, `plan`, `plan claim`, `keys update`, every
83
+ `policies` subcommand except `test` (it runs locally and calls nothing), and all of `fleet *` /
81
84
  `guardrails *` refuse a key with a usage error (**exit 2**) and make **no
82
85
  network call at all** — there is no user to sign in, no saved active org to
83
86
  switch, no private assistant thread to own, and the enforcement write routes
84
87
  are root-only and deliberately absent from `/v1`. `keys update` is in that list
85
88
  rather than a special case: `keys:update` can never be granted to a key, so it
86
89
  is refused up front like the rest. The key is not the problem to fix — plan
87
- around them rather than retrying or hunting for a flag.
90
+ around them rather than retrying or hunting for a flag. The one inverse case:
91
+ `usage windows` is served on the versioned API only, so it needs `--api-key`
92
+ and refuses a session with exit 2.
88
93
  - **Default to `--json` and parse it.** It prints clean JSON to stdout and
89
- nothing else. The plain output is a boxed Rich UI meant for human eyes — it
90
- burns context with box-drawing characters and is awkward to parse. Use the
94
+ nothing else. The plain output uses open Rich tables for human eyes. Use the
91
95
  rendered output only when the user explicitly wants to *look* at something.
92
96
  - **Data → stdout, status/errors/prompts → stderr.** So a `--json` stdout
93
97
  capture is pure JSON even when a status line is shown.
@@ -101,7 +105,7 @@ Throughout this skill, `fp` means "whichever form you resolved."
101
105
  | 3 | can't reach the dashboard | check base-url / connectivity |
102
106
  | 4 | no usable credential — not signed in, session expired, **or the API key was rejected** | session: user must run `fp login`. Key: it's missing, mistyped, disabled, or belongs to another deployment — don't retry, and don't fall back to a session |
103
107
  | 5 | authenticated but missing permission | message names the exact permission |
104
- | 6 | resource not found | the named resource doesn't exist |
108
+ | 6 | resource not found / newer capability unavailable | check the id or Cloud version; do not retry blindly |
105
109
 
106
110
  ## 3. First call: confirm you're connected
107
111
 
@@ -163,11 +167,17 @@ ask** — don't rename-and-retry or rotate/regenerate the existing one. A
163
167
 
164
168
  State-changing commands: `keys create/update/disable/regenerate`,
165
169
  `users create/update/disable/enable`, `settings set`,
166
- `alerts create/update/delete/test`, the writing `issues` subcommands
167
- (`ack/assign/resolve/comment-add/comment-delete/subscribe/unsubscribe/open`),
168
- `audits create/edit/delete/run` and the finding-triage verbs
170
+ `alerts create/update/delete/test` and `alerts issues --create`, the writing `issues` subcommands
171
+ (`ack/assign/resolve/close/archive/unarchive/clear/comment-add/comment-delete/subscribe/unsubscribe/open`),
172
+ `audits create/edit/delete/run`, `audits contracts create/update` and the finding-triage verbs
169
173
  (`ack/mute/dismiss/resolve/reopen/assign`),
170
- `query create/update/delete`, `agent rename/delete`, `orgs switch`, and — the
174
+ `query create/update/delete`, `dashboards create/update/delete` and `dashboards tiles add/update/remove/layout`,
175
+ `roles create/update/delete`, `users delete`, `settings context-windows set/delete`, `otel enable/disable`,
176
+ `slack disconnect`, `orgs create`, `plan claim`, `sessions re-evaluate` and `sessions import`,
177
+ `evaluators create/deploy/enable/disable/label/backfill` (an enabled evaluator scores every
178
+ new session; judge/Jev evaluators and Jev dry-runs spend model budget),
179
+ `policies backtest --run` (spends Jev allowance), `agent ask --approve`,
180
+ `agent rename/delete`, `orgs switch`, and — the
171
181
  highest-consequence of the lot — `policies publish/enable/disable/delete` and
172
182
  `fleet deploy/rollback/rename`, which change what is ENFORCED on production
173
183
  machines. A `fleet deploy` replaces a machine's entire policy set, so name the
@@ -185,28 +195,34 @@ you need a flag you don't already know.
185
195
  - `evals` — evaluation results + scores; `--aggregate` for a health rollup; `--score key:min..max`.
186
196
  - `errors` — errored events; `--aggregate` for count / sessions / agents / last-seen.
187
197
  - `usage` — current org usage for its fixed 30-day metering window; needs `usage:read`.
188
- - `list <kind>` — **discover valid filter values first**: `envs agents event_types score_filters models hooks tools error_types`.
198
+ - `list <kind>` — **discover valid filter values first**: `envs agents event_types score_filters models hooks tools error_types trigger_events eval_envs metric_keys`.
199
+ - `sessions show|export|history|re-evaluate <id>` — one run in depth; `sessions import FILE...` uploads transcripts/JSONL.
200
+ - `events latency` — latency/token aggregate. `sentiment summary|messages|sessions|session <id>` — conversation sentiment.
201
+ - `dashboards list|show|create|update|delete` + `dashboards tiles <id> list|add|update|remove|layout` — org dashboards of saved-query tiles.
189
202
 
190
203
  **Manage (permission-gated, mutations):**
191
204
  - `keys list|show|create|update|disable|regenerate` — API keys; secret shown once.
192
205
  - `users list|show|create|update|disable|enable` — referenced by **email**.
193
206
  - `settings list|schema|set` — fixed registry; `schema` shows what each key accepts.
194
- - `alerts list|show|create|update|delete|test` — referenced by **name**.
195
- - `issues list|count|show|ack|assign|resolve|close|archive|unarchive|clear|comment-add|comment-list|comment-delete|subscribe|subscribers|unsubscribe|open` — by id (short ids accepted). **One board for everything needing attention**: alert breaches, hand-raised issues, and audit findings, told apart by a `source` of `alert` / `manual` / `audit`. (This group was called `incidents` before; the old name is gone.)
196
- - `audits list|show|create|edit|delete|run|runs` — scheduled sweeps, referenced by **name**; `audits findings|finding` + the triage verbs `ack|mute|dismiss|resolve|reopen|assign` act on a finding **id**. `audits run <name>` only *queues* a run (poll `audits runs <name>` for completion). See §8.
207
+ - `users delete <id>|defaults`, `roles list|show|create|update|delete` (permission sets), `settings context-windows list|set|delete`, `otel status|enable|disable`, `slack status|disconnect`, `orgs create`, `plan [claim]`.
208
+ - `alerts list|show|create|update|delete|test|recipients|issues` — referenced by **name** (`issues` takes the alert id); full flags in `references/commands.md#alerts`.
209
+ - `issues list|count|facets|show|ack|assign|resolve|close|archive|unarchive|clear|comment-add|comment-list|comment-delete|subscribe|subscribers|unsubscribe|open` — by id (short ids accepted). `list`/`count`/`facets` take the inbox filters (`--agent-id --env --machine --source --audit-id --assignee --archived --search --since`). **One board for everything needing attention**: alert breaches, hand-raised issues, and audit findings, told apart by a `source` of `alert` / `manual` / `audit`. (This group was called `incidents` before; the old name is gone.)
210
+ - `audits list|show|create|edit|delete|run|runs` — scheduled sweeps, referenced by **name**; `audits findings|finding` + the triage verbs `ack|mute|dismiss|resolve|reopen|assign` act on a finding **id**. `audits run <name>` only *queues* a run (poll `audits runs <name>` for completion). `audits contracts list|show|create|update` — per-agent contracts the audits read. See §8.
197
211
 
198
212
  **Enforce (cloud-managed policy, session-only — see §2):**
199
- - `policies list|show|publish|enable|disable|delete|test|compose` — policy versions. `publish` mints a version of a kind — `regex` (a local `.mjs`), `jev` (`--semantic checks.json`: Jev declarations, no JavaScript) or `both` (the two, the JavaScript reviewable by its own checks); list/show print the kind and the Jev check names; `test` runs one against a synthetic context locally (it applies each policy's `match` filter, so a policy that does not cover the `--event`/`--tool` you pass is reported `skipped`, not run). `enable`/`disable`/`delete` take `--yes`.
200
- - `fleet list|show|deploy|jev-mode|diff|history|rollback|rename` — which machines run which policies, and the policy errors each machine reports. **`deploy` REPLACES a machine's whole set** (`--add`/`--remove` amend it, `--set` replaces, `--create` mints a deployment, `--jev-mode off|observe|enforce|local` sets the machine's Jev mode from FailproofAI Cloud — overriding its own, machine-wide, and left alone when omitted; in `enforce` Jev's checks BLOCK calls as well as clear). `jev-mode <machine…|--all> <mode>` changes only the mode, never the set; `rollback` restores the generation's Jev mode too; it prints the plan and asks **only on an interactive terminal without `--json`** — under `--json` or with stdin redirected it applies immediately, so read `fleet show` first if you want review.
213
+ - `policies list|show|publish|enable|disable|delete|test|compose|author|backtest|candidacy` — policy versions. `author "<intent>" [--kind regex|jev|both]` drafts one from your org's events; `backtest` replays a file or published id against stored calls (jev/both: free estimate, `--run` spends Jev allowance); `candidacy --issue <id>` asks whether a policy could prevent an issue. None of the three publishes. `publish` mints a version of a kind — `regex` (a local `.mjs`), `jev` (`--semantic checks.json`: Jev declarations, no JavaScript) or `both` (the two, the JavaScript reviewable by its own checks); list/show print the kind and the Jev check names; `test` runs one against a synthetic context locally (it applies each policy's `match` filter, so a policy that does not cover the `--event`/`--tool` you pass is reported `skipped`, not run). `enable`/`disable`/`delete` take `--yes`.
214
+ - `fleet list|show|deploy|diff|history|rollback|rename` — which machines run which policies, and the policy errors each machine reports. **`deploy` REPLACES a machine's whole set** (`--add`/`--remove` amend it, `--set` replaces, `--create` mints a deployment). `--target POLICY=INTEGRATION[/agt_ID]` scopes one assignment to an integration or a single agent (repeat to OR), `--all-agents POLICY` clears that scope. There is no Jev mode to set: FailproofAI Cloud turns Jev on for a machine while a `jev`/`both` policy is deployed to it (off otherwise); trial one with `:observe`. `deploy` prints the plan and asks **only on an interactive terminal without `--json`** — under `--json` or with stdin redirected it applies immediately, so read `fleet show` first if you want review.
201
215
  - `guardrails summary|timeline` — what enforcement actually did; `--since 1h|6h|24h|7d`, `--machine`.
202
216
 
203
217
  **Analytics & assistant:**
204
218
  - `query list|show|create|update|delete|run|schema` — saved ClickHouse SQL + ad-hoc runner (`query run <name>` or `query run --sql "…"`); `query schema [table]` for table layout.
205
- - `agent health|models|chats|ask|show|rename|delete` — built-in assistant; `agent ask "…"` starts a chat, `--chat <short-id>` continues one.
219
+ - `query compose "<question>" [--run]` (AI SQL, session only) and `query export <id>|--sql … [--format csv|json] [--out FILE]`.
220
+ - `agent health|models|chats|ask|show|rename|delete|brief` — built-in assistant; `agent ask "…"` starts a chat, `--chat <short-id>` continues one. Assistant writes are declined in scripts/`--json` unless `--approve` (only with the user's explicit OK).
221
+ - `evaluators list|show|create|deploy|draft|dry-run|enable|disable|label|instances|schema|jobs|backfill` — hosted evaluator authoring (see "Author an evaluator" below); `evals` stays the results reader.
206
222
 
207
- **Identity:** `login`, `logout`, `whoami`, `orgs {list,switch,current,perms}`, `version`, `help`.
223
+ **Identity:** `login`, `logout`, `whoami`, `orgs {list,switch,current,perms,create}`, `version`, `help`.
208
224
  All of `login` / `logout` / `orgs` — like the whole `agent` group, `keys update`, and
209
- every `policies` / `fleet` / `guardrails` subcommand — are **session-only**: with a key
225
+ every `policies` (except `test`) / `fleet` / `guardrails` subcommand — are **session-only**: with a key
210
226
  they exit 2 without calling anything (§2). `whoami`, `version` and `help` work either way.
211
227
 
212
228
  ## 6. Translating plain-English requests
@@ -224,6 +240,12 @@ command (`list <kind>`, `whoami`, a `list` subcommand) before committing.
224
240
  | "how many events / how much traffic last week?" | `query schema` then `query run --sql "SELECT count() FROM events WHERE ts >= now() - INTERVAL 7 DAY"` |
225
241
  | "what has this org used this metering window?" | `usage` (or `--json usage` for the complete response) |
226
242
  | "is anything on fire?", "any alerts firing / open issues?" | `alerts list` + `issues list` (and `issues count`) |
243
+ | "what's assigned to me?", "open issues for agent X" | `issues list --assignee me`, `issues list --agent-id X` (`issues facets` shows valid values) |
244
+ | "alert me when errors spike" | `alerts create <name> --trigger-kind metric_threshold --trigger-spec '…' --severity warning` — **state it, then create** |
245
+ | "would this policy have blocked anything?", "backtest it" | `policies backtest <file-or-id>` (jev/both: estimate first; `--run` only with the user's OK — it spends Jev allowance) |
246
+ | "block X only for the Codex agent" | `fleet deploy <machine> --add <policy> --target <policy>=codex` — **confirm first** |
247
+ | "add an evaluation for Y", "score sessions for Y" | `failproofai-eval-author` to design it, then `evaluators draft`/`create`/`deploy` (+ `--backfill 7d`) |
248
+ | "upload these transcripts" | `sessions import <files> --dry-run`, then without `--dry-run` |
227
249
  | "ack / look at / resolve that issue" | `issues list` → `issues show <id>` → **confirm** → `issues ack`/`resolve <id>` |
228
250
  | "clear all our issues", "fresh start", "we changed the agents" | **settle the scope first** (`--all-audits` leaves alert and hand-opened issues alone; `--everything` does not; `--audit <id>` is one audit) → `issues clear <scope> --dry-run` → show the count → **confirm** → `issues clear <scope>` |
229
251
  | "we're not going to fix that one" | `issues close <id>` (NOT `resolve` — closed survives a recurrence) |
@@ -315,3 +337,82 @@ Two things about the flow matter when driving it from the CLI:
315
337
  Typical end-to-end: `audits list` → `audits run <name>` → poll `audits runs <name>`
316
338
  → `audits findings --audit <name>` (highest priority first) → `audits finding <id>`
317
339
  for the full write-up → **confirm with the user** → `audits resolve <id>`.
340
+
341
+ ## Author an evaluator
342
+
343
+ Use `fp evaluators` for hosted authoring; `fp evals` remains the results reader.
344
+ To decide *what* to measure use `failproofai-eval-brainstorm`; to design the
345
+ evaluation itself (code vs Jev vs LLM judge, the condition, the rubric) use
346
+ `failproofai-eval-author` — then come back here to draft, dry-run and deploy it.
347
+ Read [the evaluator command reference](references/commands.md#author-an-evaluator)
348
+ for the full flags and API spec shape. Creation enables a definition by default;
349
+ confirm the key, version, kind and budget before creating/deploying on a live org.
350
+
351
+ Discover with `fp --json evaluators instances` and `fp --json evaluators schema`.
352
+ The instance must be enabled. Authoring needs `evaluations:trigger`; session
353
+ dry-runs and schema profiling also need `events:read`.
354
+
355
+ Code workflow (write `error_free.py` as a single restricted Python expression,
356
+ not a module with imports or a function):
357
+
358
+ ```python
359
+ EvalResult(score=Score(1.0 if session.count("error") == 0 else 0.0), reasoning="Error-free session")
360
+ ```
361
+
362
+ ```bash
363
+ fp --json evaluators draft "Measure the absence of error events with code" --kind code --out error-free.json
364
+ fp --json evaluators create --file error-free.json --dry-run-on run-001
365
+ fp --json evaluators dry-run --code error_free.py --session run-001
366
+ fp --json evaluators deploy error_free --code error_free.py --version 2 --dry-run-on run-001
367
+ fp --json evaluators list --key error_free --all
368
+ fp --json evals --since 24h
369
+ ```
370
+
371
+ Review the draft before creating. It may choose a different `eval_key`: read
372
+ the file and use its key later; the filename does not determine the key.
373
+
374
+ Judge workflow (server selects the model; judge dry-runs are refused):
375
+
376
+ ```bash
377
+ fp --json evaluators create --key relevance --name Relevance --judge \
378
+ --criteria "Grade how directly the response answers the request" \
379
+ --step "Assess relevance and specificity on a continuous scale" --threshold 0.7
380
+ fp --json evaluators deploy relevance --version 2 --judge \
381
+ --criteria "Grade relevance, accuracy and completeness" --threshold 0.8
382
+ fp --json sessions re-evaluate run-001
383
+ fp --json sessions history run-001
384
+ ```
385
+
386
+ Jev workflow (dry-runs spend model budget):
387
+
388
+ ```bash
389
+ fp --json evaluators create --key resolution --name Resolution --jev noul \
390
+ --instructions "Did the assistant resolve the request?" \
391
+ --true "Resolved with supporting evidence" --false "Unresolved" --threshold 0.8
392
+ fp --json evaluators dry-run --jev noul --instructions "Was the request resolved?" \
393
+ --true "Resolved" --false "Unresolved" --session run-001
394
+ fp --json evaluators deploy resolution --version 2 --jev noul \
395
+ --instructions "Was the request resolved without unsupported claims?" \
396
+ --true "Resolved with evidence" --false "Unresolved or unsupported"
397
+ fp --json evaluators show resolution@2
398
+ ```
399
+
400
+ Use `--jev score` with 3–5 distinct `--level` values, ordered worst to best, for
401
+ a rubric. `deploy` creates the new immutable version **before** disabling older
402
+ enabled versions. A partial failure names the new id: inspect `list --all`,
403
+ then disable any remaining old version; do not retry creation blindly.
404
+ Backfill (`evaluators backfill`, or `deploy --backfill 7d`) covers code, judge
405
+ and Jev evaluators, at most 90 days, and queues only the (session, evaluator)
406
+ pairs not scored yet; judge/Jev backfills spend model budget, so run
407
+ `backfill --dry-run` first and tell the user the count.
408
+
409
+ Human mode displays dry-run outcomes before creation/deployment. Failed runs
410
+ stop the write unless `--force` is explicitly authorized; do not add it merely
411
+ to get past a failed check. Plan offers and claims require `fp login`, not a key.
412
+
413
+ AI drafting needs a signed-in session (`fp login`); evaluator API operations can
414
+ use a scoped key. Unknown-route 404s exit 6 with “not available on this
415
+ FailproofAI Cloud yet”; missing-record 404s report that the record was not found
416
+ (also exit 6). An assistant approval is different from ordinary
417
+ mutation confirmation: `agent ask` declines writes in scripts/`--json` unless
418
+ `--approve` was explicitly authorized by the user.
@@ -5,4 +5,5 @@
5
5
 
6
6
  # Let Codex auto-select this skill when a task matches the description
7
7
  # (set to false to require explicit `$fp-cloud-cli` invocation).
8
- allow_implicit_invocation: true
8
+ policy:
9
+ allow_implicit_invocation: true