@hasna/mementos 0.14.0 → 0.14.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dashboard/dist/assets/index-DqyMbv89.js +270 -0
- package/dashboard/dist/assets/index-UBCddFo_.css +1 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/cli/brains.d.ts.map +1 -1
- package/dist/cli/index.js +63 -31
- package/dist/db/database.d.ts.map +1 -1
- package/dist/index.js +26 -11
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/model-config.d.ts +1 -1
- package/dist/mcp/index.js +35 -14
- package/dist/server/index.js +45 -30
- package/package.json +2 -1
- package/dashboard/dist/assets/index-B1yiOEw3.js +0 -290
- package/dashboard/dist/assets/index-DnpbasSl.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-teal-400:oklch(77.7% .152 181.912);--color-teal-500:oklch(70.4% .14 182.503);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}}@layer components;@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.relative{position:relative}.end{inset-inline-end:var(--spacing)}.top-2\.5{top:calc(var(--spacing) * 2.5)}.right-2{right:calc(var(--spacing) * 2)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.z-10{z-index:10}.z-50{z-index:50}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.-ml-3{margin-left:calc(var(--spacing) * -3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.table{display:table}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.h-2{height:calc(var(--spacing) * 2)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-24{height:calc(var(--spacing) * 24)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.max-h-96{max-height:calc(var(--spacing) * 96)}.min-h-screen{min-height:100vh}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-7{width:calc(var(--spacing) * 7)}.w-9{width:calc(var(--spacing) * 9)}.w-\[130px\]{width:130px}.w-\[140px\]{width:140px}.w-\[150px\]{width:150px}.w-full{width:100%}.w-max{width:max-content}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[120px\]{max-width:120px}.max-w-\[200px\]{max-width:200px}.max-w-\[250px\]{max-width:250px}.max-w-\[300px\]{max-width:300px}.max-w-max{max-width:max-content}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[200px\]{min-width:200px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.translate-y-1{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-0{rotate:none}.rotate-90{rotate:90deg}.animate-in{animation:.2s ease-out enter}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-blue-500\/30{border-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/30{border-color:color-mix(in oklab,var(--color-blue-500) 30%,transparent)}}.border-border{border-color:var(--border)}.border-gray-500\/30{border-color:#6a72824d}@supports (color:color-mix(in lab,red,red)){.border-gray-500\/30{border-color:color-mix(in oklab,var(--color-gray-500) 30%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500) 30%,transparent)}}.border-input{border-color:var(--input)}.border-purple-500\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/30{border-color:color-mix(in oklab,var(--color-purple-500) 30%,transparent)}}.border-teal-500\/30{border-color:#00baa74d}@supports (color:color-mix(in lab,red,red)){.border-teal-500\/30{border-color:color-mix(in oklab,var(--color-teal-500) 30%,transparent)}}.border-transparent{border-color:#0000}.border-yellow-500\/30{border-color:#edb2004d}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/30{border-color:color-mix(in oklab,var(--color-yellow-500) 30%,transparent)}}.border-l-amber-500{border-left-color:var(--color-amber-500)}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/5{background-color:color-mix(in oklab,var(--color-amber-500) 5%,transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-amber-500\/15{background-color:#f99c0026}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/15{background-color:color-mix(in oklab,var(--color-amber-500) 15%,transparent)}}.bg-amber-600{background-color:var(--color-amber-600)}.bg-background{background-color:var(--background)}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-blue-500\/15{background-color:#3080ff26}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/15{background-color:color-mix(in oklab,var(--color-blue-500) 15%,transparent)}}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-gray-500\/10{background-color:#6a72821a}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/10{background-color:color-mix(in oklab,var(--color-gray-500) 10%,transparent)}}.bg-gray-500\/15{background-color:#6a728226}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/15{background-color:color-mix(in oklab,var(--color-gray-500) 15%,transparent)}}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-green-500\/15{background-color:#00c75826}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/15{background-color:color-mix(in oklab,var(--color-green-500) 15%,transparent)}}.bg-muted,.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted) 30%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/10{background-color:color-mix(in oklab,var(--color-purple-500) 10%,transparent)}}.bg-purple-500\/15{background-color:#ac4bff26}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/15{background-color:color-mix(in oklab,var(--color-purple-500) 15%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-teal-500\/10{background-color:#00baa71a}@supports (color:color-mix(in lab,red,red)){.bg-teal-500\/10{background-color:color-mix(in oklab,var(--color-teal-500) 10%,transparent)}}.bg-teal-500\/15{background-color:#00baa726}@supports (color:color-mix(in lab,red,red)){.bg-teal-500\/15{background-color:color-mix(in oklab,var(--color-teal-500) 15%,transparent)}}.bg-transparent{background-color:#0000}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/10{background-color:color-mix(in oklab,var(--color-yellow-500) 10%,transparent)}}.bg-yellow-500\/15{background-color:#edb20026}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/15{background-color:color-mix(in oklab,var(--color-yellow-500) 15%,transparent)}}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-card-foreground{color:var(--card-foreground)}.text-foreground{color:var(--foreground)}.text-gray-400{color:var(--color-gray-400)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-muted-foreground,.text-muted-foreground\/50{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/50{color:color-mix(in oklab,var(--muted-foreground) 50%,transparent)}}.text-orange-500{color:var(--color-orange-500)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-400{color:var(--color-purple-400)}.text-purple-500{color:var(--color-purple-500)}.text-red-500{color:var(--color-red-500)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-teal-400{color:var(--color-teal-400)}.text-teal-500{color:var(--color-teal-500)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}@media(hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-amber-700:hover{background-color:var(--color-amber-700)}.hover\:bg-background\/50:hover{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-background\/50:hover{background-color:color-mix(in oklab,var(--background) 50%,transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.data-\[active\]\:bg-accent\/50[data-active]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[active\]\:bg-accent\/50[data-active]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media(prefers-color-scheme:dark){.dark\:scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.dark\:scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.dark\:-rotate-90{rotate:-90deg}.dark\:rotate-0{rotate:none}.dark\:bg-input\/30{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}@keyframes enter{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes exit{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}:root{--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(96.5% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(96.5% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(96.5% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.1% 0 0);--input:oklch(92.1% 0 0);--ring:oklch(70.8% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(17.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(17.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(98.5% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(39.6% .141 25.723);--border:oklch(26.9% 0 0);--input:oklch(26.9% 0 0);--ring:oklch(43.9% 0 0)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>Mementos Dashboard</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-DqyMbv89.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-UBCddFo_.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="root"></div>
|
package/dist/cli/brains.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brains.d.ts","sourceRoot":"","sources":["../../src/cli/brains.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,wBAAgB,iBAAiB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"brains.d.ts","sourceRoot":"","sources":["../../src/cli/brains.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,wBAAgB,iBAAiB,IAAI,OAAO,CA4Q3C"}
|
package/dist/cli/index.js
CHANGED
|
@@ -6,39 +6,60 @@ var __defProp = Object.defineProperty;
|
|
|
6
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
8
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
function __accessProp(key) {
|
|
10
|
+
return this[key];
|
|
11
|
+
}
|
|
12
|
+
var __toESMCache_node;
|
|
13
|
+
var __toESMCache_esm;
|
|
9
14
|
var __toESM = (mod, isNodeMode, target) => {
|
|
15
|
+
var canCache = mod != null && typeof mod === "object";
|
|
16
|
+
if (canCache) {
|
|
17
|
+
var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
|
|
18
|
+
var cached = cache.get(mod);
|
|
19
|
+
if (cached)
|
|
20
|
+
return cached;
|
|
21
|
+
}
|
|
10
22
|
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
11
23
|
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
12
24
|
for (let key of __getOwnPropNames(mod))
|
|
13
25
|
if (!__hasOwnProp.call(to, key))
|
|
14
26
|
__defProp(to, key, {
|
|
15
|
-
get: (
|
|
27
|
+
get: __accessProp.bind(mod, key),
|
|
16
28
|
enumerable: true
|
|
17
29
|
});
|
|
30
|
+
if (canCache)
|
|
31
|
+
cache.set(mod, to);
|
|
18
32
|
return to;
|
|
19
33
|
};
|
|
20
|
-
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
21
34
|
var __toCommonJS = (from) => {
|
|
22
|
-
var entry = __moduleCache.get(from), desc;
|
|
35
|
+
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
23
36
|
if (entry)
|
|
24
37
|
return entry;
|
|
25
38
|
entry = __defProp({}, "__esModule", { value: true });
|
|
26
|
-
if (from && typeof from === "object" || typeof from === "function")
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
39
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
40
|
+
for (var key of __getOwnPropNames(from))
|
|
41
|
+
if (!__hasOwnProp.call(entry, key))
|
|
42
|
+
__defProp(entry, key, {
|
|
43
|
+
get: __accessProp.bind(from, key),
|
|
44
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
45
|
+
});
|
|
46
|
+
}
|
|
31
47
|
__moduleCache.set(from, entry);
|
|
32
48
|
return entry;
|
|
33
49
|
};
|
|
50
|
+
var __moduleCache;
|
|
34
51
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
52
|
+
var __returnValue = (v) => v;
|
|
53
|
+
function __exportSetter(name, newValue) {
|
|
54
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
55
|
+
}
|
|
35
56
|
var __export = (target, all) => {
|
|
36
57
|
for (var name in all)
|
|
37
58
|
__defProp(target, name, {
|
|
38
59
|
get: all[name],
|
|
39
60
|
enumerable: true,
|
|
40
61
|
configurable: true,
|
|
41
|
-
set: (
|
|
62
|
+
set: __exportSetter.bind(all, name)
|
|
42
63
|
});
|
|
43
64
|
};
|
|
44
65
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
@@ -2091,7 +2112,7 @@ __export(exports_database, {
|
|
|
2091
2112
|
closeDatabase: () => closeDatabase
|
|
2092
2113
|
});
|
|
2093
2114
|
import { Database } from "bun:sqlite";
|
|
2094
|
-
import { existsSync, mkdirSync } from "fs";
|
|
2115
|
+
import { existsSync, mkdirSync, cpSync } from "fs";
|
|
2095
2116
|
import { dirname, join, resolve } from "path";
|
|
2096
2117
|
function isInMemoryDb(path) {
|
|
2097
2118
|
return path === ":memory:" || path.startsWith("file::memory:");
|
|
@@ -2121,9 +2142,19 @@ function findGitRoot(startDir) {
|
|
|
2121
2142
|
}
|
|
2122
2143
|
return null;
|
|
2123
2144
|
}
|
|
2145
|
+
function migrateGlobalDir() {
|
|
2146
|
+
const home = process.env["HOME"] || process.env["USERPROFILE"] || "~";
|
|
2147
|
+
const newDir = join(home, ".hasna", "mementos");
|
|
2148
|
+
const oldDir = join(home, ".mementos");
|
|
2149
|
+
if (!existsSync(newDir) && existsSync(oldDir)) {
|
|
2150
|
+
mkdirSync(join(home, ".hasna"), { recursive: true });
|
|
2151
|
+
cpSync(oldDir, newDir, { recursive: true });
|
|
2152
|
+
}
|
|
2153
|
+
}
|
|
2124
2154
|
function getDbPath() {
|
|
2125
|
-
|
|
2126
|
-
|
|
2155
|
+
const envPath = process.env["HASNA_MEMENTOS_DB_PATH"] ?? process.env["MEMENTOS_DB_PATH"];
|
|
2156
|
+
if (envPath) {
|
|
2157
|
+
return envPath;
|
|
2127
2158
|
}
|
|
2128
2159
|
const cwd = process.cwd();
|
|
2129
2160
|
const nearest = findNearestMementosDb(cwd);
|
|
@@ -2135,8 +2166,9 @@ function getDbPath() {
|
|
|
2135
2166
|
return join(gitRoot, ".mementos", "mementos.db");
|
|
2136
2167
|
}
|
|
2137
2168
|
}
|
|
2169
|
+
migrateGlobalDir();
|
|
2138
2170
|
const home = process.env["HOME"] || process.env["USERPROFILE"] || "~";
|
|
2139
|
-
return join(home, ".mementos", "mementos.db");
|
|
2171
|
+
return join(home, ".hasna", "mementos", "mementos.db");
|
|
2140
2172
|
}
|
|
2141
2173
|
function ensureDir(filePath) {
|
|
2142
2174
|
if (isInMemoryDb(filePath))
|
|
@@ -8691,7 +8723,7 @@ function listProjects(db) {
|
|
|
8691
8723
|
init_search();
|
|
8692
8724
|
|
|
8693
8725
|
// src/lib/config.ts
|
|
8694
|
-
import { existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync, readdirSync, writeFileSync, unlinkSync } from "fs";
|
|
8726
|
+
import { existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync, readdirSync, writeFileSync, unlinkSync, cpSync as cpSync2 } from "fs";
|
|
8695
8727
|
import { homedir } from "os";
|
|
8696
8728
|
import { basename, dirname as dirname2, join as join2, resolve as resolve2 } from "path";
|
|
8697
8729
|
var DEFAULT_CONFIG = {
|
|
@@ -8750,7 +8782,7 @@ function isValidCategory(value) {
|
|
|
8750
8782
|
return VALID_CATEGORIES.includes(value);
|
|
8751
8783
|
}
|
|
8752
8784
|
function loadConfig() {
|
|
8753
|
-
const configPath = join2(homedir(), ".mementos", "config.json");
|
|
8785
|
+
const configPath = join2(homedir(), ".hasna", "mementos", "config.json");
|
|
8754
8786
|
let fileConfig = {};
|
|
8755
8787
|
if (existsSync2(configPath)) {
|
|
8756
8788
|
try {
|
|
@@ -8777,10 +8809,10 @@ function loadConfig() {
|
|
|
8777
8809
|
return merged;
|
|
8778
8810
|
}
|
|
8779
8811
|
function profilesDir() {
|
|
8780
|
-
return join2(homedir(), ".mementos", "profiles");
|
|
8812
|
+
return join2(homedir(), ".hasna", "mementos", "profiles");
|
|
8781
8813
|
}
|
|
8782
8814
|
function globalConfigPath() {
|
|
8783
|
-
return join2(homedir(), ".mementos", "config.json");
|
|
8815
|
+
return join2(homedir(), ".hasna", "mementos", "config.json");
|
|
8784
8816
|
}
|
|
8785
8817
|
function readGlobalConfig() {
|
|
8786
8818
|
const p = globalConfigPath();
|
|
@@ -9044,7 +9076,7 @@ import { existsSync as existsSync3, mkdirSync as mkdirSync3, readFileSync as rea
|
|
|
9044
9076
|
import { homedir as homedir2 } from "os";
|
|
9045
9077
|
import { join as join3 } from "path";
|
|
9046
9078
|
var DEFAULT_MODEL = "gpt-4o-mini";
|
|
9047
|
-
var CONFIG_DIR = join3(homedir2(), ".mementos");
|
|
9079
|
+
var CONFIG_DIR = join3(homedir2(), ".hasna", "mementos");
|
|
9048
9080
|
var CONFIG_PATH = join3(CONFIG_DIR, "config.json");
|
|
9049
9081
|
function readConfig() {
|
|
9050
9082
|
if (!existsSync3(CONFIG_PATH))
|
|
@@ -9091,7 +9123,7 @@ function printInfo(msg) {
|
|
|
9091
9123
|
function makeBrainsCommand() {
|
|
9092
9124
|
const brains = new Command("brains");
|
|
9093
9125
|
brains.description("Fine-tuned model training and management (via @hasna/brains)");
|
|
9094
|
-
brains.command("gather").description("Gather training data from memories and write to JSONL").option("--limit <n>", "Maximum number of examples to gather", parseInt).option("--since <date>", "Only include memories created since this date (ISO 8601)").option("--output <dir>", "Output directory (default: ~/.mementos/training/)").option("--json", "Output result summary as JSON").action(async (opts) => {
|
|
9126
|
+
brains.command("gather").description("Gather training data from memories and write to JSONL").option("--limit <n>", "Maximum number of examples to gather", parseInt).option("--since <date>", "Only include memories created since this date (ISO 8601)").option("--output <dir>", "Output directory (default: ~/.hasna/mementos/training/)").option("--json", "Output result summary as JSON").action(async (opts) => {
|
|
9095
9127
|
try {
|
|
9096
9128
|
const since = opts.since ? new Date(opts.since) : undefined;
|
|
9097
9129
|
if (since && isNaN(since.getTime())) {
|
|
@@ -9105,7 +9137,7 @@ function makeBrainsCommand() {
|
|
|
9105
9137
|
limit: opts.limit,
|
|
9106
9138
|
since
|
|
9107
9139
|
});
|
|
9108
|
-
const outputDir = opts.output ?? join4(homedir3(), ".mementos", "training");
|
|
9140
|
+
const outputDir = opts.output ?? join4(homedir3(), ".hasna", "mementos", "training");
|
|
9109
9141
|
if (!existsSync4(outputDir)) {
|
|
9110
9142
|
mkdirSync4(outputDir, { recursive: true });
|
|
9111
9143
|
}
|
|
@@ -9134,7 +9166,7 @@ function makeBrainsCommand() {
|
|
|
9134
9166
|
try {
|
|
9135
9167
|
let datasetPath = opts.dataset;
|
|
9136
9168
|
if (!datasetPath) {
|
|
9137
|
-
const trainingDir = join4(homedir3(), ".mementos", "training");
|
|
9169
|
+
const trainingDir = join4(homedir3(), ".hasna", "mementos", "training");
|
|
9138
9170
|
if (!existsSync4(trainingDir)) {
|
|
9139
9171
|
printError("No training data found. Run `mementos brains gather` first.");
|
|
9140
9172
|
process.exit(1);
|
|
@@ -10806,7 +10838,7 @@ program2.command("doctor").description("Diagnose common issues with the mementos
|
|
|
10806
10838
|
if (activeProfile) {
|
|
10807
10839
|
checks.push({ name: "Active profile", status: "ok", detail: `${activeProfile} (${profiles.length} total)` });
|
|
10808
10840
|
} else {
|
|
10809
|
-
checks.push({ name: "Active profile", status: "ok", detail: `default (~/.mementos/mementos.db) \u2014 ${profiles.length} profile(s) available` });
|
|
10841
|
+
checks.push({ name: "Active profile", status: "ok", detail: `default (~/.hasna/mementos/mementos.db) \u2014 ${profiles.length} profile(s) available` });
|
|
10810
10842
|
}
|
|
10811
10843
|
} catch (e) {
|
|
10812
10844
|
checks.push({ name: "Active profile", status: "warn", detail: e instanceof Error ? e.message : String(e) });
|
|
@@ -11375,11 +11407,11 @@ ${lines.join(`
|
|
|
11375
11407
|
handleError(e);
|
|
11376
11408
|
}
|
|
11377
11409
|
});
|
|
11378
|
-
program2.command("backup [path]").description("Backup the SQLite database to a file").option("--list", "List available backups in ~/.mementos/backups/").action((targetPath, opts) => {
|
|
11410
|
+
program2.command("backup [path]").description("Backup the SQLite database to a file").option("--list", "List available backups in ~/.hasna/mementos/backups/").action((targetPath, opts) => {
|
|
11379
11411
|
try {
|
|
11380
11412
|
const globalOpts = program2.opts();
|
|
11381
11413
|
const home = process.env["HOME"] || process.env["USERPROFILE"] || "~";
|
|
11382
|
-
const backupsDir = join6(home, ".mementos", "backups");
|
|
11414
|
+
const backupsDir = join6(home, ".hasna", "mementos", "backups");
|
|
11383
11415
|
if (opts.list) {
|
|
11384
11416
|
if (!existsSync6(backupsDir)) {
|
|
11385
11417
|
if (globalOpts.json) {
|
|
@@ -11455,11 +11487,11 @@ program2.command("backup [path]").description("Backup the SQLite database to a f
|
|
|
11455
11487
|
handleError(e);
|
|
11456
11488
|
}
|
|
11457
11489
|
});
|
|
11458
|
-
program2.command("restore [file]").description("Restore the database from a backup file").option("--latest", "Restore the most recent backup from ~/.mementos/backups/").option("--force", "Skip confirmation and perform the restore").action((filePath, opts) => {
|
|
11490
|
+
program2.command("restore [file]").description("Restore the database from a backup file").option("--latest", "Restore the most recent backup from ~/.hasna/mementos/backups/").option("--force", "Skip confirmation and perform the restore").action((filePath, opts) => {
|
|
11459
11491
|
try {
|
|
11460
11492
|
const globalOpts = program2.opts();
|
|
11461
11493
|
const home = process.env["HOME"] || process.env["USERPROFILE"] || "~";
|
|
11462
|
-
const backupsDir = join6(home, ".mementos", "backups");
|
|
11494
|
+
const backupsDir = join6(home, ".hasna", "mementos", "backups");
|
|
11463
11495
|
let source;
|
|
11464
11496
|
if (opts.latest) {
|
|
11465
11497
|
if (!existsSync6(backupsDir)) {
|
|
@@ -11880,7 +11912,7 @@ function validateConfigKeyValue(key, value) {
|
|
|
11880
11912
|
return null;
|
|
11881
11913
|
}
|
|
11882
11914
|
function getConfigPath() {
|
|
11883
|
-
return join6(homedir4(), ".mementos", "config.json");
|
|
11915
|
+
return join6(homedir4(), ".hasna", "mementos", "config.json");
|
|
11884
11916
|
}
|
|
11885
11917
|
function readFileConfig() {
|
|
11886
11918
|
const configPath = getConfigPath();
|
|
@@ -12426,12 +12458,12 @@ profileCmd.command("get").description("Show the currently active profile").actio
|
|
|
12426
12458
|
if (active) {
|
|
12427
12459
|
console.log(chalk2.green(`Active profile: ${active}`));
|
|
12428
12460
|
if (!process.env["MEMENTOS_PROFILE"]) {
|
|
12429
|
-
console.log(chalk2.dim("(persisted in ~/.mementos/config.json)"));
|
|
12461
|
+
console.log(chalk2.dim("(persisted in ~/.hasna/mementos/config.json)"));
|
|
12430
12462
|
} else {
|
|
12431
12463
|
console.log(chalk2.dim("(from MEMENTOS_PROFILE env var)"));
|
|
12432
12464
|
}
|
|
12433
12465
|
} else {
|
|
12434
|
-
console.log(chalk2.dim("No active profile \u2014 using default DB (~/.mementos/mementos.db)"));
|
|
12466
|
+
console.log(chalk2.dim("No active profile \u2014 using default DB (~/.hasna/mementos/mementos.db)"));
|
|
12435
12467
|
}
|
|
12436
12468
|
});
|
|
12437
12469
|
profileCmd.command("set <name>").description("Switch to a named profile (creates the DB on first use)").action((name) => {
|
|
@@ -12442,7 +12474,7 @@ profileCmd.command("set <name>").description("Switch to a named profile (creates
|
|
|
12442
12474
|
}
|
|
12443
12475
|
setActiveProfile(clean);
|
|
12444
12476
|
console.log(chalk2.green(`\u2713 Switched to profile: ${clean}`));
|
|
12445
|
-
console.log(chalk2.dim(` DB: ~/.mementos/profiles/${clean}.db (created on first use)`));
|
|
12477
|
+
console.log(chalk2.dim(` DB: ~/.hasna/mementos/profiles/${clean}.db (created on first use)`));
|
|
12446
12478
|
});
|
|
12447
12479
|
profileCmd.command("unset").description("Clear the active profile (revert to default DB)").action(() => {
|
|
12448
12480
|
const was = getActiveProfile();
|
|
@@ -12452,7 +12484,7 @@ profileCmd.command("unset").description("Clear the active profile (revert to def
|
|
|
12452
12484
|
} else {
|
|
12453
12485
|
console.log(chalk2.dim("No active profile was set."));
|
|
12454
12486
|
}
|
|
12455
|
-
console.log(chalk2.dim(" Now using default DB: ~/.mementos/mementos.db"));
|
|
12487
|
+
console.log(chalk2.dim(" Now using default DB: ~/.hasna/mementos/mementos.db"));
|
|
12456
12488
|
});
|
|
12457
12489
|
profileCmd.command("delete <name>").description("Delete a profile and its DB file (irreversible)").option("-y, --yes", "Skip confirmation prompt").action(async (name, opts) => {
|
|
12458
12490
|
if (!opts.yes) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA8CtC,wBAAgB,SAAS,IAAI,MAAM,CAoBlC;AAs0BD,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAerD;AA+BD,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAef"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
|
+
var __returnValue = (v) => v;
|
|
4
|
+
function __exportSetter(name, newValue) {
|
|
5
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
6
|
+
}
|
|
3
7
|
var __export = (target, all) => {
|
|
4
8
|
for (var name in all)
|
|
5
9
|
__defProp(target, name, {
|
|
6
10
|
get: all[name],
|
|
7
11
|
enumerable: true,
|
|
8
12
|
configurable: true,
|
|
9
|
-
set: (
|
|
13
|
+
set: __exportSetter.bind(all, name)
|
|
10
14
|
});
|
|
11
15
|
};
|
|
12
16
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
@@ -24,7 +28,7 @@ __export(exports_database, {
|
|
|
24
28
|
closeDatabase: () => closeDatabase
|
|
25
29
|
});
|
|
26
30
|
import { Database } from "bun:sqlite";
|
|
27
|
-
import { existsSync, mkdirSync } from "fs";
|
|
31
|
+
import { existsSync, mkdirSync, cpSync } from "fs";
|
|
28
32
|
import { dirname, join, resolve } from "path";
|
|
29
33
|
function isInMemoryDb(path) {
|
|
30
34
|
return path === ":memory:" || path.startsWith("file::memory:");
|
|
@@ -54,9 +58,19 @@ function findGitRoot(startDir) {
|
|
|
54
58
|
}
|
|
55
59
|
return null;
|
|
56
60
|
}
|
|
61
|
+
function migrateGlobalDir() {
|
|
62
|
+
const home = process.env["HOME"] || process.env["USERPROFILE"] || "~";
|
|
63
|
+
const newDir = join(home, ".hasna", "mementos");
|
|
64
|
+
const oldDir = join(home, ".mementos");
|
|
65
|
+
if (!existsSync(newDir) && existsSync(oldDir)) {
|
|
66
|
+
mkdirSync(join(home, ".hasna"), { recursive: true });
|
|
67
|
+
cpSync(oldDir, newDir, { recursive: true });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
57
70
|
function getDbPath() {
|
|
58
|
-
|
|
59
|
-
|
|
71
|
+
const envPath = process.env["HASNA_MEMENTOS_DB_PATH"] ?? process.env["MEMENTOS_DB_PATH"];
|
|
72
|
+
if (envPath) {
|
|
73
|
+
return envPath;
|
|
60
74
|
}
|
|
61
75
|
const cwd = process.cwd();
|
|
62
76
|
const nearest = findNearestMementosDb(cwd);
|
|
@@ -68,8 +82,9 @@ function getDbPath() {
|
|
|
68
82
|
return join(gitRoot, ".mementos", "mementos.db");
|
|
69
83
|
}
|
|
70
84
|
}
|
|
85
|
+
migrateGlobalDir();
|
|
71
86
|
const home = process.env["HOME"] || process.env["USERPROFILE"] || "~";
|
|
72
|
-
return join(home, ".mementos", "mementos.db");
|
|
87
|
+
return join(home, ".hasna", "mementos", "mementos.db");
|
|
73
88
|
}
|
|
74
89
|
function ensureDir(filePath) {
|
|
75
90
|
if (isInMemoryDb(filePath))
|
|
@@ -2915,7 +2930,7 @@ function logSearchQuery(query, resultCount, agentId, projectId, db) {
|
|
|
2915
2930
|
} catch {}
|
|
2916
2931
|
}
|
|
2917
2932
|
// src/lib/config.ts
|
|
2918
|
-
import { existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync, readdirSync, writeFileSync, unlinkSync } from "fs";
|
|
2933
|
+
import { existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync, readdirSync, writeFileSync, unlinkSync, cpSync as cpSync2 } from "fs";
|
|
2919
2934
|
import { homedir } from "os";
|
|
2920
2935
|
import { basename, dirname as dirname2, join as join2, resolve as resolve2 } from "path";
|
|
2921
2936
|
var DEFAULT_CONFIG = {
|
|
@@ -2974,7 +2989,7 @@ function isValidCategory(value) {
|
|
|
2974
2989
|
return VALID_CATEGORIES.includes(value);
|
|
2975
2990
|
}
|
|
2976
2991
|
function loadConfig() {
|
|
2977
|
-
const configPath = join2(homedir(), ".mementos", "config.json");
|
|
2992
|
+
const configPath = join2(homedir(), ".hasna", "mementos", "config.json");
|
|
2978
2993
|
let fileConfig = {};
|
|
2979
2994
|
if (existsSync2(configPath)) {
|
|
2980
2995
|
try {
|
|
@@ -3001,10 +3016,10 @@ function loadConfig() {
|
|
|
3001
3016
|
return merged;
|
|
3002
3017
|
}
|
|
3003
3018
|
function profilesDir() {
|
|
3004
|
-
return join2(homedir(), ".mementos", "profiles");
|
|
3019
|
+
return join2(homedir(), ".hasna", "mementos", "profiles");
|
|
3005
3020
|
}
|
|
3006
3021
|
function globalConfigPath() {
|
|
3007
|
-
return join2(homedir(), ".mementos", "config.json");
|
|
3022
|
+
return join2(homedir(), ".hasna", "mementos", "config.json");
|
|
3008
3023
|
}
|
|
3009
3024
|
function readGlobalConfig() {
|
|
3010
3025
|
const p = globalConfigPath();
|
|
@@ -3410,7 +3425,7 @@ import { existsSync as existsSync3, mkdirSync as mkdirSync3, readFileSync as rea
|
|
|
3410
3425
|
import { homedir as homedir2 } from "os";
|
|
3411
3426
|
import { join as join3 } from "path";
|
|
3412
3427
|
function getAgentSyncDir(agentName) {
|
|
3413
|
-
const dir = join3(homedir2(), ".mementos", "agents", agentName);
|
|
3428
|
+
const dir = join3(homedir2(), ".hasna", "mementos", "agents", agentName);
|
|
3414
3429
|
if (!existsSync3(dir)) {
|
|
3415
3430
|
mkdirSync3(dir, { recursive: true });
|
|
3416
3431
|
}
|
|
@@ -4520,7 +4535,7 @@ import { existsSync as existsSync4, mkdirSync as mkdirSync4, readFileSync as rea
|
|
|
4520
4535
|
import { homedir as homedir3 } from "os";
|
|
4521
4536
|
import { join as join4 } from "path";
|
|
4522
4537
|
var DEFAULT_MODEL = "gpt-4o-mini";
|
|
4523
|
-
var CONFIG_DIR = join4(homedir3(), ".mementos");
|
|
4538
|
+
var CONFIG_DIR = join4(homedir3(), ".hasna", "mementos");
|
|
4524
4539
|
var CONFIG_PATH = join4(CONFIG_DIR, "config.json");
|
|
4525
4540
|
function readConfig() {
|
|
4526
4541
|
if (!existsSync4(CONFIG_PATH))
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAA+B,MAAM,UAAU,CAAC;AAM5E,eAAO,MAAM,cAAc,EAAE,cA4B5B,CAAC;AA4DF,wBAAgB,UAAU,IAAI,cAAc,CAwC3C;AAwED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAMhD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAQ1D;AAED,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAOvC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED,wBAAgB,SAAS,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAA+B,MAAM,UAAU,CAAC;AAM5E,eAAO,MAAM,cAAc,EAAE,cA4B5B,CAAC;AA4DF,wBAAgB,UAAU,IAAI,cAAc,CAwC3C;AAwED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAMhD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAQ1D;AAED,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAOvC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAgDlC"}
|
|
@@ -4,7 +4,7 @@ export declare const DEFAULT_MODEL = "gpt-4o-mini";
|
|
|
4
4
|
*/
|
|
5
5
|
export declare function getActiveModel(): string;
|
|
6
6
|
/**
|
|
7
|
-
* Sets the active fine-tuned model ID in ~/.mementos/config.json.
|
|
7
|
+
* Sets the active fine-tuned model ID in ~/.hasna/mementos/config.json.
|
|
8
8
|
*/
|
|
9
9
|
export declare function setActiveModel(modelId: string): void;
|
|
10
10
|
/**
|
package/dist/mcp/index.js
CHANGED
|
@@ -4,27 +4,37 @@ var __defProp = Object.defineProperty;
|
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
|
|
7
|
+
function __accessProp(key) {
|
|
8
|
+
return this[key];
|
|
9
|
+
}
|
|
8
10
|
var __toCommonJS = (from) => {
|
|
9
|
-
var entry = __moduleCache.get(from), desc;
|
|
11
|
+
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
10
12
|
if (entry)
|
|
11
13
|
return entry;
|
|
12
14
|
entry = __defProp({}, "__esModule", { value: true });
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function")
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (var key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(entry, key))
|
|
18
|
+
__defProp(entry, key, {
|
|
19
|
+
get: __accessProp.bind(from, key),
|
|
20
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
21
|
+
});
|
|
22
|
+
}
|
|
18
23
|
__moduleCache.set(from, entry);
|
|
19
24
|
return entry;
|
|
20
25
|
};
|
|
26
|
+
var __moduleCache;
|
|
27
|
+
var __returnValue = (v) => v;
|
|
28
|
+
function __exportSetter(name, newValue) {
|
|
29
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
30
|
+
}
|
|
21
31
|
var __export = (target, all) => {
|
|
22
32
|
for (var name in all)
|
|
23
33
|
__defProp(target, name, {
|
|
24
34
|
get: all[name],
|
|
25
35
|
enumerable: true,
|
|
26
36
|
configurable: true,
|
|
27
|
-
set: (
|
|
37
|
+
set: __exportSetter.bind(all, name)
|
|
28
38
|
});
|
|
29
39
|
};
|
|
30
40
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
@@ -111,7 +121,7 @@ __export(exports_database, {
|
|
|
111
121
|
closeDatabase: () => closeDatabase
|
|
112
122
|
});
|
|
113
123
|
import { Database } from "bun:sqlite";
|
|
114
|
-
import { existsSync, mkdirSync } from "fs";
|
|
124
|
+
import { existsSync, mkdirSync, cpSync } from "fs";
|
|
115
125
|
import { dirname, join, resolve } from "path";
|
|
116
126
|
function isInMemoryDb(path) {
|
|
117
127
|
return path === ":memory:" || path.startsWith("file::memory:");
|
|
@@ -141,9 +151,19 @@ function findGitRoot(startDir) {
|
|
|
141
151
|
}
|
|
142
152
|
return null;
|
|
143
153
|
}
|
|
154
|
+
function migrateGlobalDir() {
|
|
155
|
+
const home = process.env["HOME"] || process.env["USERPROFILE"] || "~";
|
|
156
|
+
const newDir = join(home, ".hasna", "mementos");
|
|
157
|
+
const oldDir = join(home, ".mementos");
|
|
158
|
+
if (!existsSync(newDir) && existsSync(oldDir)) {
|
|
159
|
+
mkdirSync(join(home, ".hasna"), { recursive: true });
|
|
160
|
+
cpSync(oldDir, newDir, { recursive: true });
|
|
161
|
+
}
|
|
162
|
+
}
|
|
144
163
|
function getDbPath() {
|
|
145
|
-
|
|
146
|
-
|
|
164
|
+
const envPath = process.env["HASNA_MEMENTOS_DB_PATH"] ?? process.env["MEMENTOS_DB_PATH"];
|
|
165
|
+
if (envPath) {
|
|
166
|
+
return envPath;
|
|
147
167
|
}
|
|
148
168
|
const cwd = process.cwd();
|
|
149
169
|
const nearest = findNearestMementosDb(cwd);
|
|
@@ -155,8 +175,9 @@ function getDbPath() {
|
|
|
155
175
|
return join(gitRoot, ".mementos", "mementos.db");
|
|
156
176
|
}
|
|
157
177
|
}
|
|
178
|
+
migrateGlobalDir();
|
|
158
179
|
const home = process.env["HOME"] || process.env["USERPROFILE"] || "~";
|
|
159
|
-
return join(home, ".mementos", "mementos.db");
|
|
180
|
+
return join(home, ".hasna", "mementos", "mementos.db");
|
|
160
181
|
}
|
|
161
182
|
function ensureDir(filePath) {
|
|
162
183
|
if (isInMemoryDb(filePath))
|
|
@@ -5042,7 +5063,7 @@ var init_export_v1 = __esm(() => {
|
|
|
5042
5063
|
});
|
|
5043
5064
|
|
|
5044
5065
|
// src/lib/config.ts
|
|
5045
|
-
import { existsSync as existsSync6, mkdirSync as mkdirSync3, readFileSync as readFileSync3, readdirSync as readdirSync3, writeFileSync, unlinkSync } from "fs";
|
|
5066
|
+
import { existsSync as existsSync6, mkdirSync as mkdirSync3, readFileSync as readFileSync3, readdirSync as readdirSync3, writeFileSync, unlinkSync, cpSync as cpSync2 } from "fs";
|
|
5046
5067
|
import { homedir } from "os";
|
|
5047
5068
|
import { basename as basename3, dirname as dirname5, join as join6, resolve as resolve4 } from "path";
|
|
5048
5069
|
function deepMerge(target, source) {
|
|
@@ -5065,7 +5086,7 @@ function isValidCategory(value) {
|
|
|
5065
5086
|
return VALID_CATEGORIES.includes(value);
|
|
5066
5087
|
}
|
|
5067
5088
|
function loadConfig() {
|
|
5068
|
-
const configPath = join6(homedir(), ".mementos", "config.json");
|
|
5089
|
+
const configPath = join6(homedir(), ".hasna", "mementos", "config.json");
|
|
5069
5090
|
let fileConfig = {};
|
|
5070
5091
|
if (existsSync6(configPath)) {
|
|
5071
5092
|
try {
|