@fayz-ai/plugin-tasks 0.11.14 → 0.11.15

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/dist/index.js CHANGED
@@ -5,6 +5,7 @@ import { useEffect } from 'react';
5
5
  import { CheckSquare } from 'lucide-react';
6
6
  import { useLayoutStore, useRailRow, Button, cn, SheetBody } from '@fayz-ai/ui';
7
7
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
8
+ import { MIGRATIONS } from '#migrations/main';
8
9
 
9
10
  // src/index.ts
10
11
 
@@ -224,335 +225,6 @@ function TasksLauncherRow({ railMounted }) {
224
225
  }
225
226
  );
226
227
  }
227
-
228
- // src/migrations/index.ts
229
- var MIGRATION_000_BASELINE = `-- ============================================================================
230
- -- plugins/plugin-tasks/src/migrations/000_baseline.sql \u2014 what installing this provisions, as one file.
231
- --
232
- -- GENERATED by scripts/emit-unit-baselines.mjs (#338). Do not edit by hand:
233
- -- change the schema, regenerate, and let scripts/check-chain-equivalence.mjs
234
- -- prove the result still matches.
235
- --
236
- -- This replaced 3 migration files. They are kept, unapplied, in
237
- -- migrations.archive/ \u2014 a year of decisions is worth reading even when it is no
238
- -- longer worth replaying.
239
- --
240
- -- Object order is fixed rather than dependency-sorted: schemas, types,
241
- -- sequences, tables, defaults, functions, constraints, views, indexes, foreign
242
- -- keys, triggers, row security, policies, grants. Dependencies BETWEEN units
243
- -- are carried by the order packages/db/chain.json declares.
244
- -- ============================================================================
245
-
246
- -- A LANGUAGE sql function binds its body at CREATE time, and 570 functions
247
- -- sorted by name are not sorted by who calls whom. This is what lets them load
248
- -- in any order; every body is still compiled on first call, so a genuinely
249
- -- broken reference surfaces then rather than never. Session-scoped.
250
- SET check_function_bodies = false;
251
-
252
-
253
-
254
- -- \u2500\u2500 default privileges: reset \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
255
- -- Cleared BEFORE anything is created, so every object below gets the ACL the
256
- -- dump describes rather than the image's defaults on top of it. Restored at
257
- -- the end of this file.
258
-
259
- DO $dp$ BEGIN
260
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;
261
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
262
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;
263
- END $dp$;
264
-
265
- DO $dp$ BEGIN
266
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;
267
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
268
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;
269
- END $dp$;
270
-
271
- DO $dp$ BEGIN
272
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;
273
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
274
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;
275
- END $dp$;
276
-
277
- DO $dp$ BEGIN
278
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;
279
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
280
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;
281
- END $dp$;
282
-
283
- DO $dp$ BEGIN
284
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;
285
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
286
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;
287
- END $dp$;
288
-
289
- DO $dp$ BEGIN
290
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;
291
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
292
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;
293
- END $dp$;
294
-
295
-
296
- -- \u2500\u2500 table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
297
-
298
- CREATE TABLE public.plg_tasks_labels (
299
- id uuid DEFAULT gen_random_uuid() NOT NULL,
300
- tenant_id uuid NOT NULL,
301
- name text NOT NULL,
302
- color text DEFAULT '#6366f1'::text NOT NULL,
303
- is_active boolean DEFAULT true NOT NULL,
304
- created_at timestamp with time zone DEFAULT now() NOT NULL
305
- );
306
-
307
- CREATE TABLE public.plg_tasks_tasks (
308
- id uuid DEFAULT gen_random_uuid() NOT NULL,
309
- tenant_id uuid NOT NULL,
310
- title text NOT NULL,
311
- description text,
312
- status text DEFAULT 'todo'::text NOT NULL,
313
- priority text DEFAULT 'medium'::text NOT NULL,
314
- due_date date,
315
- assigned_to_id uuid,
316
- assigned_to_name text,
317
- parent_id uuid,
318
- labels jsonb DEFAULT '[]'::jsonb NOT NULL,
319
- "position" integer DEFAULT 0 NOT NULL,
320
- created_by_id uuid,
321
- created_by_name text,
322
- created_at timestamp with time zone DEFAULT now() NOT NULL,
323
- updated_at timestamp with time zone DEFAULT now() NOT NULL,
324
- CONSTRAINT plg_tasks_tasks_priority_check CHECK ((priority = ANY (ARRAY['low'::text, 'medium'::text, 'high'::text, 'urgent'::text]))),
325
- CONSTRAINT plg_tasks_tasks_status_check CHECK ((status = ANY (ARRAY['todo'::text, 'in_progress'::text, 'done'::text, 'cancelled'::text])))
326
- );
327
-
328
-
329
- -- \u2500\u2500 constraint \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
330
-
331
- ALTER TABLE ONLY public.plg_tasks_labels
332
- ADD CONSTRAINT plg_tasks_labels_pkey PRIMARY KEY (id);
333
-
334
- ALTER TABLE ONLY public.plg_tasks_tasks
335
- ADD CONSTRAINT plg_tasks_tasks_pkey PRIMARY KEY (id);
336
-
337
-
338
- -- \u2500\u2500 index \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
339
-
340
- CREATE INDEX idx_plg_tasks_labels_tenant ON public.plg_tasks_labels USING btree (tenant_id);
341
-
342
- CREATE INDEX idx_plg_tasks_tasks_assigned ON public.plg_tasks_tasks USING btree (assigned_to_id);
343
-
344
- CREATE INDEX idx_plg_tasks_tasks_due ON public.plg_tasks_tasks USING btree (tenant_id, due_date) WHERE (due_date IS NOT NULL);
345
-
346
- CREATE INDEX idx_plg_tasks_tasks_parent ON public.plg_tasks_tasks USING btree (parent_id);
347
-
348
- CREATE INDEX idx_plg_tasks_tasks_status ON public.plg_tasks_tasks USING btree (tenant_id, status);
349
-
350
- CREATE INDEX idx_plg_tasks_tasks_tenant ON public.plg_tasks_tasks USING btree (tenant_id);
351
-
352
-
353
- -- \u2500\u2500 fk constraint \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
354
-
355
- ALTER TABLE ONLY public.plg_tasks_labels
356
- ADD CONSTRAINT plg_tasks_labels_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
357
-
358
- ALTER TABLE ONLY public.plg_tasks_tasks
359
- ADD CONSTRAINT plg_tasks_tasks_parent_id_fkey FOREIGN KEY (parent_id) REFERENCES public.plg_tasks_tasks(id) ON DELETE CASCADE;
360
-
361
- ALTER TABLE ONLY public.plg_tasks_tasks
362
- ADD CONSTRAINT plg_tasks_tasks_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
363
-
364
-
365
- -- \u2500\u2500 row security \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
366
-
367
- ALTER TABLE public.plg_tasks_labels ENABLE ROW LEVEL SECURITY;
368
-
369
- ALTER TABLE public.plg_tasks_tasks ENABLE ROW LEVEL SECURITY;
370
-
371
-
372
- -- \u2500\u2500 policy \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
373
-
374
- CREATE POLICY plg_tasks_labels_delete ON public.plg_tasks_labels FOR DELETE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
375
-
376
- CREATE POLICY plg_tasks_labels_insert ON public.plg_tasks_labels FOR INSERT TO authenticated WITH CHECK ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
377
-
378
- CREATE POLICY plg_tasks_labels_select ON public.plg_tasks_labels FOR SELECT TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
379
-
380
- CREATE POLICY plg_tasks_labels_update ON public.plg_tasks_labels FOR UPDATE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
381
-
382
- CREATE POLICY plg_tasks_tasks_delete ON public.plg_tasks_tasks FOR DELETE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
383
-
384
- CREATE POLICY plg_tasks_tasks_insert ON public.plg_tasks_tasks FOR INSERT TO authenticated WITH CHECK ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
385
-
386
- CREATE POLICY plg_tasks_tasks_select ON public.plg_tasks_tasks FOR SELECT TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
387
-
388
- CREATE POLICY plg_tasks_tasks_update ON public.plg_tasks_tasks FOR UPDATE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
389
-
390
-
391
- -- \u2500\u2500 acl \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
392
-
393
- GRANT MAINTAIN ON TABLE public.plg_tasks_labels TO anon;
394
- GRANT ALL ON TABLE public.plg_tasks_labels TO authenticated;
395
- GRANT ALL ON TABLE public.plg_tasks_labels TO service_role;
396
-
397
- GRANT MAINTAIN ON TABLE public.plg_tasks_tasks TO anon;
398
- GRANT ALL ON TABLE public.plg_tasks_tasks TO authenticated;
399
- GRANT ALL ON TABLE public.plg_tasks_tasks TO service_role;
400
-
401
-
402
- -- \u2500\u2500 default privileges: restore \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
403
- -- Put back, so the NEXT thing installed inherits what the chain had.
404
-
405
- DO $dp$ BEGIN
406
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;
407
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
408
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;
409
- END $dp$;
410
-
411
- DO $dp$ BEGIN
412
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;
413
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
414
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;
415
- END $dp$;
416
-
417
- DO $dp$ BEGIN
418
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;
419
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
420
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;
421
- END $dp$;
422
-
423
- DO $dp$ BEGIN
424
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;
425
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
426
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;
427
- END $dp$;
428
-
429
- DO $dp$ BEGIN
430
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;
431
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
432
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;
433
- END $dp$;
434
-
435
- DO $dp$ BEGIN
436
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;
437
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
438
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;
439
- END $dp$;
440
-
441
- DO $dp$ BEGIN
442
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;
443
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
444
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;
445
- END $dp$;
446
-
447
- DO $dp$ BEGIN
448
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;
449
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
450
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;
451
- END $dp$;
452
-
453
- DO $dp$ BEGIN
454
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;
455
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
456
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;
457
- END $dp$;
458
-
459
- DO $dp$ BEGIN
460
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;
461
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
462
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;
463
- END $dp$;
464
-
465
- DO $dp$ BEGIN
466
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;
467
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
468
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;
469
- END $dp$;
470
-
471
- DO $dp$ BEGIN
472
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;
473
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
474
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;
475
- END $dp$;
476
-
477
- DO $dp$ BEGIN
478
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO anon$stmt$;
479
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
480
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO anon$stmt$;
481
- END $dp$;
482
-
483
- DO $dp$ BEGIN
484
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;
485
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
486
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;
487
- END $dp$;
488
-
489
- DO $dp$ BEGIN
490
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;
491
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
492
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;
493
- END $dp$;
494
-
495
- DO $dp$ BEGIN
496
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;
497
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
498
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;
499
- END $dp$;
500
-
501
- DO $dp$ BEGIN
502
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT MAINTAIN ON TABLES TO anon$stmt$;
503
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
504
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT MAINTAIN ON TABLES TO anon$stmt$;
505
- END $dp$;
506
-
507
- DO $dp$ BEGIN
508
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;
509
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
510
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;
511
- END $dp$;
512
-
513
- DO $dp$ BEGIN
514
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;
515
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
516
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;
517
- END $dp$;
518
-
519
- DO $dp$ BEGIN
520
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;
521
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
522
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;
523
- END $dp$;
524
-
525
- DO $dp$ BEGIN
526
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO anon$stmt$;
527
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
528
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO anon$stmt$;
529
- END $dp$;
530
-
531
- DO $dp$ BEGIN
532
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;
533
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
534
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;
535
- END $dp$;
536
-
537
- DO $dp$ BEGIN
538
- EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;
539
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
540
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;
541
- END $dp$;
542
-
543
- DO $dp$ BEGIN
544
- EXECUTE $stmt$--
545
- -- PostgreSQL database dump complete
546
- --$stmt$;
547
- EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
548
- RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$--
549
- -- PostgreSQL database dump complete
550
- --$stmt$;
551
- END $dp$;
552
- `;
553
- var MIGRATIONS = [
554
- { id: "000_baseline", sql: MIGRATION_000_BASELINE }
555
- ];
556
228
  var TRIGGERS = [
557
229
  ["payable_created", "A bill to pay is created", "Conta a pagar criada"],
558
230
  ["payable_refund", "A refund is due", "Estorno a pagar"],
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/locales/en.ts","../src/locales/pt-BR.ts","../src/locales/index.ts","../src/data/registries.ts","../src/components/TasksDrawer.tsx","../src/components/TasksLauncher.tsx","../src/migrations/index.ts","../src/settings/v1-settings.ts","../src/index.ts"],"names":["jsxs","jsx","useTranslation","useTasksStore","en"],"mappings":"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","file":"index.js","sourcesContent":["export const en: Record<string, string> = {\n 'tasks.title': 'Tasks',\n 'tasks.drawer.title': 'Tasks',\n 'tasks.drawer.subtitle': 'Manage your team tasks',\n 'tasks.quickAdd.placeholder': 'Add a task...',\n 'tasks.filter.all': 'All',\n 'tasks.filter.todo': 'To Do',\n 'tasks.filter.inProgress': 'In Progress',\n 'tasks.filter.done': 'Done',\n 'tasks.status.todo': 'To Do',\n 'tasks.status.in_progress': 'In Progress',\n 'tasks.status.done': 'Done',\n 'tasks.status.cancelled': 'Cancelled',\n 'tasks.priority.low': 'Low',\n 'tasks.priority.medium': 'Medium',\n 'tasks.priority.high': 'High',\n 'tasks.priority.urgent': 'Urgent',\n 'tasks.detail.description': 'Description',\n 'tasks.detail.descriptionPlaceholder': 'Add a description...',\n 'tasks.detail.status': 'Status',\n 'tasks.detail.priority': 'Priority',\n 'tasks.detail.dueDate': 'Due Date',\n 'tasks.detail.assignee': 'Assigned To',\n 'tasks.detail.labels': 'Labels',\n 'tasks.detail.subtasks': 'Subtasks',\n 'tasks.detail.delete': 'Delete Task',\n 'tasks.detail.deleteConfirm': 'Are you sure you want to delete this task?',\n 'tasks.detail.created': 'Created',\n 'tasks.detail.chatWithAi': 'Chat with AI',\n 'tasks.detail.chatWithAi.prompt': 'Take over this task and help me resolve it now, using your tools when needed:',\n 'tasks.detail.updated': 'Updated',\n 'tasks.detail.addSubtask': 'Add subtask...',\n 'tasks.detail.back': 'Back to list',\n 'tasks.summary.overdue': 'overdue',\n 'tasks.summary.dueToday': 'due today',\n 'tasks.empty': 'No tasks yet',\n 'tasks.empty.description': 'Add your first task using the input above',\n 'tasks.settings.title': 'Tasks',\n 'tasks.settings.general': 'General',\n 'tasks.settings.defaultPriority': 'Default Priority',\n 'tasks.settings.autoAssign': 'Auto-assign tasks to creator',\n}\n","export const ptBR: Record<string, string> = {\n 'tasks.title': 'Tarefas',\n 'tasks.drawer.title': 'Tarefas',\n 'tasks.drawer.subtitle': 'Gerencie as tarefas da equipe',\n 'tasks.quickAdd.placeholder': 'Adicionar tarefa...',\n 'tasks.filter.all': 'Todas',\n 'tasks.filter.todo': 'A Fazer',\n 'tasks.filter.inProgress': 'Em Andamento',\n 'tasks.filter.done': 'Concluídas',\n 'tasks.status.todo': 'A Fazer',\n 'tasks.status.in_progress': 'Em Andamento',\n 'tasks.status.done': 'Concluída',\n 'tasks.status.cancelled': 'Cancelada',\n 'tasks.priority.low': 'Baixa',\n 'tasks.priority.medium': 'Média',\n 'tasks.priority.high': 'Alta',\n 'tasks.priority.urgent': 'Urgente',\n 'tasks.detail.description': 'Descrição',\n 'tasks.detail.descriptionPlaceholder': 'Adicionar descrição...',\n 'tasks.detail.status': 'Status',\n 'tasks.detail.priority': 'Prioridade',\n 'tasks.detail.dueDate': 'Data de Vencimento',\n 'tasks.detail.assignee': 'Responsável',\n 'tasks.detail.labels': 'Etiquetas',\n 'tasks.detail.subtasks': 'Subtarefas',\n 'tasks.detail.delete': 'Excluir Tarefa',\n 'tasks.detail.deleteConfirm': 'Tem certeza que deseja excluir esta tarefa?',\n 'tasks.detail.created': 'Criada em',\n 'tasks.detail.chatWithAi': 'Conversar com IA',\n 'tasks.detail.chatWithAi.prompt': 'Assuma esta tarefa e me ajude a resolver agora, usando suas ferramentas quando precisar:',\n 'tasks.detail.updated': 'Atualizada em',\n 'tasks.detail.addSubtask': 'Adicionar subtarefa...',\n 'tasks.detail.back': 'Voltar à lista',\n 'tasks.summary.overdue': 'atrasadas',\n 'tasks.summary.dueToday': 'vencem hoje',\n 'tasks.empty': 'Nenhuma tarefa ainda',\n 'tasks.empty.description': 'Adicione sua primeira tarefa usando o campo acima',\n 'tasks.settings.title': 'Tarefas',\n 'tasks.settings.general': 'Geral',\n 'tasks.settings.defaultPriority': 'Prioridade Padrão',\n 'tasks.settings.autoAssign': 'Atribuir tarefas automaticamente ao criador',\n}\n","import { en } from './en'\nimport { ptBR } from './pt-BR'\n\nexport const tasksLocales: Record<string, Record<string, string>> = {\n en,\n 'pt-BR': ptBR,\n}\n","import type { PluginRegistryDef } from '@fayz-ai/core'\nimport type { EntityDef } from '@fayz-ai/core'\n\n// The label catalogue is the one table this plugin still owns — tasks\n// themselves moved to the spine's public.tasks with db migration 047.\nconst LABELS_TABLE = 'plg_tasks_labels'\n\nconst taskLabelEntity: EntityDef = {\n name: 'Task Label',\n namePlural: 'Task Labels',\n icon: 'Tag',\n displayField: 'name',\n defaultSort: 'name',\n fields: [\n { key: 'name', label: 'Name', type: 'text', required: true, showInTable: true },\n { key: 'color', label: 'Color', type: 'color', showInTable: true, defaultValue: '#6366f1' },\n { key: 'isActive', label: 'Active', type: 'boolean', showInTable: true, defaultValue: true },\n ],\n data: { table: LABELS_TABLE, tenantScoped: true },\n}\n\nexport const tasksRegistries: PluginRegistryDef[] = [\n {\n id: 'task-labels',\n entity: taskLabelEntity,\n icon: 'Tag',\n description: 'Labels for categorizing tasks',\n display: 'table',\n seedData: [\n { id: 'lbl-bug', name: 'Bug', color: '#ef4444', isActive: true },\n { id: 'lbl-feature', name: 'Feature', color: '#3b82f6', isActive: true },\n { id: 'lbl-urgent', name: 'Urgent', color: '#f59e0b', isActive: true },\n { id: 'lbl-personal', name: 'Personal', color: '#8b5cf6', isActive: true },\n ],\n },\n]\n","import React from 'react'\nimport { SheetBody } from '@fayz-ai/ui'\nimport { RightRailPage, useTasksStore, TasksPanel, useTasksSummaryLine } from '@fayz-ai/admin'\nimport { useTranslation } from '@fayz-ai/core'\n\n/** Tasks in the shell's right column — a sheet where there is no column. */\nexport function TasksDrawer() {\n const t = useTranslation()\n const drawerOpen = useTasksStore((s) => s.drawerOpen)\n const closeDrawer = useTasksStore((s) => s.closeDrawer)\n const summaryLine = useTasksSummaryLine()\n\n return (\n <RightRailPage\n title={t('tasks.drawer.title')}\n open={drawerOpen}\n onClose={closeDrawer}\n width=\"max-w-lg\"\n >\n {/* The count line only — the column header already carries the name. */}\n <p className=\"shrink-0 border-b border-border/40 px-5 py-2 text-xs text-muted-foreground\">\n {summaryLine || t('tasks.drawer.subtitle')}\n </p>\n\n <SheetBody className=\"flex flex-col px-0 py-0\">\n <TasksPanel />\n </SheetBody>\n </RightRailPage>\n )\n}\n","import React, { useEffect } from 'react'\nimport { CheckSquare } from 'lucide-react'\nimport { Button, cn, useLayoutStore, useRailRow } from '@fayz-ai/ui'\nimport { useRightRailStore, useWidgetSurface, useTasksStore } from '@fayz-ai/admin'\nimport { useTranslation } from '@fayz-ai/core'\nimport { TasksDrawer } from './TasksDrawer'\n\n/**\n * The sidebar row that opens tasks.\n *\n * It no longer registers the rail tab — the shell does that now (db 047 made\n * public.tasks a spine table, so every app has the tab whether or not this\n * plugin is installed). What is left is the row and, on a shell without a rail,\n * the sheet.\n */\nexport function TasksLauncher() {\n const railMounted = useRightRailStore((s) => s.mounted)\n\n return (\n <>\n <TasksLauncherRow railMounted={railMounted} />\n {!railMounted && <TasksDrawer />}\n </>\n )\n}\n\nfunction TasksLauncherRow({ railMounted }: { railMounted: boolean }) {\n const t = useTranslation()\n const toggleDrawer = useTasksStore((s) => s.toggleDrawer)\n const fetchSummary = useTasksStore((s) => s.fetchSummary)\n const summary = useTasksStore((s) => s.summary)\n const togglePanel = useRightRailStore((s) => s.togglePanel)\n\n useEffect(() => {\n fetchSummary()\n }, [fetchSummary])\n\n const pendingCount = summary ? summary.todo + summary.inProgress : 0\n const collapsed = useLayoutStore((s) => s.sidebarCollapsed)\n // Numa shell sem trilha a shell põe isto na barra de topo — ali só cabe o\n // ícone, exatamente como na trilha recolhida.\n const surface = useWidgetSurface()\n const compact = collapsed || surface === 'topbar'\n const label = t('tasks.drawer.title') || 'Tasks'\n const open = () => (railMounted ? togglePanel('tasks') : toggleDrawer())\n // Na trilha recolhida, o mesmo painel de hover que os links abrem — senão\n // esta linha é o único ícone do menu sem nome.\n const railRow = useRailRow(\n surface === 'rail'\n ? { key: 'tasks', label, badge: pendingCount > 0 ? pendingCount : undefined }\n : null,\n )\n\n // A row of the rail, not an icon in the top bar. Tarefas são do workspace —\n // não mudam com a tela aberta — e lá em cima dividiam o canto com o \"Novo\" da\n // página. Os tokens já eram os da trilha (`text-sidebar-*`), o que sobre papel\n // dava um ícone quase invisível: agora eles pousam onde foram feitos.\n if (compact) {\n return (\n <Button variant=\"bare\" size=\"bare\"\n {...railRow}\n onClick={open}\n aria-label={label}\n // Na barra de topo não há painel da trilha para dizer o nome.\n title={surface === 'topbar' ? label : undefined}\n className={cn(\n 'fz-tap relative flex shrink-0 items-center justify-center rounded-button p-2 font-normal text-sidebar-muted transition-colors hover:bg-sidebar-accent/50 hover:text-sidebar-foreground',\n // Na trilha ele é uma linha (ocupa a coluna); na barra, um ícone\n // entre outros, e esticar tomaria a barra inteira.\n surface === 'rail' && 'w-full',\n )}\n >\n <CheckSquare className=\"h-4 w-4\" />\n {pendingCount > 0 && (\n <span className=\"absolute right-1 top-1 h-2 w-2 rounded-full bg-destructive\" />\n )}\n </Button>\n )\n }\n\n return (\n <Button variant=\"bare\" size=\"bare\"\n onClick={open}\n aria-label={label}\n className=\"fz-tap flex w-full items-center gap-2 rounded-button px-2.5 py-1.5 text-sm text-sidebar-muted transition-colors hover:bg-sidebar-accent/50 hover:text-sidebar-foreground font-normal justify-start\"\n >\n <CheckSquare className=\"h-4 w-4 shrink-0\" />\n <span className=\"min-w-0 flex-1 truncate text-left\">{label}</span>\n {pendingCount > 0 && (\n <span\n className={cn(\n 'flex shrink-0 items-center justify-center rounded-full bg-destructive text-[10px] text-destructive-foreground',\n pendingCount > 9 ? 'h-5 min-w-5 px-1' : 'h-4 w-4',\n )}\n >\n {pendingCount > 99 ? '99+' : pendingCount}\n </span>\n )}\n </Button>\n )\n}\n","// AUTO-GENERATED from 000_baseline.sql — regenerate with scripts/embed-migrations.mjs\n// SQL files are the source of truth; this inline copy lets the manifest declare\n// migrations as data. Do not edit by hand — run the embed script instead.\n\nexport const MIGRATION_000_BASELINE = `-- ============================================================================\n-- plugins/plugin-tasks/src/migrations/000_baseline.sql — what installing this provisions, as one file.\n--\n-- GENERATED by scripts/emit-unit-baselines.mjs (#338). Do not edit by hand:\n-- change the schema, regenerate, and let scripts/check-chain-equivalence.mjs\n-- prove the result still matches.\n--\n-- This replaced 3 migration files. They are kept, unapplied, in\n-- migrations.archive/ — a year of decisions is worth reading even when it is no\n-- longer worth replaying.\n--\n-- Object order is fixed rather than dependency-sorted: schemas, types,\n-- sequences, tables, defaults, functions, constraints, views, indexes, foreign\n-- keys, triggers, row security, policies, grants. Dependencies BETWEEN units\n-- are carried by the order packages/db/chain.json declares.\n-- ============================================================================\n\n-- A LANGUAGE sql function binds its body at CREATE time, and 570 functions\n-- sorted by name are not sorted by who calls whom. This is what lets them load\n-- in any order; every body is still compiled on first call, so a genuinely\n-- broken reference surfaces then rather than never. Session-scoped.\nSET check_function_bodies = false;\n\n\n\n-- ── default privileges: reset ───────────────────────────────────────────\n-- Cleared BEFORE anything is created, so every object below gets the ACL the\n-- dump describes rather than the image's defaults on top of it. Restored at\n-- the end of this file.\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\n\n-- ── table ───────────────────────────────────────────────────────────────\n\nCREATE TABLE public.plg_tasks_labels (\n id uuid DEFAULT gen_random_uuid() NOT NULL,\n tenant_id uuid NOT NULL,\n name text NOT NULL,\n color text DEFAULT '#6366f1'::text NOT NULL,\n is_active boolean DEFAULT true NOT NULL,\n created_at timestamp with time zone DEFAULT now() NOT NULL\n);\n\nCREATE TABLE public.plg_tasks_tasks (\n id uuid DEFAULT gen_random_uuid() NOT NULL,\n tenant_id uuid NOT NULL,\n title text NOT NULL,\n description text,\n status text DEFAULT 'todo'::text NOT NULL,\n priority text DEFAULT 'medium'::text NOT NULL,\n due_date date,\n assigned_to_id uuid,\n assigned_to_name text,\n parent_id uuid,\n labels jsonb DEFAULT '[]'::jsonb NOT NULL,\n \"position\" integer DEFAULT 0 NOT NULL,\n created_by_id uuid,\n created_by_name text,\n created_at timestamp with time zone DEFAULT now() NOT NULL,\n updated_at timestamp with time zone DEFAULT now() NOT NULL,\n CONSTRAINT plg_tasks_tasks_priority_check CHECK ((priority = ANY (ARRAY['low'::text, 'medium'::text, 'high'::text, 'urgent'::text]))),\n CONSTRAINT plg_tasks_tasks_status_check CHECK ((status = ANY (ARRAY['todo'::text, 'in_progress'::text, 'done'::text, 'cancelled'::text])))\n);\n\n\n-- ── constraint ──────────────────────────────────────────────────────────\n\nALTER TABLE ONLY public.plg_tasks_labels\n ADD CONSTRAINT plg_tasks_labels_pkey PRIMARY KEY (id);\n\nALTER TABLE ONLY public.plg_tasks_tasks\n ADD CONSTRAINT plg_tasks_tasks_pkey PRIMARY KEY (id);\n\n\n-- ── index ───────────────────────────────────────────────────────────────\n\nCREATE INDEX idx_plg_tasks_labels_tenant ON public.plg_tasks_labels USING btree (tenant_id);\n\nCREATE INDEX idx_plg_tasks_tasks_assigned ON public.plg_tasks_tasks USING btree (assigned_to_id);\n\nCREATE INDEX idx_plg_tasks_tasks_due ON public.plg_tasks_tasks USING btree (tenant_id, due_date) WHERE (due_date IS NOT NULL);\n\nCREATE INDEX idx_plg_tasks_tasks_parent ON public.plg_tasks_tasks USING btree (parent_id);\n\nCREATE INDEX idx_plg_tasks_tasks_status ON public.plg_tasks_tasks USING btree (tenant_id, status);\n\nCREATE INDEX idx_plg_tasks_tasks_tenant ON public.plg_tasks_tasks USING btree (tenant_id);\n\n\n-- ── fk constraint ───────────────────────────────────────────────────────\n\nALTER TABLE ONLY public.plg_tasks_labels\n ADD CONSTRAINT plg_tasks_labels_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;\n\nALTER TABLE ONLY public.plg_tasks_tasks\n ADD CONSTRAINT plg_tasks_tasks_parent_id_fkey FOREIGN KEY (parent_id) REFERENCES public.plg_tasks_tasks(id) ON DELETE CASCADE;\n\nALTER TABLE ONLY public.plg_tasks_tasks\n ADD CONSTRAINT plg_tasks_tasks_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;\n\n\n-- ── row security ────────────────────────────────────────────────────────\n\nALTER TABLE public.plg_tasks_labels ENABLE ROW LEVEL SECURITY;\n\nALTER TABLE public.plg_tasks_tasks ENABLE ROW LEVEL SECURITY;\n\n\n-- ── policy ──────────────────────────────────────────────────────────────\n\nCREATE POLICY plg_tasks_labels_delete ON public.plg_tasks_labels FOR DELETE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_labels_insert ON public.plg_tasks_labels FOR INSERT TO authenticated WITH CHECK ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_labels_select ON public.plg_tasks_labels FOR SELECT TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_labels_update ON public.plg_tasks_labels FOR UPDATE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_tasks_delete ON public.plg_tasks_tasks FOR DELETE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_tasks_insert ON public.plg_tasks_tasks FOR INSERT TO authenticated WITH CHECK ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_tasks_select ON public.plg_tasks_tasks FOR SELECT TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_tasks_update ON public.plg_tasks_tasks FOR UPDATE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\n\n-- ── acl ─────────────────────────────────────────────────────────────────\n\nGRANT MAINTAIN ON TABLE public.plg_tasks_labels TO anon;\nGRANT ALL ON TABLE public.plg_tasks_labels TO authenticated;\nGRANT ALL ON TABLE public.plg_tasks_labels TO service_role;\n\nGRANT MAINTAIN ON TABLE public.plg_tasks_tasks TO anon;\nGRANT ALL ON TABLE public.plg_tasks_tasks TO authenticated;\nGRANT ALL ON TABLE public.plg_tasks_tasks TO service_role;\n\n\n-- ── default privileges: restore ─────────────────────────────────────────\n-- Put back, so the NEXT thing installed inherits what the chain had.\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT MAINTAIN ON TABLES TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT MAINTAIN ON TABLES TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$--\n-- PostgreSQL database dump complete\n--$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$--\n-- PostgreSQL database dump complete\n--$stmt$;\nEND $dp$;\n`\n\nexport const MIGRATIONS: Array<{ id: string; sql: string }> = [\n { id: \"000_baseline\", sql: MIGRATION_000_BASELINE },\n]\n","import { defineSettingsTab } from '@fayz-ai/admin'\nimport { tl } from '@fayz-ai/core'\n\nconst TRIGGERS: Array<[string, string, string]> = [\n ['payable_created', 'A bill to pay is created', 'Conta a pagar criada'],\n ['payable_refund', 'A refund is due', 'Estorno a pagar'],\n ['cash_review_pending', 'A cash register awaits review', 'Caixa aguardando conferência'],\n ['cash_review_returned', 'A cash review is sent back', 'Conferência de caixa devolvida'],\n ['checkout_pending', 'A checkout is pending', 'Fechamento pendente'],\n ['dfe_received', 'A supplier invoice arrives', 'Nota de fornecedor recebida'],\n ['stock_loss_pending', 'A stock loss awaits approval', 'Perda de estoque aguardando aprovação'],\n ['stock_requisition_submitted', 'A stock requisition is sent', 'Requisição de estoque enviada'],\n ['stock_count_review', 'A stock count awaits review', 'Contagem de estoque para revisar'],\n ['stock_transfer_pending', 'A stock transfer is pending', 'Transferência de estoque pendente'],\n ['fiscal_rejected', 'An invoice is rejected', 'Nota fiscal rejeitada'],\n ['service_charge_approved', 'A service charge split is approved', 'Rateio da taxa de serviço aprovado'],\n ['hr_deadlines', 'An HR deadline is near', 'Prazo de RH chegando'],\n]\n\nexport const tasksV1SettingsTabs = [\n defineSettingsTab({\n id: 'tasks',\n label: tl('Tasks', 'Tarefas'),\n icon: 'CheckSquare',\n section: 'operations',\n pending: true,\n defaults: { 'tasks.default_priority': 'medium' },\n sections: [{\n title: tl('Defaults', 'Padrões'),\n fields: [{ key: 'tasks.default_priority', type: 'select', label: tl('Default priority', 'Prioridade padrão'), options: [\n { value: 'low', label: tl('Low', 'Baixa') }, { value: 'medium', label: tl('Medium', 'Média') },\n { value: 'high', label: tl('High', 'Alta') }, { value: 'urgent', label: tl('Urgent', 'Urgente') },\n ] }],\n }, {\n title: tl('Automations', 'Automações'),\n description: tl('Create a task for the right team when…', 'Criar uma tarefa para o setor certo quando…'),\n fields: TRIGGERS.map(([id, en, pt]) => ({ key: `tasks.auto.${id}`, type: 'boolean' as const, label: tl(en, pt) })),\n }],\n }),\n]\n","import React from 'react'\nimport type { PluginManifest, PluginScope, VerticalId } from '@fayz-ai/core'\nimport { registerTranslations } from '@fayz-ai/core'\nimport {\n getTasksProvider, useTasksStore,\n registerNotesTasksAdapter, NOTE_LABEL_PREFIX,\n type TasksDataProvider, type TaskPriority,\n} from '@fayz-ai/admin'\nimport type { ResolvedTasksConfig, TasksPluginLabels } from './context'\nimport { tasksLocales } from './locales'\nimport { tasksRegistries } from './data/registries'\nimport { TasksLauncher } from './components/TasksLauncher'\nimport { MIGRATIONS } from './migrations'\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport interface TasksPluginOptions {\n /** Label overrides */\n labels?: Partial<TasksPluginLabels>\n /** Plugin scope */\n scope?: PluginScope\n /** Vertical ID */\n verticalId?: VerticalId\n /** Data provider override (defaults to the shell's) */\n dataProvider?: TasksDataProvider\n /** Default priority for new tasks (default: 'medium') */\n defaultPriority?: TaskPriority\n /**\n * Show the Tasks row in the sidebar's foot. Default: true.\n *\n * The panel is worth a permanent row in a product where tasks are the work —\n * an agency, a clinic with a follow-up list. In one where they are back-office\n * (a restaurant during service), that row spends the whole shift competing\n * with the things somebody actually touches, and the badge on it is a red\n * number about paperwork. Turning it off keeps the plugin whole: the table,\n * the provider, the settings tab, the agent's tools and the onboarding rows it\n * carries all stay — only the rail entry goes.\n */\n launcher?: boolean\n}\n\nconst DEFAULT_LABELS: TasksPluginLabels = {\n drawerTitle: 'Tasks',\n settingsTitle: 'Tasks',\n quickAddPlaceholder: 'Add a task...',\n}\n\nfunction resolveConfig(options?: TasksPluginOptions): ResolvedTasksConfig {\n return {\n labels: { ...DEFAULT_LABELS, ...options?.labels },\n }\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport function createTasksPlugin(options?: TasksPluginOptions): PluginManifest {\n const config = resolveConfig(options)\n // Register locales globally so the plugin's translations resolve even when the\n // host shell does not mount @fayz-ai/core's I18nProvider (incremental de-bridge).\n registerTranslations(tasksLocales)\n\n // The table moved to the spine (db 047) and so did the store, the provider and\n // the panel. What is left here is the sidebar row, the sheet fallback, the\n // label catalogue and the settings tab — the plugin is now a set of surfaces\n // over a table it no longer owns.\n const provider = options?.dataProvider ?? getTasksProvider()\n const store = useTasksStore\n\n // Notes ↔ Tasks bridge: note todos are real tasks, linked by a `note:<id>`\n // label. The shell's Notes tab consumes this; the Tarefas tab (and its\n // summary badge) stays the single source of truth.\n registerNotesTasksAdapter({\n async createTodo({ title, noteId, noteTitle }) {\n const task = await provider.createTask({\n title,\n description: noteTitle ? `Nota: ${noteTitle}` : undefined,\n labels: [`${NOTE_LABEL_PREFIX}${noteId}`],\n })\n void store.getState().fetchSummary()\n return { id: task.id, title: task.title, done: task.status === 'done' }\n },\n async listTodos(noteId) {\n const tasks = await provider.getTasks({})\n const label = `${NOTE_LABEL_PREFIX}${noteId}`\n return tasks\n .filter((t) => t.labels.includes(label))\n .sort((a, b) => (a.status === 'done' ? 1 : 0) - (b.status === 'done' ? 1 : 0))\n .map((t) => ({ id: t.id, title: t.title, done: t.status === 'done' }))\n },\n async toggleTodo(id: string, done: boolean) {\n await provider.updateTask(id, { status: done ? 'done' : 'todo' })\n void store.getState().fetchSummary()\n },\n async removeTodo(id: string) {\n await provider.deleteTask(id)\n void store.getState().fetchSummary()\n },\n })\n\n return {\n id: 'tasks',\n defaultAgentRole: 'setup',\n name: config.labels.drawerTitle,\n icon: 'CheckSquare',\n version: '1.0.0',\n scope: options?.scope ?? 'universal',\n verticalId: options?.verticalId,\n defaultEnabled: true,\n dependencies: [],\n\n navigation: [],\n\n routes: [],\n\n widgets: options?.launcher === false ? [] : [\n {\n // No pé da trilha, não no topo: tarefas são do workspace, não da\n // tela aberta — e no topo elas dividiam o canto com as ações da página.\n id: 'tasks-launcher',\n zone: 'shell.sidebar.footer',\n component: TasksLauncher as unknown as React.ComponentType<unknown>,\n order: 10,\n props: {\n tasksConfig: config,\n tasksProvider: provider,\n },\n },\n ],\n\n aiTools: [\n {\n id: 'tasks.summary',\n name: 'getTasksSummary',\n description: 'Returns a summary of pending tasks: total, overdue, due today, by status and priority.',\n icon: 'CheckSquare',\n mode: 'read' as const,\n category: 'Tasks',\n parameters: {\n type: 'object' as const,\n properties: {\n status: {\n type: 'string' as const,\n description: 'Filter by task status',\n enum: ['todo', 'in_progress', 'done', 'cancelled', 'all'],\n },\n },\n },\n suggestions: [\n { label: 'Quais tarefas estão atrasadas?' },\n { label: 'Quantas tarefas estão pendentes?' },\n { label: \"O que vence hoje?\" },\n ],\n },\n ],\n\n registries: tasksRegistries,\n\n settings: [\n // One \"Tarefas\" screen, as in V1. The old default-priority toggle saved a\n // value nothing read; it now waits in the same Em breve screen.\n ...tasksV1SettingsTabs,\n ],\n\n // One baseline per unit since #338 — read from the generated barrel\n // rather than listed here, so regenerating the SQL never needs a\n // manifest edit to match.\n migrations: MIGRATIONS.map((entry) => ({\n id: `tasks-${entry.id}`,\n version: '1.0.0',\n sql: entry.sql,\n description:\n 'The whole schema this plugin provisions, as one file: every table, view, function, policy and grant, plus the reference rows it seeds. Replaced the per-change chain in the 1.0.0 squash (#338); the files it collapsed are kept, unapplied, in src/migrations.archive/.',\n })),\n\n locales: tasksLocales,\n }\n}\n\n// ---------------------------------------------------------------------------\n// Re-exports — the tasks slice lives in @fayz-ai/admin now, but this package's\n// public surface stays what it was.\n// ---------------------------------------------------------------------------\n\nexport type { ResolvedTasksConfig, TasksPluginLabels } from './context'\nexport type {\n Task, TaskLabel, TaskStatus, TaskPriority, TasksSummary,\n CreateTaskInput, UpdateTaskInput, TaskQuery, TasksDataProvider,\n} from '@fayz-ai/admin'\nexport {\n TasksPanel, TaskCard, TaskDetail, TaskQuickAdd, TasksFilterBar,\n useTasksStore, useTasksSummaryLine,\n createSupabaseTasksProvider, createMockTasksProvider,\n} from '@fayz-ai/admin'\nimport { tasksV1SettingsTabs } from './settings/v1-settings'\n"]}
1
+ {"version":3,"sources":["../src/locales/en.ts","../src/locales/pt-BR.ts","../src/locales/index.ts","../src/data/registries.ts","../src/components/TasksDrawer.tsx","../src/components/TasksLauncher.tsx","../src/settings/v1-settings.ts","../src/index.ts"],"names":["jsxs","jsx","useTranslation","useTasksStore","en"],"mappings":"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","file":"index.js","sourcesContent":["export const en: Record<string, string> = {\n 'tasks.title': 'Tasks',\n 'tasks.drawer.title': 'Tasks',\n 'tasks.drawer.subtitle': 'Manage your team tasks',\n 'tasks.quickAdd.placeholder': 'Add a task...',\n 'tasks.filter.all': 'All',\n 'tasks.filter.todo': 'To Do',\n 'tasks.filter.inProgress': 'In Progress',\n 'tasks.filter.done': 'Done',\n 'tasks.status.todo': 'To Do',\n 'tasks.status.in_progress': 'In Progress',\n 'tasks.status.done': 'Done',\n 'tasks.status.cancelled': 'Cancelled',\n 'tasks.priority.low': 'Low',\n 'tasks.priority.medium': 'Medium',\n 'tasks.priority.high': 'High',\n 'tasks.priority.urgent': 'Urgent',\n 'tasks.detail.description': 'Description',\n 'tasks.detail.descriptionPlaceholder': 'Add a description...',\n 'tasks.detail.status': 'Status',\n 'tasks.detail.priority': 'Priority',\n 'tasks.detail.dueDate': 'Due Date',\n 'tasks.detail.assignee': 'Assigned To',\n 'tasks.detail.labels': 'Labels',\n 'tasks.detail.subtasks': 'Subtasks',\n 'tasks.detail.delete': 'Delete Task',\n 'tasks.detail.deleteConfirm': 'Are you sure you want to delete this task?',\n 'tasks.detail.created': 'Created',\n 'tasks.detail.chatWithAi': 'Chat with AI',\n 'tasks.detail.chatWithAi.prompt': 'Take over this task and help me resolve it now, using your tools when needed:',\n 'tasks.detail.updated': 'Updated',\n 'tasks.detail.addSubtask': 'Add subtask...',\n 'tasks.detail.back': 'Back to list',\n 'tasks.summary.overdue': 'overdue',\n 'tasks.summary.dueToday': 'due today',\n 'tasks.empty': 'No tasks yet',\n 'tasks.empty.description': 'Add your first task using the input above',\n 'tasks.settings.title': 'Tasks',\n 'tasks.settings.general': 'General',\n 'tasks.settings.defaultPriority': 'Default Priority',\n 'tasks.settings.autoAssign': 'Auto-assign tasks to creator',\n}\n","export const ptBR: Record<string, string> = {\n 'tasks.title': 'Tarefas',\n 'tasks.drawer.title': 'Tarefas',\n 'tasks.drawer.subtitle': 'Gerencie as tarefas da equipe',\n 'tasks.quickAdd.placeholder': 'Adicionar tarefa...',\n 'tasks.filter.all': 'Todas',\n 'tasks.filter.todo': 'A Fazer',\n 'tasks.filter.inProgress': 'Em Andamento',\n 'tasks.filter.done': 'Concluídas',\n 'tasks.status.todo': 'A Fazer',\n 'tasks.status.in_progress': 'Em Andamento',\n 'tasks.status.done': 'Concluída',\n 'tasks.status.cancelled': 'Cancelada',\n 'tasks.priority.low': 'Baixa',\n 'tasks.priority.medium': 'Média',\n 'tasks.priority.high': 'Alta',\n 'tasks.priority.urgent': 'Urgente',\n 'tasks.detail.description': 'Descrição',\n 'tasks.detail.descriptionPlaceholder': 'Adicionar descrição...',\n 'tasks.detail.status': 'Status',\n 'tasks.detail.priority': 'Prioridade',\n 'tasks.detail.dueDate': 'Data de Vencimento',\n 'tasks.detail.assignee': 'Responsável',\n 'tasks.detail.labels': 'Etiquetas',\n 'tasks.detail.subtasks': 'Subtarefas',\n 'tasks.detail.delete': 'Excluir Tarefa',\n 'tasks.detail.deleteConfirm': 'Tem certeza que deseja excluir esta tarefa?',\n 'tasks.detail.created': 'Criada em',\n 'tasks.detail.chatWithAi': 'Conversar com IA',\n 'tasks.detail.chatWithAi.prompt': 'Assuma esta tarefa e me ajude a resolver agora, usando suas ferramentas quando precisar:',\n 'tasks.detail.updated': 'Atualizada em',\n 'tasks.detail.addSubtask': 'Adicionar subtarefa...',\n 'tasks.detail.back': 'Voltar à lista',\n 'tasks.summary.overdue': 'atrasadas',\n 'tasks.summary.dueToday': 'vencem hoje',\n 'tasks.empty': 'Nenhuma tarefa ainda',\n 'tasks.empty.description': 'Adicione sua primeira tarefa usando o campo acima',\n 'tasks.settings.title': 'Tarefas',\n 'tasks.settings.general': 'Geral',\n 'tasks.settings.defaultPriority': 'Prioridade Padrão',\n 'tasks.settings.autoAssign': 'Atribuir tarefas automaticamente ao criador',\n}\n","import { en } from './en'\nimport { ptBR } from './pt-BR'\n\nexport const tasksLocales: Record<string, Record<string, string>> = {\n en,\n 'pt-BR': ptBR,\n}\n","import type { PluginRegistryDef } from '@fayz-ai/core'\nimport type { EntityDef } from '@fayz-ai/core'\n\n// The label catalogue is the one table this plugin still owns — tasks\n// themselves moved to the spine's public.tasks with db migration 047.\nconst LABELS_TABLE = 'plg_tasks_labels'\n\nconst taskLabelEntity: EntityDef = {\n name: 'Task Label',\n namePlural: 'Task Labels',\n icon: 'Tag',\n displayField: 'name',\n defaultSort: 'name',\n fields: [\n { key: 'name', label: 'Name', type: 'text', required: true, showInTable: true },\n { key: 'color', label: 'Color', type: 'color', showInTable: true, defaultValue: '#6366f1' },\n { key: 'isActive', label: 'Active', type: 'boolean', showInTable: true, defaultValue: true },\n ],\n data: { table: LABELS_TABLE, tenantScoped: true },\n}\n\nexport const tasksRegistries: PluginRegistryDef[] = [\n {\n id: 'task-labels',\n entity: taskLabelEntity,\n icon: 'Tag',\n description: 'Labels for categorizing tasks',\n display: 'table',\n seedData: [\n { id: 'lbl-bug', name: 'Bug', color: '#ef4444', isActive: true },\n { id: 'lbl-feature', name: 'Feature', color: '#3b82f6', isActive: true },\n { id: 'lbl-urgent', name: 'Urgent', color: '#f59e0b', isActive: true },\n { id: 'lbl-personal', name: 'Personal', color: '#8b5cf6', isActive: true },\n ],\n },\n]\n","import React from 'react'\nimport { SheetBody } from '@fayz-ai/ui'\nimport { RightRailPage, useTasksStore, TasksPanel, useTasksSummaryLine } from '@fayz-ai/admin'\nimport { useTranslation } from '@fayz-ai/core'\n\n/** Tasks in the shell's right column — a sheet where there is no column. */\nexport function TasksDrawer() {\n const t = useTranslation()\n const drawerOpen = useTasksStore((s) => s.drawerOpen)\n const closeDrawer = useTasksStore((s) => s.closeDrawer)\n const summaryLine = useTasksSummaryLine()\n\n return (\n <RightRailPage\n title={t('tasks.drawer.title')}\n open={drawerOpen}\n onClose={closeDrawer}\n width=\"max-w-lg\"\n >\n {/* The count line only — the column header already carries the name. */}\n <p className=\"shrink-0 border-b border-border/40 px-5 py-2 text-xs text-muted-foreground\">\n {summaryLine || t('tasks.drawer.subtitle')}\n </p>\n\n <SheetBody className=\"flex flex-col px-0 py-0\">\n <TasksPanel />\n </SheetBody>\n </RightRailPage>\n )\n}\n","import React, { useEffect } from 'react'\nimport { CheckSquare } from 'lucide-react'\nimport { Button, cn, useLayoutStore, useRailRow } from '@fayz-ai/ui'\nimport { useRightRailStore, useWidgetSurface, useTasksStore } from '@fayz-ai/admin'\nimport { useTranslation } from '@fayz-ai/core'\nimport { TasksDrawer } from './TasksDrawer'\n\n/**\n * The sidebar row that opens tasks.\n *\n * It no longer registers the rail tab — the shell does that now (db 047 made\n * public.tasks a spine table, so every app has the tab whether or not this\n * plugin is installed). What is left is the row and, on a shell without a rail,\n * the sheet.\n */\nexport function TasksLauncher() {\n const railMounted = useRightRailStore((s) => s.mounted)\n\n return (\n <>\n <TasksLauncherRow railMounted={railMounted} />\n {!railMounted && <TasksDrawer />}\n </>\n )\n}\n\nfunction TasksLauncherRow({ railMounted }: { railMounted: boolean }) {\n const t = useTranslation()\n const toggleDrawer = useTasksStore((s) => s.toggleDrawer)\n const fetchSummary = useTasksStore((s) => s.fetchSummary)\n const summary = useTasksStore((s) => s.summary)\n const togglePanel = useRightRailStore((s) => s.togglePanel)\n\n useEffect(() => {\n fetchSummary()\n }, [fetchSummary])\n\n const pendingCount = summary ? summary.todo + summary.inProgress : 0\n const collapsed = useLayoutStore((s) => s.sidebarCollapsed)\n // Numa shell sem trilha a shell põe isto na barra de topo — ali só cabe o\n // ícone, exatamente como na trilha recolhida.\n const surface = useWidgetSurface()\n const compact = collapsed || surface === 'topbar'\n const label = t('tasks.drawer.title') || 'Tasks'\n const open = () => (railMounted ? togglePanel('tasks') : toggleDrawer())\n // Na trilha recolhida, o mesmo painel de hover que os links abrem — senão\n // esta linha é o único ícone do menu sem nome.\n const railRow = useRailRow(\n surface === 'rail'\n ? { key: 'tasks', label, badge: pendingCount > 0 ? pendingCount : undefined }\n : null,\n )\n\n // A row of the rail, not an icon in the top bar. Tarefas são do workspace —\n // não mudam com a tela aberta — e lá em cima dividiam o canto com o \"Novo\" da\n // página. Os tokens já eram os da trilha (`text-sidebar-*`), o que sobre papel\n // dava um ícone quase invisível: agora eles pousam onde foram feitos.\n if (compact) {\n return (\n <Button variant=\"bare\" size=\"bare\"\n {...railRow}\n onClick={open}\n aria-label={label}\n // Na barra de topo não há painel da trilha para dizer o nome.\n title={surface === 'topbar' ? label : undefined}\n className={cn(\n 'fz-tap relative flex shrink-0 items-center justify-center rounded-button p-2 font-normal text-sidebar-muted transition-colors hover:bg-sidebar-accent/50 hover:text-sidebar-foreground',\n // Na trilha ele é uma linha (ocupa a coluna); na barra, um ícone\n // entre outros, e esticar tomaria a barra inteira.\n surface === 'rail' && 'w-full',\n )}\n >\n <CheckSquare className=\"h-4 w-4\" />\n {pendingCount > 0 && (\n <span className=\"absolute right-1 top-1 h-2 w-2 rounded-full bg-destructive\" />\n )}\n </Button>\n )\n }\n\n return (\n <Button variant=\"bare\" size=\"bare\"\n onClick={open}\n aria-label={label}\n className=\"fz-tap flex w-full items-center gap-2 rounded-button px-2.5 py-1.5 text-sm text-sidebar-muted transition-colors hover:bg-sidebar-accent/50 hover:text-sidebar-foreground font-normal justify-start\"\n >\n <CheckSquare className=\"h-4 w-4 shrink-0\" />\n <span className=\"min-w-0 flex-1 truncate text-left\">{label}</span>\n {pendingCount > 0 && (\n <span\n className={cn(\n 'flex shrink-0 items-center justify-center rounded-full bg-destructive text-[10px] text-destructive-foreground',\n pendingCount > 9 ? 'h-5 min-w-5 px-1' : 'h-4 w-4',\n )}\n >\n {pendingCount > 99 ? '99+' : pendingCount}\n </span>\n )}\n </Button>\n )\n}\n","import { defineSettingsTab } from '@fayz-ai/admin'\nimport { tl } from '@fayz-ai/core'\n\nconst TRIGGERS: Array<[string, string, string]> = [\n ['payable_created', 'A bill to pay is created', 'Conta a pagar criada'],\n ['payable_refund', 'A refund is due', 'Estorno a pagar'],\n ['cash_review_pending', 'A cash register awaits review', 'Caixa aguardando conferência'],\n ['cash_review_returned', 'A cash review is sent back', 'Conferência de caixa devolvida'],\n ['checkout_pending', 'A checkout is pending', 'Fechamento pendente'],\n ['dfe_received', 'A supplier invoice arrives', 'Nota de fornecedor recebida'],\n ['stock_loss_pending', 'A stock loss awaits approval', 'Perda de estoque aguardando aprovação'],\n ['stock_requisition_submitted', 'A stock requisition is sent', 'Requisição de estoque enviada'],\n ['stock_count_review', 'A stock count awaits review', 'Contagem de estoque para revisar'],\n ['stock_transfer_pending', 'A stock transfer is pending', 'Transferência de estoque pendente'],\n ['fiscal_rejected', 'An invoice is rejected', 'Nota fiscal rejeitada'],\n ['service_charge_approved', 'A service charge split is approved', 'Rateio da taxa de serviço aprovado'],\n ['hr_deadlines', 'An HR deadline is near', 'Prazo de RH chegando'],\n]\n\nexport const tasksV1SettingsTabs = [\n defineSettingsTab({\n id: 'tasks',\n label: tl('Tasks', 'Tarefas'),\n icon: 'CheckSquare',\n section: 'operations',\n pending: true,\n defaults: { 'tasks.default_priority': 'medium' },\n sections: [{\n title: tl('Defaults', 'Padrões'),\n fields: [{ key: 'tasks.default_priority', type: 'select', label: tl('Default priority', 'Prioridade padrão'), options: [\n { value: 'low', label: tl('Low', 'Baixa') }, { value: 'medium', label: tl('Medium', 'Média') },\n { value: 'high', label: tl('High', 'Alta') }, { value: 'urgent', label: tl('Urgent', 'Urgente') },\n ] }],\n }, {\n title: tl('Automations', 'Automações'),\n description: tl('Create a task for the right team when…', 'Criar uma tarefa para o setor certo quando…'),\n fields: TRIGGERS.map(([id, en, pt]) => ({ key: `tasks.auto.${id}`, type: 'boolean' as const, label: tl(en, pt) })),\n }],\n }),\n]\n","import React from 'react'\nimport type { PluginManifest, PluginScope, VerticalId } from '@fayz-ai/core'\nimport { registerTranslations } from '@fayz-ai/core'\nimport {\n getTasksProvider, useTasksStore,\n registerNotesTasksAdapter, NOTE_LABEL_PREFIX,\n type TasksDataProvider, type TaskPriority,\n} from '@fayz-ai/admin'\nimport type { ResolvedTasksConfig, TasksPluginLabels } from './context'\nimport { tasksLocales } from './locales'\nimport { tasksRegistries } from './data/registries'\nimport { TasksLauncher } from './components/TasksLauncher'\nimport { MIGRATIONS } from './migrations'\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport interface TasksPluginOptions {\n /** Label overrides */\n labels?: Partial<TasksPluginLabels>\n /** Plugin scope */\n scope?: PluginScope\n /** Vertical ID */\n verticalId?: VerticalId\n /** Data provider override (defaults to the shell's) */\n dataProvider?: TasksDataProvider\n /** Default priority for new tasks (default: 'medium') */\n defaultPriority?: TaskPriority\n /**\n * Show the Tasks row in the sidebar's foot. Default: true.\n *\n * The panel is worth a permanent row in a product where tasks are the work —\n * an agency, a clinic with a follow-up list. In one where they are back-office\n * (a restaurant during service), that row spends the whole shift competing\n * with the things somebody actually touches, and the badge on it is a red\n * number about paperwork. Turning it off keeps the plugin whole: the table,\n * the provider, the settings tab, the agent's tools and the onboarding rows it\n * carries all stay — only the rail entry goes.\n */\n launcher?: boolean\n}\n\nconst DEFAULT_LABELS: TasksPluginLabels = {\n drawerTitle: 'Tasks',\n settingsTitle: 'Tasks',\n quickAddPlaceholder: 'Add a task...',\n}\n\nfunction resolveConfig(options?: TasksPluginOptions): ResolvedTasksConfig {\n return {\n labels: { ...DEFAULT_LABELS, ...options?.labels },\n }\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport function createTasksPlugin(options?: TasksPluginOptions): PluginManifest {\n const config = resolveConfig(options)\n // Register locales globally so the plugin's translations resolve even when the\n // host shell does not mount @fayz-ai/core's I18nProvider (incremental de-bridge).\n registerTranslations(tasksLocales)\n\n // The table moved to the spine (db 047) and so did the store, the provider and\n // the panel. What is left here is the sidebar row, the sheet fallback, the\n // label catalogue and the settings tab — the plugin is now a set of surfaces\n // over a table it no longer owns.\n const provider = options?.dataProvider ?? getTasksProvider()\n const store = useTasksStore\n\n // Notes ↔ Tasks bridge: note todos are real tasks, linked by a `note:<id>`\n // label. The shell's Notes tab consumes this; the Tarefas tab (and its\n // summary badge) stays the single source of truth.\n registerNotesTasksAdapter({\n async createTodo({ title, noteId, noteTitle }) {\n const task = await provider.createTask({\n title,\n description: noteTitle ? `Nota: ${noteTitle}` : undefined,\n labels: [`${NOTE_LABEL_PREFIX}${noteId}`],\n })\n void store.getState().fetchSummary()\n return { id: task.id, title: task.title, done: task.status === 'done' }\n },\n async listTodos(noteId) {\n const tasks = await provider.getTasks({})\n const label = `${NOTE_LABEL_PREFIX}${noteId}`\n return tasks\n .filter((t) => t.labels.includes(label))\n .sort((a, b) => (a.status === 'done' ? 1 : 0) - (b.status === 'done' ? 1 : 0))\n .map((t) => ({ id: t.id, title: t.title, done: t.status === 'done' }))\n },\n async toggleTodo(id: string, done: boolean) {\n await provider.updateTask(id, { status: done ? 'done' : 'todo' })\n void store.getState().fetchSummary()\n },\n async removeTodo(id: string) {\n await provider.deleteTask(id)\n void store.getState().fetchSummary()\n },\n })\n\n return {\n id: 'tasks',\n defaultAgentRole: 'setup',\n name: config.labels.drawerTitle,\n icon: 'CheckSquare',\n version: '1.0.0',\n scope: options?.scope ?? 'universal',\n verticalId: options?.verticalId,\n defaultEnabled: true,\n dependencies: [],\n\n navigation: [],\n\n routes: [],\n\n widgets: options?.launcher === false ? [] : [\n {\n // No pé da trilha, não no topo: tarefas são do workspace, não da\n // tela aberta — e no topo elas dividiam o canto com as ações da página.\n id: 'tasks-launcher',\n zone: 'shell.sidebar.footer',\n component: TasksLauncher as unknown as React.ComponentType<unknown>,\n order: 10,\n props: {\n tasksConfig: config,\n tasksProvider: provider,\n },\n },\n ],\n\n aiTools: [\n {\n id: 'tasks.summary',\n name: 'getTasksSummary',\n description: 'Returns a summary of pending tasks: total, overdue, due today, by status and priority.',\n icon: 'CheckSquare',\n mode: 'read' as const,\n category: 'Tasks',\n parameters: {\n type: 'object' as const,\n properties: {\n status: {\n type: 'string' as const,\n description: 'Filter by task status',\n enum: ['todo', 'in_progress', 'done', 'cancelled', 'all'],\n },\n },\n },\n suggestions: [\n { label: 'Quais tarefas estão atrasadas?' },\n { label: 'Quantas tarefas estão pendentes?' },\n { label: \"O que vence hoje?\" },\n ],\n },\n ],\n\n registries: tasksRegistries,\n\n settings: [\n // One \"Tarefas\" screen, as in V1. The old default-priority toggle saved a\n // value nothing read; it now waits in the same Em breve screen.\n ...tasksV1SettingsTabs,\n ],\n\n // One baseline per unit since #338 — read from the generated barrel\n // rather than listed here, so regenerating the SQL never needs a\n // manifest edit to match.\n migrations: MIGRATIONS.map((entry) => ({\n id: `tasks-${entry.id}`,\n version: '1.0.0',\n sql: entry.sql,\n description:\n 'The whole schema this plugin provisions, as one file: every table, view, function, policy and grant, plus the reference rows it seeds. Replaced the per-change chain in the 1.0.0 squash (#338); the files it collapsed are kept, unapplied, in src/migrations.archive/.',\n })),\n\n locales: tasksLocales,\n }\n}\n\n// ---------------------------------------------------------------------------\n// Re-exports — the tasks slice lives in @fayz-ai/admin now, but this package's\n// public surface stays what it was.\n// ---------------------------------------------------------------------------\n\nexport type { ResolvedTasksConfig, TasksPluginLabels } from './context'\nexport type {\n Task, TaskLabel, TaskStatus, TaskPriority, TasksSummary,\n CreateTaskInput, UpdateTaskInput, TaskQuery, TasksDataProvider,\n} from '@fayz-ai/admin'\nexport {\n TasksPanel, TaskCard, TaskDetail, TaskQuickAdd, TasksFilterBar,\n useTasksStore, useTasksSummaryLine,\n createSupabaseTasksProvider, createMockTasksProvider,\n} from '@fayz-ai/admin'\nimport { tasksV1SettingsTabs } from './settings/v1-settings'\n"]}
@@ -0,0 +1,7 @@
1
+ // node_modules/.cache/fayz-migration-stubs/main.ts
2
+ var MIGRATION_000_BASELINE = "";
3
+ var MIGRATIONS = [];
4
+
5
+ export { MIGRATIONS, MIGRATION_000_BASELINE };
6
+ //# sourceMappingURL=main.browser.js.map
7
+ //# sourceMappingURL=main.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../node_modules/.cache/fayz-migration-stubs/main.ts"],"names":[],"mappings":";AAEO,IAAM,sBAAA,GAAyB;AAC/B,IAAM,aAAiD","file":"main.browser.js","sourcesContent":["// GENERATED by scripts/tsup-migrations.mjs — the browser build of a\n// migrations barrel: the same names, no SQL. See that script for why.\nexport const MIGRATION_000_BASELINE = ''\nexport const MIGRATIONS: Array<{ id: string; sql: string }> = []\n"]}
@@ -0,0 +1,332 @@
1
+ // src/migrations/index.ts
2
+ var MIGRATION_000_BASELINE = `-- ============================================================================
3
+ -- plugins/plugin-tasks/src/migrations/000_baseline.sql \u2014 what installing this provisions, as one file.
4
+ --
5
+ -- GENERATED by scripts/emit-unit-baselines.mjs (#338). Do not edit by hand:
6
+ -- change the schema, regenerate, and let scripts/check-chain-equivalence.mjs
7
+ -- prove the result still matches.
8
+ --
9
+ -- This replaced 3 migration files. They are kept, unapplied, in
10
+ -- migrations.archive/ \u2014 a year of decisions is worth reading even when it is no
11
+ -- longer worth replaying.
12
+ --
13
+ -- Object order is fixed rather than dependency-sorted: schemas, types,
14
+ -- sequences, tables, defaults, functions, constraints, views, indexes, foreign
15
+ -- keys, triggers, row security, policies, grants. Dependencies BETWEEN units
16
+ -- are carried by the order packages/db/chain.json declares.
17
+ -- ============================================================================
18
+
19
+ -- A LANGUAGE sql function binds its body at CREATE time, and 570 functions
20
+ -- sorted by name are not sorted by who calls whom. This is what lets them load
21
+ -- in any order; every body is still compiled on first call, so a genuinely
22
+ -- broken reference surfaces then rather than never. Session-scoped.
23
+ SET check_function_bodies = false;
24
+
25
+
26
+
27
+ -- \u2500\u2500 default privileges: reset \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
28
+ -- Cleared BEFORE anything is created, so every object below gets the ACL the
29
+ -- dump describes rather than the image's defaults on top of it. Restored at
30
+ -- the end of this file.
31
+
32
+ DO $dp$ BEGIN
33
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;
34
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
35
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;
36
+ END $dp$;
37
+
38
+ DO $dp$ BEGIN
39
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;
40
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
41
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;
42
+ END $dp$;
43
+
44
+ DO $dp$ BEGIN
45
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;
46
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
47
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;
48
+ END $dp$;
49
+
50
+ DO $dp$ BEGIN
51
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;
52
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
53
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;
54
+ END $dp$;
55
+
56
+ DO $dp$ BEGIN
57
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;
58
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
59
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;
60
+ END $dp$;
61
+
62
+ DO $dp$ BEGIN
63
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;
64
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
65
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;
66
+ END $dp$;
67
+
68
+
69
+ -- \u2500\u2500 table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
70
+
71
+ CREATE TABLE public.plg_tasks_labels (
72
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
73
+ tenant_id uuid NOT NULL,
74
+ name text NOT NULL,
75
+ color text DEFAULT '#6366f1'::text NOT NULL,
76
+ is_active boolean DEFAULT true NOT NULL,
77
+ created_at timestamp with time zone DEFAULT now() NOT NULL
78
+ );
79
+
80
+ CREATE TABLE public.plg_tasks_tasks (
81
+ id uuid DEFAULT gen_random_uuid() NOT NULL,
82
+ tenant_id uuid NOT NULL,
83
+ title text NOT NULL,
84
+ description text,
85
+ status text DEFAULT 'todo'::text NOT NULL,
86
+ priority text DEFAULT 'medium'::text NOT NULL,
87
+ due_date date,
88
+ assigned_to_id uuid,
89
+ assigned_to_name text,
90
+ parent_id uuid,
91
+ labels jsonb DEFAULT '[]'::jsonb NOT NULL,
92
+ "position" integer DEFAULT 0 NOT NULL,
93
+ created_by_id uuid,
94
+ created_by_name text,
95
+ created_at timestamp with time zone DEFAULT now() NOT NULL,
96
+ updated_at timestamp with time zone DEFAULT now() NOT NULL,
97
+ CONSTRAINT plg_tasks_tasks_priority_check CHECK ((priority = ANY (ARRAY['low'::text, 'medium'::text, 'high'::text, 'urgent'::text]))),
98
+ CONSTRAINT plg_tasks_tasks_status_check CHECK ((status = ANY (ARRAY['todo'::text, 'in_progress'::text, 'done'::text, 'cancelled'::text])))
99
+ );
100
+
101
+
102
+ -- \u2500\u2500 constraint \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
103
+
104
+ ALTER TABLE ONLY public.plg_tasks_labels
105
+ ADD CONSTRAINT plg_tasks_labels_pkey PRIMARY KEY (id);
106
+
107
+ ALTER TABLE ONLY public.plg_tasks_tasks
108
+ ADD CONSTRAINT plg_tasks_tasks_pkey PRIMARY KEY (id);
109
+
110
+
111
+ -- \u2500\u2500 index \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
112
+
113
+ CREATE INDEX idx_plg_tasks_labels_tenant ON public.plg_tasks_labels USING btree (tenant_id);
114
+
115
+ CREATE INDEX idx_plg_tasks_tasks_assigned ON public.plg_tasks_tasks USING btree (assigned_to_id);
116
+
117
+ CREATE INDEX idx_plg_tasks_tasks_due ON public.plg_tasks_tasks USING btree (tenant_id, due_date) WHERE (due_date IS NOT NULL);
118
+
119
+ CREATE INDEX idx_plg_tasks_tasks_parent ON public.plg_tasks_tasks USING btree (parent_id);
120
+
121
+ CREATE INDEX idx_plg_tasks_tasks_status ON public.plg_tasks_tasks USING btree (tenant_id, status);
122
+
123
+ CREATE INDEX idx_plg_tasks_tasks_tenant ON public.plg_tasks_tasks USING btree (tenant_id);
124
+
125
+
126
+ -- \u2500\u2500 fk constraint \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
127
+
128
+ ALTER TABLE ONLY public.plg_tasks_labels
129
+ ADD CONSTRAINT plg_tasks_labels_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
130
+
131
+ ALTER TABLE ONLY public.plg_tasks_tasks
132
+ ADD CONSTRAINT plg_tasks_tasks_parent_id_fkey FOREIGN KEY (parent_id) REFERENCES public.plg_tasks_tasks(id) ON DELETE CASCADE;
133
+
134
+ ALTER TABLE ONLY public.plg_tasks_tasks
135
+ ADD CONSTRAINT plg_tasks_tasks_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
136
+
137
+
138
+ -- \u2500\u2500 row security \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
139
+
140
+ ALTER TABLE public.plg_tasks_labels ENABLE ROW LEVEL SECURITY;
141
+
142
+ ALTER TABLE public.plg_tasks_tasks ENABLE ROW LEVEL SECURITY;
143
+
144
+
145
+ -- \u2500\u2500 policy \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
146
+
147
+ CREATE POLICY plg_tasks_labels_delete ON public.plg_tasks_labels FOR DELETE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
148
+
149
+ CREATE POLICY plg_tasks_labels_insert ON public.plg_tasks_labels FOR INSERT TO authenticated WITH CHECK ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
150
+
151
+ CREATE POLICY plg_tasks_labels_select ON public.plg_tasks_labels FOR SELECT TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
152
+
153
+ CREATE POLICY plg_tasks_labels_update ON public.plg_tasks_labels FOR UPDATE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
154
+
155
+ CREATE POLICY plg_tasks_tasks_delete ON public.plg_tasks_tasks FOR DELETE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
156
+
157
+ CREATE POLICY plg_tasks_tasks_insert ON public.plg_tasks_tasks FOR INSERT TO authenticated WITH CHECK ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
158
+
159
+ CREATE POLICY plg_tasks_tasks_select ON public.plg_tasks_tasks FOR SELECT TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
160
+
161
+ CREATE POLICY plg_tasks_tasks_update ON public.plg_tasks_tasks FOR UPDATE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));
162
+
163
+
164
+ -- \u2500\u2500 acl \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
165
+
166
+ GRANT MAINTAIN ON TABLE public.plg_tasks_labels TO anon;
167
+ GRANT ALL ON TABLE public.plg_tasks_labels TO authenticated;
168
+ GRANT ALL ON TABLE public.plg_tasks_labels TO service_role;
169
+
170
+ GRANT MAINTAIN ON TABLE public.plg_tasks_tasks TO anon;
171
+ GRANT ALL ON TABLE public.plg_tasks_tasks TO authenticated;
172
+ GRANT ALL ON TABLE public.plg_tasks_tasks TO service_role;
173
+
174
+
175
+ -- \u2500\u2500 default privileges: restore \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
176
+ -- Put back, so the NEXT thing installed inherits what the chain had.
177
+
178
+ DO $dp$ BEGIN
179
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;
180
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
181
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;
182
+ END $dp$;
183
+
184
+ DO $dp$ BEGIN
185
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;
186
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
187
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;
188
+ END $dp$;
189
+
190
+ DO $dp$ BEGIN
191
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;
192
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
193
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;
194
+ END $dp$;
195
+
196
+ DO $dp$ BEGIN
197
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;
198
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
199
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;
200
+ END $dp$;
201
+
202
+ DO $dp$ BEGIN
203
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;
204
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
205
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;
206
+ END $dp$;
207
+
208
+ DO $dp$ BEGIN
209
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;
210
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
211
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;
212
+ END $dp$;
213
+
214
+ DO $dp$ BEGIN
215
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;
216
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
217
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;
218
+ END $dp$;
219
+
220
+ DO $dp$ BEGIN
221
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;
222
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
223
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;
224
+ END $dp$;
225
+
226
+ DO $dp$ BEGIN
227
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;
228
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
229
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;
230
+ END $dp$;
231
+
232
+ DO $dp$ BEGIN
233
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;
234
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
235
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;
236
+ END $dp$;
237
+
238
+ DO $dp$ BEGIN
239
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;
240
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
241
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;
242
+ END $dp$;
243
+
244
+ DO $dp$ BEGIN
245
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;
246
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
247
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;
248
+ END $dp$;
249
+
250
+ DO $dp$ BEGIN
251
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO anon$stmt$;
252
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
253
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO anon$stmt$;
254
+ END $dp$;
255
+
256
+ DO $dp$ BEGIN
257
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;
258
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
259
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;
260
+ END $dp$;
261
+
262
+ DO $dp$ BEGIN
263
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;
264
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
265
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;
266
+ END $dp$;
267
+
268
+ DO $dp$ BEGIN
269
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;
270
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
271
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;
272
+ END $dp$;
273
+
274
+ DO $dp$ BEGIN
275
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT MAINTAIN ON TABLES TO anon$stmt$;
276
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
277
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT MAINTAIN ON TABLES TO anon$stmt$;
278
+ END $dp$;
279
+
280
+ DO $dp$ BEGIN
281
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;
282
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
283
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;
284
+ END $dp$;
285
+
286
+ DO $dp$ BEGIN
287
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;
288
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
289
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;
290
+ END $dp$;
291
+
292
+ DO $dp$ BEGIN
293
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;
294
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
295
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;
296
+ END $dp$;
297
+
298
+ DO $dp$ BEGIN
299
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO anon$stmt$;
300
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
301
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO anon$stmt$;
302
+ END $dp$;
303
+
304
+ DO $dp$ BEGIN
305
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;
306
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
307
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;
308
+ END $dp$;
309
+
310
+ DO $dp$ BEGIN
311
+ EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;
312
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
313
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;
314
+ END $dp$;
315
+
316
+ DO $dp$ BEGIN
317
+ EXECUTE $stmt$--
318
+ -- PostgreSQL database dump complete
319
+ --$stmt$;
320
+ EXCEPTION WHEN insufficient_privilege OR undefined_object THEN
321
+ RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$--
322
+ -- PostgreSQL database dump complete
323
+ --$stmt$;
324
+ END $dp$;
325
+ `;
326
+ var MIGRATIONS = [
327
+ { id: "000_baseline", sql: MIGRATION_000_BASELINE }
328
+ ];
329
+
330
+ export { MIGRATIONS, MIGRATION_000_BASELINE };
331
+ //# sourceMappingURL=main.js.map
332
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/migrations/index.ts"],"names":[],"mappings":";AAIO,IAAM,sBAAA,GAAyB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;;AAAA;;AAAA;;AAAA;;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqU/B,IAAM,UAAA,GAAiD;AAAA,EAC5D,EAAE,EAAA,EAAI,cAAA,EAAgB,GAAA,EAAK,sBAAA;AAC7B","file":"main.js","sourcesContent":["// AUTO-GENERATED from 000_baseline.sql — regenerate with scripts/embed-migrations.mjs\n// SQL files are the source of truth; this inline copy lets the manifest declare\n// migrations as data. Do not edit by hand — run the embed script instead.\n\nexport const MIGRATION_000_BASELINE = `-- ============================================================================\n-- plugins/plugin-tasks/src/migrations/000_baseline.sql — what installing this provisions, as one file.\n--\n-- GENERATED by scripts/emit-unit-baselines.mjs (#338). Do not edit by hand:\n-- change the schema, regenerate, and let scripts/check-chain-equivalence.mjs\n-- prove the result still matches.\n--\n-- This replaced 3 migration files. They are kept, unapplied, in\n-- migrations.archive/ — a year of decisions is worth reading even when it is no\n-- longer worth replaying.\n--\n-- Object order is fixed rather than dependency-sorted: schemas, types,\n-- sequences, tables, defaults, functions, constraints, views, indexes, foreign\n-- keys, triggers, row security, policies, grants. Dependencies BETWEEN units\n-- are carried by the order packages/db/chain.json declares.\n-- ============================================================================\n\n-- A LANGUAGE sql function binds its body at CREATE time, and 570 functions\n-- sorted by name are not sorted by who calls whom. This is what lets them load\n-- in any order; every body is still compiled on first call, so a genuinely\n-- broken reference surfaces then rather than never. Session-scoped.\nSET check_function_bodies = false;\n\n\n\n-- ── default privileges: reset ───────────────────────────────────────────\n-- Cleared BEFORE anything is created, so every object below gets the ACL the\n-- dump describes rather than the image's defaults on top of it. Restored at\n-- the end of this file.\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\n\n-- ── table ───────────────────────────────────────────────────────────────\n\nCREATE TABLE public.plg_tasks_labels (\n id uuid DEFAULT gen_random_uuid() NOT NULL,\n tenant_id uuid NOT NULL,\n name text NOT NULL,\n color text DEFAULT '#6366f1'::text NOT NULL,\n is_active boolean DEFAULT true NOT NULL,\n created_at timestamp with time zone DEFAULT now() NOT NULL\n);\n\nCREATE TABLE public.plg_tasks_tasks (\n id uuid DEFAULT gen_random_uuid() NOT NULL,\n tenant_id uuid NOT NULL,\n title text NOT NULL,\n description text,\n status text DEFAULT 'todo'::text NOT NULL,\n priority text DEFAULT 'medium'::text NOT NULL,\n due_date date,\n assigned_to_id uuid,\n assigned_to_name text,\n parent_id uuid,\n labels jsonb DEFAULT '[]'::jsonb NOT NULL,\n \"position\" integer DEFAULT 0 NOT NULL,\n created_by_id uuid,\n created_by_name text,\n created_at timestamp with time zone DEFAULT now() NOT NULL,\n updated_at timestamp with time zone DEFAULT now() NOT NULL,\n CONSTRAINT plg_tasks_tasks_priority_check CHECK ((priority = ANY (ARRAY['low'::text, 'medium'::text, 'high'::text, 'urgent'::text]))),\n CONSTRAINT plg_tasks_tasks_status_check CHECK ((status = ANY (ARRAY['todo'::text, 'in_progress'::text, 'done'::text, 'cancelled'::text])))\n);\n\n\n-- ── constraint ──────────────────────────────────────────────────────────\n\nALTER TABLE ONLY public.plg_tasks_labels\n ADD CONSTRAINT plg_tasks_labels_pkey PRIMARY KEY (id);\n\nALTER TABLE ONLY public.plg_tasks_tasks\n ADD CONSTRAINT plg_tasks_tasks_pkey PRIMARY KEY (id);\n\n\n-- ── index ───────────────────────────────────────────────────────────────\n\nCREATE INDEX idx_plg_tasks_labels_tenant ON public.plg_tasks_labels USING btree (tenant_id);\n\nCREATE INDEX idx_plg_tasks_tasks_assigned ON public.plg_tasks_tasks USING btree (assigned_to_id);\n\nCREATE INDEX idx_plg_tasks_tasks_due ON public.plg_tasks_tasks USING btree (tenant_id, due_date) WHERE (due_date IS NOT NULL);\n\nCREATE INDEX idx_plg_tasks_tasks_parent ON public.plg_tasks_tasks USING btree (parent_id);\n\nCREATE INDEX idx_plg_tasks_tasks_status ON public.plg_tasks_tasks USING btree (tenant_id, status);\n\nCREATE INDEX idx_plg_tasks_tasks_tenant ON public.plg_tasks_tasks USING btree (tenant_id);\n\n\n-- ── fk constraint ───────────────────────────────────────────────────────\n\nALTER TABLE ONLY public.plg_tasks_labels\n ADD CONSTRAINT plg_tasks_labels_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;\n\nALTER TABLE ONLY public.plg_tasks_tasks\n ADD CONSTRAINT plg_tasks_tasks_parent_id_fkey FOREIGN KEY (parent_id) REFERENCES public.plg_tasks_tasks(id) ON DELETE CASCADE;\n\nALTER TABLE ONLY public.plg_tasks_tasks\n ADD CONSTRAINT plg_tasks_tasks_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;\n\n\n-- ── row security ────────────────────────────────────────────────────────\n\nALTER TABLE public.plg_tasks_labels ENABLE ROW LEVEL SECURITY;\n\nALTER TABLE public.plg_tasks_tasks ENABLE ROW LEVEL SECURITY;\n\n\n-- ── policy ──────────────────────────────────────────────────────────────\n\nCREATE POLICY plg_tasks_labels_delete ON public.plg_tasks_labels FOR DELETE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_labels_insert ON public.plg_tasks_labels FOR INSERT TO authenticated WITH CHECK ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_labels_select ON public.plg_tasks_labels FOR SELECT TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_labels_update ON public.plg_tasks_labels FOR UPDATE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_tasks_delete ON public.plg_tasks_tasks FOR DELETE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_tasks_insert ON public.plg_tasks_tasks FOR INSERT TO authenticated WITH CHECK ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_tasks_select ON public.plg_tasks_tasks FOR SELECT TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_tasks_tasks_update ON public.plg_tasks_tasks FOR UPDATE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\n\n-- ── acl ─────────────────────────────────────────────────────────────────\n\nGRANT MAINTAIN ON TABLE public.plg_tasks_labels TO anon;\nGRANT ALL ON TABLE public.plg_tasks_labels TO authenticated;\nGRANT ALL ON TABLE public.plg_tasks_labels TO service_role;\n\nGRANT MAINTAIN ON TABLE public.plg_tasks_tasks TO anon;\nGRANT ALL ON TABLE public.plg_tasks_tasks TO authenticated;\nGRANT ALL ON TABLE public.plg_tasks_tasks TO service_role;\n\n\n-- ── default privileges: restore ─────────────────────────────────────────\n-- Put back, so the NEXT thing installed inherits what the chain had.\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT MAINTAIN ON TABLES TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT MAINTAIN ON TABLES TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$--\n-- PostgreSQL database dump complete\n--$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set — %', $stmt$--\n-- PostgreSQL database dump complete\n--$stmt$;\nEND $dp$;\n`\n\nexport const MIGRATIONS: Array<{ id: string; sql: string }> = [\n { id: \"000_baseline\", sql: MIGRATION_000_BASELINE },\n]\n"]}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "status": "beta",
5
5
  "dependencies": []
6
6
  },
7
- "version": "0.11.14",
7
+ "version": "0.11.15",
8
8
  "description": "Fayz SDK — plugin-tasks plugin",
9
9
  "type": "module",
10
10
  "sideEffects": false,
@@ -17,6 +17,12 @@
17
17
  "import": "./dist/index.js"
18
18
  }
19
19
  },
20
+ "imports": {
21
+ "#migrations/*": {
22
+ "browser": "./dist/migrations/*.browser.js",
23
+ "default": "./dist/migrations/*.js"
24
+ }
25
+ },
20
26
  "files": [
21
27
  "dist"
22
28
  ],
@@ -27,9 +33,9 @@
27
33
  "lucide-react": ">=0.400.0 <1.0.0"
28
34
  },
29
35
  "dependencies": {
30
- "@fayz-ai/core": "^0.61.0",
31
- "@fayz-ai/admin": "^0.62.0",
32
- "@fayz-ai/ui": "^0.61.0"
36
+ "@fayz-ai/core": "^0.63.0",
37
+ "@fayz-ai/admin": "^0.63.0",
38
+ "@fayz-ai/ui": "^0.63.0"
33
39
  },
34
40
  "devDependencies": {
35
41
  "@types/react": "^18.3.0",