@satori-sh/cli 0.0.2 → 0.0.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.
package/bun.lock CHANGED
@@ -11,27 +11,222 @@
11
11
  "devDependencies": {
12
12
  "@types/bun": "^1.3.3",
13
13
  "@types/node": "^24.10.1",
14
+ "tsup": "^8.5.1",
14
15
  "typescript": "^5.9.3",
15
16
  },
16
17
  },
17
18
  },
18
19
  "packages": {
20
+ "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw=="],
21
+
22
+ "@esbuild/android-arm": ["@esbuild/android-arm@0.27.2", "", { "os": "android", "cpu": "arm" }, "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA=="],
23
+
24
+ "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.2", "", { "os": "android", "cpu": "arm64" }, "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA=="],
25
+
26
+ "@esbuild/android-x64": ["@esbuild/android-x64@0.27.2", "", { "os": "android", "cpu": "x64" }, "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A=="],
27
+
28
+ "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg=="],
29
+
30
+ "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA=="],
31
+
32
+ "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g=="],
33
+
34
+ "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA=="],
35
+
36
+ "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.2", "", { "os": "linux", "cpu": "arm" }, "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw=="],
37
+
38
+ "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw=="],
39
+
40
+ "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w=="],
41
+
42
+ "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg=="],
43
+
44
+ "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw=="],
45
+
46
+ "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ=="],
47
+
48
+ "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA=="],
49
+
50
+ "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w=="],
51
+
52
+ "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.2", "", { "os": "linux", "cpu": "x64" }, "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA=="],
53
+
54
+ "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.2", "", { "os": "none", "cpu": "arm64" }, "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw=="],
55
+
56
+ "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.2", "", { "os": "none", "cpu": "x64" }, "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA=="],
57
+
58
+ "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA=="],
59
+
60
+ "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg=="],
61
+
62
+ "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.2", "", { "os": "none", "cpu": "arm64" }, "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag=="],
63
+
64
+ "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg=="],
65
+
66
+ "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg=="],
67
+
68
+ "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ=="],
69
+
70
+ "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.2", "", { "os": "win32", "cpu": "x64" }, "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ=="],
71
+
72
+ "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="],
73
+
74
+ "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="],
75
+
76
+ "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
77
+
78
+ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
79
+
80
+ "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.55.1", "", { "os": "android", "cpu": "arm" }, "sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg=="],
81
+
82
+ "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.55.1", "", { "os": "android", "cpu": "arm64" }, "sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg=="],
83
+
84
+ "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.55.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg=="],
85
+
86
+ "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.55.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ=="],
87
+
88
+ "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.55.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg=="],
89
+
90
+ "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.55.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw=="],
91
+
92
+ "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.55.1", "", { "os": "linux", "cpu": "arm" }, "sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ=="],
93
+
94
+ "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.55.1", "", { "os": "linux", "cpu": "arm" }, "sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg=="],
95
+
96
+ "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.55.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ=="],
97
+
98
+ "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.55.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA=="],
99
+
100
+ "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.55.1", "", { "os": "linux", "cpu": "none" }, "sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g=="],
101
+
102
+ "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.55.1", "", { "os": "linux", "cpu": "none" }, "sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw=="],
103
+
104
+ "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.55.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw=="],
105
+
106
+ "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.55.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw=="],
107
+
108
+ "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.55.1", "", { "os": "linux", "cpu": "none" }, "sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw=="],
109
+
110
+ "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.55.1", "", { "os": "linux", "cpu": "none" }, "sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg=="],
111
+
112
+ "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.55.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg=="],
113
+
114
+ "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.55.1", "", { "os": "linux", "cpu": "x64" }, "sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg=="],
115
+
116
+ "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.55.1", "", { "os": "linux", "cpu": "x64" }, "sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w=="],
117
+
118
+ "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.55.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg=="],
119
+
120
+ "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.55.1", "", { "os": "none", "cpu": "arm64" }, "sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw=="],
121
+
122
+ "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.55.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g=="],
123
+
124
+ "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.55.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA=="],
125
+
126
+ "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.55.1", "", { "os": "win32", "cpu": "x64" }, "sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg=="],
127
+
128
+ "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.55.1", "", { "os": "win32", "cpu": "x64" }, "sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw=="],
129
+
19
130
  "@types/bun": ["@types/bun@1.3.5", "", { "dependencies": { "bun-types": "1.3.5" } }, "sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w=="],
20
131
 
132
+ "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
133
+
21
134
  "@types/node": ["@types/node@24.10.4", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg=="],
22
135
 
136
+ "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
137
+
138
+ "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="],
139
+
23
140
  "bun-types": ["bun-types@1.3.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw=="],
24
141
 
142
+ "bundle-require": ["bundle-require@5.1.0", "", { "dependencies": { "load-tsconfig": "^0.2.3" }, "peerDependencies": { "esbuild": ">=0.18" } }, "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA=="],
143
+
144
+ "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="],
145
+
25
146
  "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
26
147
 
148
+ "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="],
149
+
27
150
  "commander": ["commander@12.1.0", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="],
28
151
 
152
+ "confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="],
153
+
154
+ "consola": ["consola@3.4.2", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="],
155
+
156
+ "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
157
+
158
+ "esbuild": ["esbuild@0.27.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.2", "@esbuild/android-arm": "0.27.2", "@esbuild/android-arm64": "0.27.2", "@esbuild/android-x64": "0.27.2", "@esbuild/darwin-arm64": "0.27.2", "@esbuild/darwin-x64": "0.27.2", "@esbuild/freebsd-arm64": "0.27.2", "@esbuild/freebsd-x64": "0.27.2", "@esbuild/linux-arm": "0.27.2", "@esbuild/linux-arm64": "0.27.2", "@esbuild/linux-ia32": "0.27.2", "@esbuild/linux-loong64": "0.27.2", "@esbuild/linux-mips64el": "0.27.2", "@esbuild/linux-ppc64": "0.27.2", "@esbuild/linux-riscv64": "0.27.2", "@esbuild/linux-s390x": "0.27.2", "@esbuild/linux-x64": "0.27.2", "@esbuild/netbsd-arm64": "0.27.2", "@esbuild/netbsd-x64": "0.27.2", "@esbuild/openbsd-arm64": "0.27.2", "@esbuild/openbsd-x64": "0.27.2", "@esbuild/openharmony-arm64": "0.27.2", "@esbuild/sunos-x64": "0.27.2", "@esbuild/win32-arm64": "0.27.2", "@esbuild/win32-ia32": "0.27.2", "@esbuild/win32-x64": "0.27.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw=="],
159
+
160
+ "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
161
+
162
+ "fix-dts-default-cjs-exports": ["fix-dts-default-cjs-exports@1.0.1", "", { "dependencies": { "magic-string": "^0.30.17", "mlly": "^1.7.4", "rollup": "^4.34.8" } }, "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg=="],
163
+
164
+ "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
165
+
166
+ "joycon": ["joycon@3.1.1", "", {}, "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw=="],
167
+
168
+ "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="],
169
+
170
+ "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="],
171
+
172
+ "load-tsconfig": ["load-tsconfig@0.2.5", "", {}, "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg=="],
173
+
174
+ "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
175
+
176
+ "mlly": ["mlly@1.8.0", "", { "dependencies": { "acorn": "^8.15.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.1" } }, "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g=="],
177
+
178
+ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
179
+
180
+ "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="],
181
+
182
+ "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],
183
+
184
+ "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
185
+
186
+ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
187
+
188
+ "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="],
189
+
190
+ "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="],
191
+
192
+ "pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="],
193
+
194
+ "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="],
195
+
29
196
  "random-words": ["random-words@2.0.1", "", { "dependencies": { "seedrandom": "^3.0.5" } }, "sha512-nZNJAmgcFmtJMTDDIUCm/iK4R6RydC6NvALvWhYItXQrgYGk1F7Gww416LpVROFQtfVd5TaLEf4WuSsko03N7w=="],
30
197
 
198
+ "readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="],
199
+
200
+ "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="],
201
+
202
+ "rollup": ["rollup@4.55.1", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.55.1", "@rollup/rollup-android-arm64": "4.55.1", "@rollup/rollup-darwin-arm64": "4.55.1", "@rollup/rollup-darwin-x64": "4.55.1", "@rollup/rollup-freebsd-arm64": "4.55.1", "@rollup/rollup-freebsd-x64": "4.55.1", "@rollup/rollup-linux-arm-gnueabihf": "4.55.1", "@rollup/rollup-linux-arm-musleabihf": "4.55.1", "@rollup/rollup-linux-arm64-gnu": "4.55.1", "@rollup/rollup-linux-arm64-musl": "4.55.1", "@rollup/rollup-linux-loong64-gnu": "4.55.1", "@rollup/rollup-linux-loong64-musl": "4.55.1", "@rollup/rollup-linux-ppc64-gnu": "4.55.1", "@rollup/rollup-linux-ppc64-musl": "4.55.1", "@rollup/rollup-linux-riscv64-gnu": "4.55.1", "@rollup/rollup-linux-riscv64-musl": "4.55.1", "@rollup/rollup-linux-s390x-gnu": "4.55.1", "@rollup/rollup-linux-x64-gnu": "4.55.1", "@rollup/rollup-linux-x64-musl": "4.55.1", "@rollup/rollup-openbsd-x64": "4.55.1", "@rollup/rollup-openharmony-arm64": "4.55.1", "@rollup/rollup-win32-arm64-msvc": "4.55.1", "@rollup/rollup-win32-ia32-msvc": "4.55.1", "@rollup/rollup-win32-x64-gnu": "4.55.1", "@rollup/rollup-win32-x64-msvc": "4.55.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A=="],
203
+
31
204
  "seedrandom": ["seedrandom@3.0.5", "", {}, "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg=="],
32
205
 
206
+ "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="],
207
+
208
+ "sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="],
209
+
210
+ "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="],
211
+
212
+ "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="],
213
+
214
+ "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="],
215
+
216
+ "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="],
217
+
218
+ "tree-kill": ["tree-kill@1.2.2", "", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="],
219
+
220
+ "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="],
221
+
222
+ "tsup": ["tsup@8.5.1", "", { "dependencies": { "bundle-require": "^5.1.0", "cac": "^6.7.14", "chokidar": "^4.0.3", "consola": "^3.4.0", "debug": "^4.4.0", "esbuild": "^0.27.0", "fix-dts-default-cjs-exports": "^1.0.0", "joycon": "^3.1.1", "picocolors": "^1.1.1", "postcss-load-config": "^6.0.1", "resolve-from": "^5.0.0", "rollup": "^4.34.8", "source-map": "^0.7.6", "sucrase": "^3.35.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.11", "tree-kill": "^1.2.2" }, "peerDependencies": { "@microsoft/api-extractor": "^7.36.0", "@swc/core": "^1", "postcss": "^8.4.12", "typescript": ">=4.5.0" }, "optionalPeers": ["@microsoft/api-extractor", "@swc/core", "postcss", "typescript"], "bin": { "tsup": "dist/cli-default.js", "tsup-node": "dist/cli-node.js" } }, "sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing=="],
223
+
33
224
  "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
34
225
 
226
+ "ufo": ["ufo@1.6.3", "", {}, "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q=="],
227
+
35
228
  "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
229
+
230
+ "sucrase/commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="],
36
231
  }
37
232
  }
package/dist/index.d.ts CHANGED
@@ -1,4 +1,92 @@
1
- export { searchMemories } from './search.js';
2
- export { addMemories } from './add.js';
3
- export declare function main(): Promise<void>;
4
- //# sourceMappingURL=index.d.ts.map
1
+ #! /usr/bin/env node
2
+ /**
3
+ * Searches for memories matching the given query.
4
+ *
5
+ * @param {string} query - The search query for memories
6
+ * @returns {Promise<void>} Logs the search results to console
7
+ * @throws {Error} If the query is empty or API call fails
8
+ *
9
+ * @example
10
+ * ```bash
11
+ * satori "what is my favorite food?"
12
+ * ```
13
+ */
14
+ declare function searchMemories(query: string): Promise<void>;
15
+
16
+ /**
17
+ * Adds a new memory to the Satori server.
18
+ *
19
+ * @param {string} text - The text content to add as a memory
20
+ * @param {object} [options] - Additional options for the memory
21
+ * @param {string} [options.memoryId] - Optional memory ID for scoping
22
+ * @returns {Promise<void>} Logs success or error messages to console
23
+ * @throws {Error} If the text is empty
24
+ *
25
+ * @example
26
+ * ```bash
27
+ * satori add "I like pizza"
28
+ * ```
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * await addMemories("User prefers dark mode", { memoryId: "session-123" });
33
+ * ```
34
+ */
35
+ declare function addMemories(text: string, options?: {
36
+ memoryId?: string;
37
+ }): Promise<void>;
38
+
39
+ /**
40
+ * Response from the memory search API.
41
+ */
42
+ interface SearchResponse {
43
+ /** Array of search results */
44
+ results: Array<{
45
+ id: string;
46
+ memory: string;
47
+ score?: number;
48
+ }>;
49
+ }
50
+ /**
51
+ * Message format for LLM API calls.
52
+ */
53
+ type Message = {
54
+ /** Role of the message sender */
55
+ role: 'user' | 'assistant' | 'system';
56
+ /** Content of the message */
57
+ content: string;
58
+ };
59
+
60
+ /**
61
+ * Enhances a message array by prepending relevant memory context as a system message.
62
+ *
63
+ * @param {Message[]} messages - The original message array
64
+ * @param {object} memoryContext - The memory context object
65
+ * @param {SearchResponse['results']} memoryContext.results - Array of memory results
66
+ * @returns {Message[]} The enhanced message array with memory context prepended
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * const messages = [{ role: 'user', content: 'Hello' }];
71
+ * const context = { results: [{ id: '1', memory: 'User likes pizza' }] };
72
+ * const enhanced = enhanceMessagesWithMemory(messages, context);
73
+ * // enhanced[0] is system message with memory context
74
+ * // enhanced[1] is the original user message
75
+ * ```
76
+ */
77
+ declare function enhanceMessagesWithMemory(messages: Message[], memoryContext: {
78
+ results: SearchResponse['results'];
79
+ }): Message[];
80
+
81
+ /**
82
+ * Main entry point for the Satori CLI application.
83
+ *
84
+ * Parses command-line arguments and executes the appropriate command.
85
+ * Sets up the CLI with available commands: search, add, and chat.
86
+ *
87
+ * @returns {Promise<void>}
88
+ * @throws {Error} If configuration validation fails
89
+ */
90
+ declare function main(): Promise<void>;
91
+
92
+ export { addMemories, enhanceMessagesWithMemory, main, searchMemories };
package/dist/index.js CHANGED
@@ -1,49 +1,403 @@
1
- import { Command } from 'commander';
2
- import { getConfig } from './config.js';
3
- import { searchMemories } from './search.js';
4
- import { addMemories } from './add.js';
5
- // Re-export for external use
6
- export { searchMemories } from './search.js';
7
- export { addMemories } from './add.js';
8
- export async function main() {
1
+ #! /usr/bin/env node
2
+ #!/usr/bin/env node
3
+
4
+ // src/index.ts
5
+ import { Command } from "commander";
6
+ import { readFileSync } from "fs";
7
+ import chalk from "chalk";
8
+
9
+ // src/config.ts
10
+ import { homedir } from "os";
11
+ import { join } from "path";
12
+ import { randomUUID } from "crypto";
13
+ async function checkWriteAccess() {
14
+ const { promises: fs } = await import("fs");
15
+ const dir = join(homedir(), ".config", "satori");
16
+ try {
17
+ await fs.mkdir(dir, { recursive: true });
18
+ const tempFile = join(dir, `temp-${randomUUID()}.txt`);
19
+ await fs.writeFile(tempFile, "test");
20
+ await fs.unlink(tempFile);
21
+ } catch (error) {
22
+ throw new Error(`Cannot write to config directory: ${error instanceof Error ? error.message : error}`);
23
+ }
24
+ }
25
+ async function saveApiKey(apiKey) {
26
+ const { promises: fs } = await import("fs");
27
+ await checkWriteAccess();
28
+ const configPath = join(homedir(), ".config", "satori", "satori.json");
29
+ try {
30
+ const existing = await loadConfigFile();
31
+ const config = { ...existing, api_key: apiKey };
32
+ await fs.writeFile(configPath, JSON.stringify(config, null, 2));
33
+ } catch (error) {
34
+ throw new Error(`Failed to save API key: ${error instanceof Error ? error.message : error}`);
35
+ }
36
+ }
37
+ async function saveMemoryId(memoryId) {
38
+ const { promises: fs } = await import("fs");
39
+ await checkWriteAccess();
40
+ const configPath = join(homedir(), ".config", "satori", "satori.json");
41
+ try {
42
+ const existing = await loadConfigFile();
43
+ const config = { ...existing, memory_id: memoryId };
44
+ await fs.writeFile(configPath, JSON.stringify(config, null, 2));
45
+ } catch (error) {
46
+ throw new Error(`Failed to save memory ID: ${error instanceof Error ? error.message : error}`);
47
+ }
48
+ }
49
+ async function loadConfigFile() {
50
+ try {
51
+ const configPath = join(homedir(), ".config", "satori", "satori.json");
52
+ const configFile = Bun.file(configPath);
53
+ if (await configFile.exists()) {
54
+ return await configFile.json();
55
+ }
56
+ } catch {
57
+ }
58
+ return {};
59
+ }
60
+ async function getConfig() {
61
+ if (process.platform !== "darwin") {
62
+ throw new Error("We do not currently support Windows yet, email support@satori.sh to request Windows support");
63
+ }
64
+ let apiKey = null;
65
+ let memoryId = void 0;
66
+ try {
67
+ const configPath = join(homedir(), ".config", "satori", "satori.json");
68
+ const configFile = Bun.file(configPath);
69
+ if (await configFile.exists()) {
70
+ const data = await configFile.json();
71
+ if (data && typeof data.api_key === "string") {
72
+ apiKey = data.api_key;
73
+ }
74
+ if (data && typeof data.memory_id === "string") {
75
+ memoryId = data.memory_id;
76
+ }
77
+ }
78
+ } catch {
79
+ }
80
+ if (!apiKey) {
81
+ apiKey = process.env.SATORI_API_KEY || null;
82
+ }
83
+ const baseUrl = process.env.SATORI_BASE_URL || "https://api.satori.sh";
84
+ try {
85
+ new URL(baseUrl);
86
+ } catch {
87
+ throw new Error("Invalid SATORI_BASE_URL format");
88
+ }
89
+ if (!apiKey) {
9
90
  try {
10
- getConfig(); // Validate early
11
- }
12
- catch (error) {
13
- console.error(error instanceof Error ? error.message : 'Configuration error');
14
- process.exit(1);
15
- }
16
- const program = new Command();
17
- program
18
- .name('satori')
19
- .description('CLI tool for Satori memory server')
20
- .version('0.0.1');
21
- program
22
- .argument('<query>', 'search query for memories')
23
- .action(async (query) => {
24
- await searchMemories(query);
91
+ const response = await fetch(`${baseUrl}/orgs`, {
92
+ method: "POST"
93
+ });
94
+ if (!response.ok) {
95
+ throw new Error(`HTTP error: ${response.status} ${response.statusText}`);
96
+ }
97
+ const data = await response.json();
98
+ if (data && typeof data.api_key === "string") {
99
+ apiKey = data.api_key;
100
+ await saveApiKey(apiKey);
101
+ } else {
102
+ throw new Error("Invalid response: missing api_key");
103
+ }
104
+ } catch (error) {
105
+ throw new Error(`Failed to generate API key: ${error instanceof Error ? error.message : error}`);
106
+ }
107
+ }
108
+ const provider = process.env.SATORI_PROVIDER || "openai";
109
+ const model = process.env.SATORI_MODEL || "gpt-4o";
110
+ const openaiKey = process.env.OPENAI_API_KEY;
111
+ const anthropicKey = process.env.ANTHROPIC_API_KEY;
112
+ if (!memoryId) {
113
+ memoryId = process.env.SATORI_MEMORY_ID;
114
+ }
115
+ return { apiKey, baseUrl, provider, model, openaiKey, anthropicKey, memoryId };
116
+ }
117
+
118
+ // src/search.ts
119
+ async function searchMemories(query) {
120
+ if (!query || !query.trim()) {
121
+ console.error("Query cannot be empty");
122
+ return;
123
+ }
124
+ try {
125
+ const config = await getConfig();
126
+ const response = await fetch(`${config.baseUrl}/search`, {
127
+ method: "POST",
128
+ headers: {
129
+ "Content-Type": "application/json",
130
+ "Authorization": `Bearer ${config.apiKey}`
131
+ },
132
+ body: JSON.stringify({ query })
133
+ });
134
+ if (!response.ok) {
135
+ console.error(`HTTP error: ${response.status} ${response.statusText}`);
136
+ return;
137
+ }
138
+ await response.json();
139
+ } catch (error) {
140
+ console.error(`Error searching memories: ${error instanceof Error ? error.message : error}`);
141
+ }
142
+ }
143
+
144
+ // src/add.ts
145
+ async function addMemories(text, options = {}) {
146
+ if (!text || !text.trim()) {
147
+ console.error("Text cannot be empty");
148
+ return;
149
+ }
150
+ try {
151
+ const config = await getConfig();
152
+ const response = await fetch(`${config.baseUrl}/memories`, {
153
+ method: "POST",
154
+ headers: {
155
+ "Content-Type": "application/json",
156
+ "Authorization": `Bearer ${config.apiKey}`
157
+ },
158
+ body: JSON.stringify({ messages: [{ role: "user", content: text }], ...options.memoryId && { memory_id: options.memoryId } })
25
159
  });
26
- program
27
- .command('add')
28
- .description('add a new memory')
29
- .argument('<text>', 'text to add as memory')
30
- .action(async (text) => {
31
- await addMemories(text);
160
+ if (!response.ok) {
161
+ console.error(`HTTP error: ${response.status} ${response.statusText}`);
162
+ return;
163
+ }
164
+ await response.json();
165
+ } catch (error) {
166
+ console.error(`Error adding memory: ${error instanceof Error ? error.message : error}`);
167
+ }
168
+ }
169
+
170
+ // src/memory.ts
171
+ import { generate } from "random-words";
172
+ async function buildMemoryContext(prompt, options = {}) {
173
+ const config = await getConfig();
174
+ let memoryId;
175
+ let generated = false;
176
+ if (options.memoryId) {
177
+ memoryId = options.memoryId;
178
+ } else if (process.env.SATORI_MEMORY_ID) {
179
+ memoryId = process.env.SATORI_MEMORY_ID;
180
+ } else if (config.memoryId) {
181
+ memoryId = config.memoryId;
182
+ } else {
183
+ const words = generate({ exactly: 3 });
184
+ memoryId = words.join("-");
185
+ generated = true;
186
+ }
187
+ const topK = options.topK || 5;
188
+ const url = `${config.baseUrl}/search`;
189
+ const headers = {
190
+ "Content-Type": "application/json",
191
+ "Authorization": `Bearer ${config.apiKey}`
192
+ };
193
+ const body = JSON.stringify({
194
+ query: prompt,
195
+ memory_id: memoryId,
196
+ top_k: topK
197
+ });
198
+ const response = await fetch(url, {
199
+ method: "POST",
200
+ headers,
201
+ body
202
+ });
203
+ if (!response.ok) {
204
+ throw new Error(`HTTP error: ${response.status} ${response.statusText}`);
205
+ }
206
+ const data = await response.json();
207
+ const instruction = generated ? `Memory session id: ${memoryId}.` : void 0;
208
+ if (generated) {
209
+ saveMemoryId(memoryId).catch((err) => {
210
+ console.error("Failed to save memory ID:", err);
32
211
  });
33
- program
34
- .command('chat')
35
- .description('Start a chat session')
36
- .option('--provider <provider>', 'Provider to use (openai or anthropic)', 'openai')
37
- .option('--model <model>', 'Model to use', 'gpt-4o')
38
- .option('--memory-id <id>', 'Memory ID for scoping')
39
- .option('--no-stream', 'Disable streaming')
40
- .action(async (options) => {
41
- // TODO: Implement chat logic
42
- console.log('Chat command invoked with options:', options);
212
+ }
213
+ return {
214
+ results: data.results,
215
+ memoryId,
216
+ instruction
217
+ };
218
+ }
219
+ function enhanceMessagesWithMemory(messages, memoryContext) {
220
+ const validResults = memoryContext.results.filter((r) => r.memory && r.memory.trim() !== "" && r.memory !== "undefined");
221
+ if (validResults.length === 0) {
222
+ return messages;
223
+ }
224
+ const memoryText = validResults.map((r) => r.memory).join("\n");
225
+ const systemMessage = {
226
+ role: "system",
227
+ content: `Relevant context from memory:
228
+ ${memoryText}`
229
+ };
230
+ return [systemMessage, ...messages];
231
+ }
232
+
233
+ // src/providers.ts
234
+ async function _callOpenAI(messages, options) {
235
+ const config = await getConfig();
236
+ const apiKey = config.openaiKey;
237
+ if (!apiKey) {
238
+ throw new Error("Missing API key for OPENAI_API_KEY");
239
+ }
240
+ const url = "https://api.openai.com/v1/chat/completions";
241
+ const body = {
242
+ model: config.model,
243
+ messages,
244
+ temperature: options.temperature ?? 0.7,
245
+ max_tokens: options.maxTokens ?? 1e3,
246
+ stream: options.stream ?? false
247
+ };
248
+ const headers = {
249
+ "Content-Type": "application/json",
250
+ "Authorization": `Bearer ${apiKey}`
251
+ };
252
+ const response = await fetch(url, {
253
+ method: "POST",
254
+ headers,
255
+ body: JSON.stringify(body)
256
+ });
257
+ if (!response.ok) {
258
+ throw new Error(`OpenAI API error: ${response.status} ${response.statusText}`);
259
+ }
260
+ const data = await response.json();
261
+ return data.choices[0].message.content;
262
+ }
263
+ async function _callAnthropic(messages, options) {
264
+ const config = await getConfig();
265
+ const apiKey = config.anthropicKey;
266
+ if (!apiKey) {
267
+ throw new Error("Missing API key for ANTHROPIC_API_KEY");
268
+ }
269
+ const url = "https://api.anthropic.com/v1/messages";
270
+ const body = {
271
+ model: config.model,
272
+ messages,
273
+ temperature: options.temperature ?? 0.7,
274
+ max_tokens: options.maxTokens ?? 1e3,
275
+ stream: options.stream ?? false
276
+ };
277
+ const headers = {
278
+ "Content-Type": "application/json",
279
+ "Authorization": `Bearer ${apiKey}`,
280
+ "anthropic-version": "2023-06-01"
281
+ };
282
+ const response = await fetch(url, {
283
+ method: "POST",
284
+ headers,
285
+ body: JSON.stringify(body)
286
+ });
287
+ if (!response.ok) {
288
+ throw new Error(`Anthropic API error: ${response.status} ${response.statusText}`);
289
+ }
290
+ const data = await response.json();
291
+ return data.content[0].text;
292
+ }
293
+ async function _callProviderAPI(messages, options, provider) {
294
+ if (provider === "openai") {
295
+ return _callOpenAI(messages, options);
296
+ } else if (provider === "anthropic") {
297
+ return _callAnthropic(messages, options);
298
+ } else {
299
+ throw new Error(`Unsupported provider: ${provider}`);
300
+ }
301
+ }
302
+
303
+ // src/index.ts
304
+ async function main() {
305
+ try {
306
+ await getConfig();
307
+ } catch (error) {
308
+ console.error(error instanceof Error ? error.message : "Configuration error");
309
+ process.exit(1);
310
+ }
311
+ console.log(chalk.cyan(readFileSync("./logo.txt", "utf8")));
312
+ const program = new Command();
313
+ program.name("satori").description("CLI tool for Satori memory server").version("0.0.1");
314
+ program.option("--provider <provider>", "Provider to use (openai or anthropic)", "openai").option("--model <model>", "Model to use", "gpt-4o").option("--memory-id <id>", "Memory ID for scoping");
315
+ const processUserInput = async (input, options, isInteractive = false) => {
316
+ let memoryContext;
317
+ try {
318
+ memoryContext = await buildMemoryContext(input, { memoryId: options.memoryId });
319
+ } catch (memoryError) {
320
+ memoryContext = { results: [], memoryId: options.memoryId, instruction: void 0 };
321
+ }
322
+ const userMessage = { role: "user", content: input };
323
+ const enhancedMessages = enhanceMessagesWithMemory([userMessage], { results: memoryContext.results });
324
+ const response = await _callProviderAPI(enhancedMessages, {
325
+ temperature: 0.7,
326
+ maxTokens: 1e3
327
+ }, options.provider);
328
+ if (isInteractive) {
329
+ console.log(`Assistant: ${response}`);
330
+ } else {
331
+ console.log(response);
332
+ }
333
+ if (memoryContext.instruction) {
334
+ console.log(`
335
+ ${memoryContext.instruction}`);
336
+ }
337
+ addMemories(input, { memoryId: memoryContext.memoryId }).catch((err) => {
338
+ console.error("Failed to save memory:", err);
43
339
  });
44
- program.parse();
340
+ return { response, instruction: memoryContext.instruction, memoryId: memoryContext.memoryId };
341
+ };
342
+ program.argument("[prompt]", "initial prompt for chat session (optional)").action(async (initialPrompt, options) => {
343
+ try {
344
+ let memoryId = options.memoryId;
345
+ if (!process.stdin.isTTY) {
346
+ if (initialPrompt) {
347
+ await processUserInput(initialPrompt, options, false);
348
+ }
349
+ return;
350
+ }
351
+ if (initialPrompt) {
352
+ const result = await processUserInput(initialPrompt, options, true);
353
+ memoryId = result.memoryId;
354
+ }
355
+ const { createInterface } = await import("readline");
356
+ const rl = createInterface({
357
+ input: process.stdin,
358
+ output: process.stdout
359
+ });
360
+ const chatLoop = async () => {
361
+ rl.question(chalk.cyan("> "), async (input) => {
362
+ if (input.toLowerCase() === "exit" || input.toLowerCase() === "quit") {
363
+ console.log("Goodbye!");
364
+ rl.close();
365
+ return;
366
+ }
367
+ if (!input.trim()) {
368
+ chatLoop();
369
+ return;
370
+ }
371
+ try {
372
+ const result = await processUserInput(input, { ...options, memoryId }, true);
373
+ memoryId = result.memoryId;
374
+ } catch (error) {
375
+ console.error("Chat error:", error instanceof Error ? error.message : error);
376
+ }
377
+ chatLoop();
378
+ });
379
+ };
380
+ console.log('\nEntering interactive mode. Type "exit" or "quit" to end the session.\n');
381
+ chatLoop();
382
+ } catch (error) {
383
+ console.error("Chat error:", error instanceof Error ? error.message : error);
384
+ process.exit(1);
385
+ }
386
+ });
387
+ program.command("add").description("add a new memory").argument("<text>", "text to add as memory").action(async (text) => {
388
+ await addMemories(text);
389
+ });
390
+ program.command("search").description("search memories").argument("<query>", "search query for memories").action(async (query) => {
391
+ await searchMemories(query);
392
+ });
393
+ program.parse();
45
394
  }
46
395
  if (import.meta.main) {
47
- main();
396
+ main();
48
397
  }
49
- //# sourceMappingURL=index.js.map
398
+ export {
399
+ addMemories,
400
+ enhanceMessagesWithMemory,
401
+ main,
402
+ searchMemories
403
+ };
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env node
1
2
  export { searchMemories } from './search.js';
2
3
  export { addMemories } from './add.js';
3
4
  export { enhanceMessagesWithMemory } from './memory.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAGxD;;;;;;;;GAQG;AACH,wBAAsB,IAAI,kBAsIzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAYA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAGxD;;;;;;;;GAQG;AACH,wBAAsB,IAAI,kBAsIzB"}
package/dist/src/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env node
1
2
  import { Command } from 'commander';
2
3
  import { readFileSync } from 'node:fs';
3
4
  import chalk from 'chalk';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@satori-sh/cli",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "CLI tool for Satori memory server",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -8,7 +8,7 @@
8
8
  "satori": "./dist/index.js"
9
9
  },
10
10
  "scripts": {
11
- "build": "tsc",
11
+ "build": "tsup src/index.ts --format esm --dts",
12
12
  "test": "bun test",
13
13
  "lint": "tsc --noEmit"
14
14
  },
@@ -20,6 +20,7 @@
20
20
  "devDependencies": {
21
21
  "@types/bun": "^1.3.3",
22
22
  "@types/node": "^24.10.1",
23
+ "tsup": "^8.5.1",
23
24
  "typescript": "^5.9.3"
24
25
  }
25
- }
26
+ }
package/src/index.ts CHANGED
@@ -1,3 +1,5 @@
1
+ #! /usr/bin/env node
2
+
1
3
  import { Command } from 'commander';
2
4
  import { readFileSync } from 'node:fs';
3
5
  import chalk from 'chalk';
package/tsup.config.js ADDED
@@ -0,0 +1,10 @@
1
+ // tsup.config.ts
2
+ import { defineConfig } from 'tsup'
3
+
4
+ export default defineConfig({
5
+ entry: ['src/index.ts'],
6
+ format: ['esm'],
7
+ banner: {
8
+ js: '#!/usr/bin/env node'
9
+ }
10
+ })