@arcforgelabs/flow 2026.10.30 → 2026.10.32-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +2 -0
  2. package/npm-shrinkwrap.json +188 -2
  3. package/package.json +2 -1
  4. package/server/api/alerts.js +49 -0
  5. package/server/api/invoicing.js +110 -3
  6. package/server/app.js +29 -2
  7. package/server/core/alerts.js +157 -0
  8. package/server/core/history.js +65 -0
  9. package/server/core/invoice-pdf.js +266 -0
  10. package/server/core/invoicing-rules.js +12 -0
  11. package/server/core/job-board.js +25 -3
  12. package/server/core/line-mapping.js +36 -10
  13. package/server/core/pipeline.js +75 -3
  14. package/server/core/price-list.js +348 -0
  15. package/server/db/commands.js +42 -0
  16. package/server/db/doctor.js +168 -0
  17. package/server/db/migrations/0014_price_list.sql +34 -0
  18. package/server/db/migrations/0015_alert_dismissals.sql +17 -0
  19. package/server/db/migrations/meta/0014_snapshot.json +3773 -0
  20. package/server/db/migrations/meta/0015_snapshot.json +3854 -0
  21. package/server/db/migrations/meta/_journal.json +14 -0
  22. package/server/db/schema.js +44 -0
  23. package/server/flow-server.js +20 -1
  24. package/server/index.js +2 -1
  25. package/server/integrations/call-guard.js +362 -0
  26. package/server/integrations/port.js +20 -1
  27. package/server/integrations/seazona/feed.js +23 -1
  28. package/server/integrations/seazona/governor.js +50 -122
  29. package/server/integrations/seazona/history/backfill.js +208 -0
  30. package/server/integrations/seazona/history/csv.js +65 -0
  31. package/server/integrations/seazona/history/index.js +584 -0
  32. package/server/integrations/seazona/history/read.js +196 -0
  33. package/server/integrations/seazona/index.js +37 -1
  34. package/server/integrations/seazona/lanes.js +186 -50
  35. package/server/integrations/seazona/migrations/0003_call_guard.sql +2 -0
  36. package/server/integrations/seazona/migrations/0004_history_import.sql +68 -0
  37. package/server/integrations/seazona/migrations/meta/0003_snapshot.json +895 -0
  38. package/server/integrations/seazona/migrations/meta/0004_snapshot.json +1323 -0
  39. package/server/integrations/seazona/migrations/meta/_journal.json +14 -0
  40. package/server/integrations/seazona/routes.js +145 -0
  41. package/server/integrations/seazona/schema.js +94 -0
  42. package/server/integrations/seazona/settings.js +14 -3
  43. package/server/integrations/seazona/sync-once.js +1 -1
  44. package/server/integrations/seazona/tables.js +4 -0
  45. package/server/integrations/xero/client.js +27 -7
  46. package/server/integrations/xero/drafts.js +46 -8
  47. package/server/integrations/xero/import.js +125 -17
  48. package/server/integrations/xero/index.js +36 -7
  49. package/server/integrations/xero/lookup.js +26 -0
  50. package/server/integrations/xero/migrations/0006_xero_call_guard.sql +26 -0
  51. package/server/integrations/xero/migrations/meta/_journal.json +7 -0
  52. package/server/integrations/xero/mirror.js +11 -2
  53. package/server/integrations/xero/oauth.js +4 -1
  54. package/server/integrations/xero/reconcile.js +173 -0
  55. package/server/integrations/xero/routes.js +35 -0
  56. package/server/integrations/xero/runtime.js +45 -4
  57. package/server/release-channel.js +3 -3
  58. package/server/ui/alerts.js +77 -0
  59. package/server/ui/app-page.js +1 -1
  60. package/server/ui/app.js +48 -14
  61. package/server/ui/clerk-appearance.js +42 -9
  62. package/server/ui/flow.css +31 -2
  63. package/server/ui/invoicing-settings.js +1 -1
  64. package/server/ui/invoicing.js +121 -8
  65. package/server/ui/line-mappings.js +3 -2
  66. package/server/ui/price-list.js +247 -0
  67. package/server/ui/routes.js +1 -1
@@ -0,0 +1,68 @@
1
+ CREATE TABLE IF NOT EXISTS "seazona_history_batch_jobs" (
2
+ "batch_id" bigint NOT NULL,
3
+ "job_key" text NOT NULL,
4
+ "job" jsonb NOT NULL,
5
+ "record_hash" text NOT NULL,
6
+ "outcome" text,
7
+ "findings" jsonb DEFAULT '[]'::jsonb NOT NULL,
8
+ "mirror_order_id" text,
9
+ "mirror_invoice_number" text,
10
+ "client_id" text,
11
+ "decision" text,
12
+ "decided_by" text,
13
+ "decided_at" timestamp with time zone,
14
+ CONSTRAINT "seazona_history_batch_jobs_batch_id_job_key_pk" PRIMARY KEY("batch_id","job_key")
15
+ );
16
+ --> statement-breakpoint
17
+ CREATE TABLE IF NOT EXISTS "seazona_history_batches" (
18
+ "id" bigserial PRIMARY KEY NOT NULL,
19
+ "file_name" text,
20
+ "file_sha256" text NOT NULL,
21
+ "profile" text NOT NULL,
22
+ "columns" jsonb DEFAULT '{}'::jsonb NOT NULL,
23
+ "ignored_columns" jsonb DEFAULT '[]'::jsonb NOT NULL,
24
+ "status" text NOT NULL,
25
+ "counts" jsonb DEFAULT '{}'::jsonb NOT NULL,
26
+ "created_by" text NOT NULL,
27
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
28
+ "reconciled_at" timestamp with time zone,
29
+ "applied_at" timestamp with time zone,
30
+ "applied_by" text
31
+ );
32
+ --> statement-breakpoint
33
+ CREATE TABLE IF NOT EXISTS "seazona_history_jobs" (
34
+ "job_key" text PRIMARY KEY NOT NULL,
35
+ "invoice_number" text,
36
+ "case_ref" text,
37
+ "client_id" text,
38
+ "company" text,
39
+ "doctor_name" text,
40
+ "status" text,
41
+ "job_date" text,
42
+ "due_date" text,
43
+ "shipped_date" text,
44
+ "lines" jsonb DEFAULT '[]'::jsonb NOT NULL,
45
+ "subtotal_cents" bigint,
46
+ "total_cents" bigint,
47
+ "patient_reference" text,
48
+ "mirror_order_id" text,
49
+ "mirror_invoice_number" text,
50
+ "record_hash" text NOT NULL,
51
+ "batch_id" bigint NOT NULL,
52
+ "first_batch_id" bigint NOT NULL,
53
+ "first_imported_at" timestamp with time zone NOT NULL,
54
+ "last_changed_at" timestamp with time zone NOT NULL
55
+ );
56
+ --> statement-breakpoint
57
+ CREATE TABLE IF NOT EXISTS "seazona_history_rows" (
58
+ "batch_id" bigint NOT NULL,
59
+ "row_number" integer NOT NULL,
60
+ "job_key" text,
61
+ "fields" jsonb NOT NULL,
62
+ "problems" jsonb DEFAULT '[]'::jsonb NOT NULL,
63
+ CONSTRAINT "seazona_history_rows_batch_id_row_number_pk" PRIMARY KEY("batch_id","row_number")
64
+ );
65
+ --> statement-breakpoint
66
+ CREATE INDEX IF NOT EXISTS "seazona_history_batches_file" ON "seazona_history_batches" USING btree ("file_sha256");--> statement-breakpoint
67
+ CREATE INDEX IF NOT EXISTS "seazona_history_jobs_invoice" ON "seazona_history_jobs" USING btree ("invoice_number");--> statement-breakpoint
68
+ CREATE INDEX IF NOT EXISTS "seazona_history_jobs_changed" ON "seazona_history_jobs" USING btree ("last_changed_at");