failproofai 0.0.6-beta.2 → 0.0.6-beta.3
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 +3 -3
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +1 -1
- 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.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- 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.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 +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
- 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/_not-found.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +15 -15
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
- 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/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.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/server-reference-manifest.json +1 -1
- 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/chunks/[root-of-the-server]__0g72weg._.js +1 -1
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__05akje6._.js → [root-of-the-server]__096k.db._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0i5kvry._.js → [root-of-the-server]__0kyh86x._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
- package/.next/standalone/.next/static/chunks/{1052sguyd-.ka.js → 0-dm_9a6nsc2l.js} +1 -1
- package/.next/standalone/.next/static/chunks/{05j1px0r8yzh6.js → 01pmw1-asbek~.js} +2 -2
- package/.next/standalone/.next/static/chunks/{14cl9poem30dq.js → 051m32nx~n5yr.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0badv41uxa56..js → 0a-yctdwn368y.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0xpl.oscrakvx.js → 0l-mu4okl-cj1.js} +1 -1
- package/.next/standalone/.next/static/chunks/{00j0rr7rh8ef8.js → 0mazj-p-~2kc6.js} +1 -1
- package/.next/standalone/.next/static/chunks/0qakntsrpc~1j.js +6 -0
- package/.next/standalone/.next/static/chunks/{0npb~873.wvg3.js → 156zca6aewyr-.js} +1 -1
- package/.next/standalone/CHANGELOG.md +7 -0
- package/.next/standalone/bin/failproofai.mjs +91 -4
- package/.next/standalone/dist/cli.mjs +1155 -54
- package/.next/standalone/docs/ar/built-in-policies.mdx +118 -118
- package/.next/standalone/docs/built-in-policies.mdx +2 -2
- package/.next/standalone/docs/de/built-in-policies.mdx +48 -48
- package/.next/standalone/docs/es/built-in-policies.mdx +82 -82
- package/.next/standalone/docs/fr/built-in-policies.mdx +72 -72
- package/.next/standalone/docs/he/built-in-policies.mdx +129 -128
- package/.next/standalone/docs/hi/built-in-policies.mdx +178 -182
- package/.next/standalone/docs/it/built-in-policies.mdx +64 -64
- package/.next/standalone/docs/ja/built-in-policies.mdx +128 -128
- package/.next/standalone/docs/ko/built-in-policies.mdx +111 -111
- package/.next/standalone/docs/pt-br/built-in-policies.mdx +65 -65
- package/.next/standalone/docs/ru/built-in-policies.mdx +72 -72
- package/.next/standalone/docs/tr/built-in-policies.mdx +99 -99
- package/.next/standalone/docs/vi/built-in-policies.mdx +69 -72
- package/.next/standalone/docs/zh/built-in-policies.mdx +76 -78
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/auth/login.ts +104 -0
- package/.next/standalone/src/auth/logout.ts +50 -0
- package/.next/standalone/src/auth/token-store.ts +64 -0
- package/.next/standalone/src/hooks/builtin-policies.ts +22 -20
- package/.next/standalone/src/hooks/handler.ts +35 -15
- package/.next/standalone/src/relay/daemon.ts +362 -0
- package/.next/standalone/src/relay/pid.ts +76 -0
- package/.next/standalone/src/relay/queue.ts +225 -0
- package/bin/failproofai.mjs +91 -4
- package/dist/cli.mjs +1155 -54
- package/package.json +1 -1
- package/src/auth/login.ts +104 -0
- package/src/auth/logout.ts +50 -0
- package/src/auth/token-store.ts +64 -0
- package/src/hooks/builtin-policies.ts +22 -20
- package/src/hooks/handler.ts +35 -15
- package/src/relay/daemon.ts +362 -0
- package/src/relay/pid.ts +76 -0
- package/src/relay/queue.ts +225 -0
- package/.next/standalone/.next/static/chunks/0ijk_kek9_wyx.js +0 -6
- /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → r-wX0MuAfCjbhJm3phQc8}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → r-wX0MuAfCjbhJm3phQc8}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{A9pNTZdoYJTVyPAYwQMx5 → r-wX0MuAfCjbhJm3phQc8}/_ssgManifest.js +0 -0
package/bin/failproofai.mjs
CHANGED
|
@@ -57,6 +57,20 @@ if (hookIdx >= 0) {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
// --relay-daemon — internal: long-running background process started by
|
|
61
|
+
// ensureRelayRunning(). Streams queued events to the server via WebSocket.
|
|
62
|
+
if (args.includes("--relay-daemon")) {
|
|
63
|
+
try {
|
|
64
|
+
const { runDaemon } = await import("../src/relay/daemon");
|
|
65
|
+
await runDaemon();
|
|
66
|
+
process.exit(0);
|
|
67
|
+
} catch (err) {
|
|
68
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
69
|
+
console.error(`Relay daemon error: ${msg}`);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
60
74
|
/**
|
|
61
75
|
* Centralised error handler for all CLI subcommands.
|
|
62
76
|
* CliError → clean message, no stack trace, exit exitCode (1 or 2)
|
|
@@ -64,7 +78,7 @@ if (hookIdx >= 0) {
|
|
|
64
78
|
*/
|
|
65
79
|
async function runCli() {
|
|
66
80
|
// --help / -h (only when not inside a subcommand that handles its own --help)
|
|
67
|
-
const SUBCOMMANDS = ["policies"];
|
|
81
|
+
const SUBCOMMANDS = ["policies", "login", "logout", "whoami", "relay", "sync"];
|
|
68
82
|
if ((args.includes("--help") || args.includes("-h")) && !SUBCOMMANDS.includes(args[0])) {
|
|
69
83
|
const extraArgs = args.filter((a) => a !== "--help" && a !== "-h");
|
|
70
84
|
if (extraArgs.length > 0) {
|
|
@@ -94,6 +108,12 @@ COMMANDS
|
|
|
94
108
|
|
|
95
109
|
policies --help, -h Show this help for the policies command
|
|
96
110
|
|
|
111
|
+
login Authenticate with the failproofai cloud (Google OAuth)
|
|
112
|
+
logout Clear local auth tokens and stop relay daemon
|
|
113
|
+
whoami Print current logged-in user
|
|
114
|
+
relay start|stop|status Manage the event relay daemon
|
|
115
|
+
sync One-shot flush of pending events to the server
|
|
116
|
+
|
|
97
117
|
--version, -v Print version and exit
|
|
98
118
|
--help, -h Show this help message
|
|
99
119
|
|
|
@@ -288,6 +308,73 @@ EXAMPLES
|
|
|
288
308
|
process.exit(0);
|
|
289
309
|
}
|
|
290
310
|
|
|
311
|
+
// login — authenticate with failproofai server via Google OAuth
|
|
312
|
+
if (args[0] === "login") {
|
|
313
|
+
const { login } = await import("../src/auth/login");
|
|
314
|
+
await login();
|
|
315
|
+
process.exit(0);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// logout — clear local tokens and stop relay daemon
|
|
319
|
+
if (args[0] === "logout") {
|
|
320
|
+
const { logout } = await import("../src/auth/logout");
|
|
321
|
+
await logout();
|
|
322
|
+
process.exit(0);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// whoami — print current user and auth status
|
|
326
|
+
if (args[0] === "whoami") {
|
|
327
|
+
const { whoami } = await import("../src/auth/logout");
|
|
328
|
+
whoami();
|
|
329
|
+
process.exit(0);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
// relay start|stop|status — manage the event relay daemon
|
|
333
|
+
if (args[0] === "relay") {
|
|
334
|
+
const subcmd = args[1];
|
|
335
|
+
const { relayStatus, stopRelay } = await import("../src/relay/pid");
|
|
336
|
+
|
|
337
|
+
if (subcmd === "status") {
|
|
338
|
+
const s = relayStatus();
|
|
339
|
+
if (s.running) console.log(`Relay daemon running (pid ${s.pid})`);
|
|
340
|
+
else if (s.pid !== null) console.log(`Stale PID file (${s.pid}); daemon not running`);
|
|
341
|
+
else console.log("Relay daemon not running");
|
|
342
|
+
process.exit(0);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
if (subcmd === "stop") {
|
|
346
|
+
const stopped = stopRelay();
|
|
347
|
+
console.log(stopped ? "Relay daemon stopped" : "Relay daemon was not running");
|
|
348
|
+
process.exit(0);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
if (subcmd === "start") {
|
|
352
|
+
const { ensureRelayRunning, waitForRelayAlive } = await import("../src/relay/daemon");
|
|
353
|
+
ensureRelayRunning();
|
|
354
|
+
// Spawn is async — give the child a moment to write its PID file
|
|
355
|
+
const alive = await waitForRelayAlive();
|
|
356
|
+
const s = relayStatus();
|
|
357
|
+
if (alive && s.running) {
|
|
358
|
+
console.log(`Relay daemon started (pid ${s.pid})`);
|
|
359
|
+
process.exit(0);
|
|
360
|
+
}
|
|
361
|
+
console.log("Failed to start daemon");
|
|
362
|
+
process.exit(1);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
throw new CliError(
|
|
366
|
+
`Usage: failproofai relay <start|stop|status>`
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
// sync — one-shot flush of pending events to server (fallback for no daemon)
|
|
371
|
+
if (args[0] === "sync") {
|
|
372
|
+
const { runOneShotSync } = await import("../src/relay/daemon");
|
|
373
|
+
const count = await runOneShotSync();
|
|
374
|
+
console.log(`Synced ${count} event${count === 1 ? "" : "s"} to server`);
|
|
375
|
+
process.exit(0);
|
|
376
|
+
}
|
|
377
|
+
|
|
291
378
|
// Unknown flag guard — must appear after all known-flag branches
|
|
292
379
|
const knownFlags = ["--version", "-v", "--help", "-h", "--hook"];
|
|
293
380
|
const unknownFlag = args.find(a => a.startsWith("-") && !knownFlags.includes(a));
|
|
@@ -306,7 +393,7 @@ EXAMPLES
|
|
|
306
393
|
return dp[m][n];
|
|
307
394
|
}
|
|
308
395
|
|
|
309
|
-
const primary = ["--version", "--help", "--hook", "policies"];
|
|
396
|
+
const primary = ["--version", "--help", "--hook", "policies", "login", "logout", "whoami", "relay", "sync"];
|
|
310
397
|
const closest = primary.reduce((best, flag) => {
|
|
311
398
|
const dist = levenshtein(unknownFlag, flag);
|
|
312
399
|
return dist < best.dist ? { flag, dist } : best;
|
|
@@ -319,8 +406,8 @@ EXAMPLES
|
|
|
319
406
|
);
|
|
320
407
|
}
|
|
321
408
|
|
|
322
|
-
// Unknown subcommand guard (non-flag args that aren't
|
|
323
|
-
const unknownSubcommand = args.find(a => !a.startsWith("-") && a
|
|
409
|
+
// Unknown subcommand guard (non-flag args that aren't a known subcommand)
|
|
410
|
+
const unknownSubcommand = args.find(a => !a.startsWith("-") && !SUBCOMMANDS.includes(a));
|
|
324
411
|
if (unknownSubcommand) {
|
|
325
412
|
throw new CliError(
|
|
326
413
|
`Unknown command: ${unknownSubcommand}\n` +
|