ray-finance 0.2.2 → 0.2.4

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 (82) hide show
  1. package/README.md +38 -11
  2. package/dist/ai/agent.js +16 -3
  3. package/dist/ai/context.js +6 -2
  4. package/dist/ai/insights.js +26 -3
  5. package/dist/ai/redactor.js +11 -0
  6. package/dist/ai/system-prompt.js +2 -2
  7. package/dist/ai/tools.js +4 -0
  8. package/dist/cli/backup.js +18 -9
  9. package/dist/cli/chat.js +146 -40
  10. package/dist/cli/format.d.ts +2 -0
  11. package/dist/cli/format.js +25 -0
  12. package/dist/cli/index.js +12 -2
  13. package/dist/cli/setup.js +7 -1
  14. package/dist/daily-sync.js +19 -4
  15. package/dist/db/connection.js +9 -1
  16. package/dist/db/encryption.js +18 -7
  17. package/dist/db/schema.js +6 -1
  18. package/dist/public/link.html +47 -24
  19. package/dist/public/ray-logo-dark.png +0 -0
  20. package/dist/queries/index.js +8 -8
  21. package/dist/server.js +33 -1
  22. package/package.json +7 -2
  23. package/.claude/settings.local.json +0 -16
  24. package/.env.example +0 -13
  25. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -19
  26. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -9
  27. package/.github/PULL_REQUEST_TEMPLATE.md +0 -5
  28. package/.github/workflows/ci.yml +0 -21
  29. package/CHANGELOG.md +0 -16
  30. package/CODE_OF_CONDUCT.md +0 -31
  31. package/CONTRIBUTING.md +0 -41
  32. package/Dockerfile +0 -8
  33. package/SECURITY.md +0 -36
  34. package/SPEC.md +0 -374
  35. package/docker-compose.yml +0 -9
  36. package/site/next-env.d.ts +0 -6
  37. package/site/next.config.ts +0 -7
  38. package/site/package-lock.json +0 -1661
  39. package/site/package.json +0 -24
  40. package/site/postcss.config.mjs +0 -7
  41. package/site/public/ray-og.jpg +0 -0
  42. package/site/public/robots.txt +0 -4
  43. package/site/public/sitemap.xml +0 -8
  44. package/site/src/app/copy-command.tsx +0 -31
  45. package/site/src/app/globals.css +0 -87
  46. package/site/src/app/layout.tsx +0 -64
  47. package/site/src/app/page.tsx +0 -841
  48. package/site/src/app/pii-scramble.tsx +0 -190
  49. package/site/src/app/reveal.tsx +0 -29
  50. package/site/tsconfig.json +0 -21
  51. package/src/ai/agent.ts +0 -106
  52. package/src/ai/audit.ts +0 -11
  53. package/src/ai/context.ts +0 -93
  54. package/src/ai/insights.ts +0 -474
  55. package/src/ai/memory.ts +0 -21
  56. package/src/ai/redactor.ts +0 -102
  57. package/src/ai/system-prompt.ts +0 -90
  58. package/src/ai/tools.ts +0 -716
  59. package/src/alerts/index.ts +0 -123
  60. package/src/cli/backup.ts +0 -113
  61. package/src/cli/chat.ts +0 -105
  62. package/src/cli/commands.ts +0 -240
  63. package/src/cli/format.ts +0 -149
  64. package/src/cli/index.ts +0 -193
  65. package/src/cli/scheduler.ts +0 -116
  66. package/src/cli/setup.ts +0 -189
  67. package/src/config.ts +0 -81
  68. package/src/daily-sync.ts +0 -155
  69. package/src/db/connection.ts +0 -38
  70. package/src/db/encryption.ts +0 -29
  71. package/src/db/helpers.ts +0 -47
  72. package/src/db/schema.ts +0 -196
  73. package/src/index.ts +0 -3
  74. package/src/plaid/client.ts +0 -25
  75. package/src/plaid/link.ts +0 -25
  76. package/src/plaid/sync.ts +0 -219
  77. package/src/public/link.html +0 -161
  78. package/src/queries/index.ts +0 -586
  79. package/src/scoring/index.ts +0 -468
  80. package/src/server.ts +0 -162
  81. package/tsconfig.json +0 -16
  82. /package/{site → dist}/public/favicon.png +0 -0
package/site/package.json DELETED
@@ -1,24 +0,0 @@
1
- {
2
- "name": "ray-finance-site",
3
- "version": "0.1.0",
4
- "private": true,
5
- "scripts": {
6
- "dev": "next dev",
7
- "build": "next build",
8
- "start": "next start"
9
- },
10
- "dependencies": {
11
- "geist": "^1.7.0",
12
- "next": "^15.1.0",
13
- "react": "^19.0.0",
14
- "react-dom": "^19.0.0"
15
- },
16
- "devDependencies": {
17
- "@tailwindcss/postcss": "^4.0.0",
18
- "@types/node": "^22.0.0",
19
- "@types/react": "^19.0.0",
20
- "@types/react-dom": "^19.0.0",
21
- "tailwindcss": "^4.0.0",
22
- "typescript": "^5.7.0"
23
- }
24
- }
@@ -1,7 +0,0 @@
1
- const config = {
2
- plugins: {
3
- "@tailwindcss/postcss": {},
4
- },
5
- };
6
-
7
- export default config;
Binary file
@@ -1,4 +0,0 @@
1
- User-agent: *
2
- Allow: /
3
-
4
- Sitemap: https://rayfinance.app/sitemap.xml
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3
- <url>
4
- <loc>https://rayfinance.app</loc>
5
- <lastmod>2026-03-28</lastmod>
6
- <priority>1.0</priority>
7
- </url>
8
- </urlset>
@@ -1,31 +0,0 @@
1
- "use client";
2
-
3
- import { useState } from "react";
4
-
5
- export function CopyCommand({
6
- command,
7
- className = "",
8
- }: {
9
- command: string;
10
- className?: string;
11
- }) {
12
- const [copied, setCopied] = useState(false);
13
-
14
- return (
15
- <button
16
- type="button"
17
- onClick={() => {
18
- navigator.clipboard.writeText(command);
19
- setCopied(true);
20
- setTimeout(() => setCopied(false), 2000);
21
- }}
22
- className={`group relative cursor-pointer ${className}`}
23
- >
24
- <span className="text-stone-400 font-mono">$</span>{" "}
25
- <span className="font-mono">{command}</span>
26
- <span className="ml-0 max-w-0 overflow-hidden whitespace-nowrap text-xs text-stone-400 transition-all duration-300 ease-in-out group-hover:ml-2 group-hover:max-w-[6rem]">
27
- {copied ? "✓ copied" : "click to copy"}
28
- </span>
29
- </button>
30
- );
31
- }
@@ -1,87 +0,0 @@
1
- @import "tailwindcss";
2
-
3
- @theme {
4
- --font-sans: var(--font-geist-sans), ui-sans-serif, system-ui, -apple-system, sans-serif;
5
- --font-mono: var(--font-geist-mono), ui-monospace, monospace;
6
- --font-pixel: var(--font-geist-pixel-square), monospace;
7
-
8
- --color-stone-50: #fafaf9;
9
- --color-stone-100: #f5f5f4;
10
- --color-stone-200: #e7e5e4;
11
- --color-stone-300: #d6d3d1;
12
- --color-stone-400: #a8a29e;
13
- --color-stone-500: #78716c;
14
- --color-stone-600: #57534e;
15
- --color-stone-700: #44403c;
16
- --color-stone-800: #292524;
17
- --color-stone-900: #1c1917;
18
- --color-stone-950: #0c0a09;
19
-
20
- --color-lime-400: #87da26;
21
- --color-lime-500: #6ab318;
22
- --color-lime-600: #548c13;
23
-
24
- --color-red-400: #f87171;
25
- --color-amber-300: #fcd34d;
26
- --color-amber-400: #fbbf24;
27
- }
28
-
29
- * {
30
- -webkit-font-smoothing: antialiased;
31
- -moz-osx-font-smoothing: grayscale;
32
- }
33
-
34
- :focus-visible {
35
- outline: 2px solid var(--color-lime-400);
36
- outline-offset: 2px;
37
- }
38
-
39
- /* Hero entrance animation */
40
- @keyframes fade-up {
41
- from {
42
- opacity: 0;
43
- transform: translateY(20px);
44
- }
45
- to {
46
- opacity: 1;
47
- transform: translateY(0);
48
- }
49
- }
50
-
51
- .animate-fade-up {
52
- animation: fade-up 0.6s ease-out both;
53
- }
54
-
55
- .animate-fade-up-delay-1 {
56
- animation: fade-up 0.6s ease-out 0.15s both;
57
- }
58
-
59
- .animate-fade-up-delay-2 {
60
- animation: fade-up 0.6s ease-out 0.3s both;
61
- }
62
-
63
- /* Scroll-triggered reveal */
64
- .reveal {
65
- opacity: 0;
66
- transform: translateY(16px);
67
- transition: opacity 0.5s ease-out, transform 0.5s ease-out;
68
- }
69
-
70
- .reveal.visible {
71
- opacity: 1;
72
- transform: translateY(0);
73
- }
74
-
75
- /* Respect reduced motion */
76
- @media (prefers-reduced-motion: reduce) {
77
- .animate-fade-up,
78
- .animate-fade-up-delay-1,
79
- .animate-fade-up-delay-2 {
80
- animation: none;
81
- }
82
- .reveal {
83
- opacity: 1;
84
- transform: none;
85
- transition: none;
86
- }
87
- }
@@ -1,64 +0,0 @@
1
- import type { Metadata } from "next";
2
- import { GeistSans } from "geist/font/sans";
3
- import { GeistMono } from "geist/font/mono";
4
- import { GeistPixelSquare } from "geist/font/pixel";
5
- import "./globals.css";
6
-
7
- export const metadata: Metadata = {
8
- metadataBase: new URL("https://rayfinance.app"),
9
- title: "Ray — AI Financial Advisor, Running Locally",
10
- description:
11
- "An open-source CLI that connects to your bank and gives you AI-powered financial advice — all running locally on your machine.",
12
- keywords: [
13
- "AI financial advisor",
14
- "personal finance CLI",
15
- "local-first finance",
16
- "AI budgeting tool",
17
- "open source finance",
18
- "Plaid CLI",
19
- "financial planning AI",
20
- ],
21
- authors: [{ name: "Clark Dinnison" }],
22
- alternates: {
23
- canonical: "/",
24
- },
25
- openGraph: {
26
- title: "Ray — AI Financial Advisor, Running Locally",
27
- description:
28
- "An open-source CLI that connects to your bank and gives you AI-powered financial advice — all running locally on your machine.",
29
- url: "https://rayfinance.app",
30
- siteName: "Ray Finance",
31
- type: "website",
32
- images: [
33
- {
34
- url: "/ray-og.jpg",
35
- width: 1200,
36
- height: 630,
37
- alt: "Ray — AI Financial Advisor CLI",
38
- },
39
- ],
40
- },
41
- twitter: {
42
- card: "summary_large_image",
43
- title: "Ray — AI Financial Advisor, Running Locally",
44
- description:
45
- "An open-source CLI that connects to your bank and gives you AI-powered financial advice — all running locally on your machine.",
46
- images: ["/ray-og.jpg"],
47
- },
48
- icons: {
49
- icon: "/favicon.png",
50
- apple: "/favicon.png",
51
- },
52
- };
53
-
54
- export default function RootLayout({
55
- children,
56
- }: {
57
- children: React.ReactNode;
58
- }) {
59
- return (
60
- <html lang="en" className={`${GeistSans.variable} ${GeistMono.variable} ${GeistPixelSquare.variable}`} style={{ colorScheme: "light" }}>
61
- <body className="bg-stone-50 text-stone-900 font-sans">{children}</body>
62
- </html>
63
- );
64
- }