Compare commits

...

52 commits

Author SHA1 Message Date
celeste
afbb3519f1 hehe 2025-03-19 22:53:10 -07:00
celeste
53ef92e076 bugfixes 2025-03-19 22:41:22 -07:00
celeste
518a90f587 Add Llama 3.1 405b (and remove cd2) autofill 2024-09-04 00:25:18 -07:00
celeste
93599ed192 Fix OpenRouter error reporting 2024-09-03 23:47:17 -07:00
celeste
788d91b2b1 Use cl100k for LLaMa 3.1 2024-09-03 21:23:25 -07:00
celeste
c624fd9282 Add HTTP-Referer/X-Title to OpenRouter 2024-09-03 20:10:38 -07:00
celeste
0aee3e1cff Add OpenRouter + other minor improvements 2024-09-03 20:07:46 -07:00
celeste
6dc19e3196 fix 405b 2024-08-28 20:18:45 -07:00
celeste
ba0fe89876 temporarily disable broken shift+click switch 2024-07-25 18:50:08 -07:00
celeste
aadf65783f this is a wild guess 2024-07-25 18:45:26 -07:00
celeste
a6341f64b5 bump version 2024-07-25 18:38:01 -07:00
celeste
1b7a7aba56
Merge pull request #18 from ampdot-io/compatibility
Improve compatibility with OpenAI-compatible APIs such as Together.ai
2024-07-25 18:35:17 -07:00
celeste
843c212b17
Merge branch 'master' into compatibility 2024-07-25 18:35:02 -07:00
ampdot-io
753e98a0dc
Bump manifest version 2024-07-25 18:27:03 -07:00
ampdot-io
5d089d6aa9
Bump manifest ver 2024-07-25 18:26:47 -07:00
celeste
3c01470388
Merge pull request #20 from socketteer/master
added system prompt and user message as loom settings and option to log requests to console
2024-05-25 18:38:15 -07:00
socketteer
a74d395d38 Merge remote-tracking branch 'upstream/master' 2024-05-05 18:34:15 -04:00
socketteer
926724a881 add system prompt and user message options, logging option for anthropic 2024-05-05 18:26:03 -04:00
ampdot
aa1dba4992 Improve compatibility with Together.ai 2024-04-17 01:46:03 -04:00
celeste
d1bae1dcda
Merge pull request #17 from socketteer/master
parallel completions for anthropic api
2024-04-06 15:34:55 -04:00
socketteer
437ef9257f update version 2024-04-06 10:26:56 -07:00
socketteer
4885d53e00 multiple completions for Claude 2024-04-06 10:25:24 -07:00
Parafactual's Name on Git
52c92e67ff fix? 2024-04-06 00:48:55 -04:00
Parafactual's Name on Git
de8e539146 bump v 2024-04-06 00:38:28 -04:00
celeste
ef8c340e15
Merge pull request #15 from socketteer/master
Add Anthropic API and a few small fixes to generating behavior
2024-04-05 18:24:55 -04:00
socketteer
96040dbd64 add new node to parent based on prompt for those completions, not current generating node 2024-04-05 05:16:45 -07:00
socketteer
7c4e22fe76 remove generating loader if generation fails 2024-04-04 17:54:32 -07:00
socketteer
382ca9ac78 add claude 2024-04-04 17:50:49 -07:00
celeste
5d537e57c1 clean up selected and disabled attrs 2023-11-25 01:13:58 -06:00
celeste
861e455b07 fix preset selection in sidebar 2023-11-25 01:10:42 -06:00
celeste
d9c7cd65f9 fix best of ux 2023-11-22 04:12:04 -06:00
celeste
e685ede86e visibility checkboxes 2023-11-20 21:15:55 -06:00
celeste
7b04c99072 update version 2023-11-20 19:55:40 -06:00
celeste
e76ca602f3 fill in model details 2023-11-20 19:55:19 -06:00
celeste
c9ba9efc36 minor styling change 2023-11-20 19:43:12 -06:00
celeste
44d390a680 more preset fixes/improvements 2023-11-20 19:33:00 -06:00
celeste
12e5d8cb5c fix settings when no presets exist 2023-11-20 19:18:05 -06:00
celeste
ab6180b725 aaaaa 2023-11-20 03:10:49 -06:00
celeste
5efa943150 aaaa 2023-11-20 03:10:36 -06:00
celeste
4f168b6619 model presets, minor improvements 2023-11-20 03:03:24 -06:00
celeste
698106e794 refactor 2023-11-19 18:56:31 -06:00
celeste
838ea5dd34 update version 2023-11-19 18:50:59 -06:00
celeste
32a5a3f71f
Merge pull request #14 from socketteer/master
reduce editor lag by making render async and preventing too many renders
2023-11-19 16:49:29 -08:00
socketteer
2a44016f78 reduce editor lag by making render async and preventing too many renders 2023-11-13 07:57:36 -05:00
celeste
81e3ee04ee update version 2023-11-06 17:16:43 -08:00
celeste
8dfa97a34b
Merge pull request #13 from socketteer/fixes+prepend
Fixes+prepend
2023-11-06 17:14:53 -08:00
socketteer
4b0c9eb269 always move cursor to end of editor when switching nodes 2023-11-06 16:12:16 -05:00
socketteer
c36dd1320d update version 2023-11-06 16:04:34 -05:00
socketteer
98e7c69401 add prepend setting, select parent node after splitting before generating, fix editor scroll to top issue 2023-11-06 16:03:22 -05:00
socketteer
774464ffd3 add prepend setting 2023-11-06 16:02:16 -05:00
socketteer
a5c4ea653b add prepend sequence setting and scroll active tree node into view 2023-11-06 16:01:55 -05:00
celeste
beafcdd3b0 add back beam search 2023-11-04 21:54:44 -07:00
7 changed files with 2528 additions and 1094 deletions

View file

@ -1,32 +1,58 @@
export const PROVIDERS = ["cohere", "textsynth", "ocp", "openai", "openai-chat", "azure", "azure-chat"];
export const PROVIDERS = [
"cohere",
"textsynth",
"openai-compat",
"openai",
"openai-chat",
"azure",
"azure-chat",
"anthropic",
"openrouter",
];
export type Provider = (typeof PROVIDERS)[number];
type ProviderProps = {
openai: { organization: string };
"openai-chat": { organization: string };
"openai-compat": { url: string };
azure: { url: string };
"azure-chat": { url: string };
anthropic: { url: string };
openrouter: { quantization: string };
};
type SharedPresetSettings = {
name: string;
model: string;
contextLength: number;
apiKey: string;
};
export type ModelPreset<P extends Provider> = SharedPresetSettings &
(P extends keyof ProviderProps ? ProviderProps[P] : {}) & { provider: P };
export interface LoomSettings {
openaiApiKey: string;
openaiOrganization: string;
cohereApiKey: string;
textsynthApiKey: string;
azureApiKey: string;
azureEndpoint: string;
ocpApiKey: string;
ocpUrl: string;
passageFolder: string;
defaultPassageSeparator: string;
defaultPassageFrontmatter: string;
provider: Provider;
model: string;
contextLength: number;
logApiCalls: boolean;
modelPresets: ModelPreset<Provider>[];
modelPreset: number;
visibility: Record<string, boolean>;
maxTokens: number;
temperature: number;
topP: number;
frequencyPenalty: number;
presencePenalty: number;
prepend: string;
bestOf: number;
n: number;
systemPrompt: string;
userMessage: string;
showSettings: boolean;
showSearchBar: boolean;
@ -34,6 +60,9 @@ export interface LoomSettings {
showExport: boolean;
}
export const getPreset = (settings: LoomSettings) =>
settings.modelPresets[settings.modelPreset];
export type SearchResultState = "result" | "ancestor" | "none" | null;
export interface Node {

2167
main.ts

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
{
"id": "loom",
"name": "Loom",
"version": "1.16.4",
"version": "1.22.6",
"minAppVersion": "0.15.0",
"description": "Loom in Obsidian",
"author": "celeste",

175
package-lock.json generated
View file

@ -1,14 +1,15 @@
{
"name": "obsidian-loom",
"version": "1.16.3",
"version": "1.21.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "obsidian-loom",
"version": "1.16.3",
"version": "1.21.0",
"license": "MIT",
"dependencies": {
"@anthropic-ai/sdk": "^0.20.0",
"@codemirror/state": "^6.2.0",
"@codemirror/view": "^6.9.3",
"@types/lodash": "^4.14.191",
@ -34,6 +35,29 @@
"typescript": "4.7.4"
}
},
"node_modules/@anthropic-ai/sdk": {
"version": "0.20.0",
"resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.20.0.tgz",
"integrity": "sha512-VpkVetFHQ31cendkcAGnZo08yWDJeo4jPRRtsNEgVKoF+NkzZDVktGvK4ZB7mhPrUQlCcjd4DzjijiWnZ4qIog==",
"dependencies": {
"@types/node": "^18.11.18",
"@types/node-fetch": "^2.6.4",
"abort-controller": "^3.0.0",
"agentkeepalive": "^4.2.1",
"form-data-encoder": "1.7.2",
"formdata-node": "^4.3.2",
"node-fetch": "^2.6.7",
"web-streams-polyfill": "^3.2.1"
}
},
"node_modules/@anthropic-ai/sdk/node_modules/@types/node": {
"version": "18.19.29",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.29.tgz",
"integrity": "sha512-5pAX7ggTmWZdhUrhRWLPf+5oM7F80bcKVCBbr0zwEkTNzTJL2CWQjznpFgHYy6GrzkYi2Yjy7DHKoynFxqPV8g==",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@codemirror/state": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.0.tgz",
@ -194,8 +218,16 @@
"node_modules/@types/node": {
"version": "16.18.12",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.12.tgz",
"integrity": "sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw==",
"dev": true
"integrity": "sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw=="
},
"node_modules/@types/node-fetch": {
"version": "2.6.11",
"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz",
"integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==",
"dependencies": {
"@types/node": "*",
"form-data": "^4.0.0"
}
},
"node_modules/@types/roman-numerals": {
"version": "0.3.0",
@ -411,6 +443,17 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
"node_modules/abort-controller": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
"dependencies": {
"event-target-shim": "^5.0.0"
},
"engines": {
"node": ">=6.5"
}
},
"node_modules/acorn": {
"version": "8.8.2",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
@ -432,6 +475,17 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/agentkeepalive": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz",
"integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==",
"dependencies": {
"humanize-ms": "^1.2.1"
},
"engines": {
"node": ">= 8.0.0"
}
},
"node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@ -937,6 +991,14 @@
"node": ">=0.10.0"
}
},
"node_modules/event-target-shim": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
"engines": {
"node": ">=6"
}
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@ -1083,6 +1145,31 @@
"node": ">= 6"
}
},
"node_modules/form-data-encoder": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz",
"integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A=="
},
"node_modules/formdata-node": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz",
"integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==",
"dependencies": {
"node-domexception": "1.0.0",
"web-streams-polyfill": "4.0.0-beta.3"
},
"engines": {
"node": ">= 12.20"
}
},
"node_modules/formdata-node/node_modules/web-streams-polyfill": {
"version": "4.0.0-beta.3",
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz",
"integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==",
"engines": {
"node": ">= 14"
}
},
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@ -1179,6 +1266,14 @@
"node": ">=8"
}
},
"node_modules/humanize-ms": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
"integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
"dependencies": {
"ms": "^2.0.0"
}
},
"node_modules/ignore": {
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
@ -1419,8 +1514,7 @@
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/natural-compare": {
"version": "1.4.0",
@ -1434,6 +1528,43 @@
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
"dev": true
},
"node_modules/node-domexception": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/jimmywarting"
},
{
"type": "github",
"url": "https://paypal.me/jimmywarting"
}
],
"engines": {
"node": ">=10.5.0"
}
},
"node_modules/node-fetch": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/obsidian": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/obsidian/-/obsidian-1.1.1.tgz",
@ -1794,6 +1925,11 @@
"node": ">=8.0"
}
},
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"node_modules/tslib": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
@ -1858,6 +1994,11 @@
"node": ">=4.2.0"
}
},
"node_modules/undici-types": {
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
},
"node_modules/untildify": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
@ -1888,6 +2029,28 @@
"resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz",
"integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg=="
},
"node_modules/web-streams-polyfill": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
"integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
"engines": {
"node": ">= 8"
}
},
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
"node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",

View file

@ -1,6 +1,6 @@
{
"name": "obsidian-loom",
"version": "1.16.4",
"version": "1.22.6",
"description": "Loom in Obsidian",
"main": "main.js",
"scripts": {
@ -24,6 +24,7 @@
"typescript": "4.7.4"
},
"dependencies": {
"@anthropic-ai/sdk": "^0.20.0",
"@codemirror/state": "^6.2.0",
"@codemirror/view": "^6.9.3",
"@types/lodash": "^4.14.191",

View file

@ -82,6 +82,26 @@ body {
margin-bottom: 0.3em;
}
.loom__visibility {
margin-bottom: 0.7em;
}
.loom__visibility-item {
display: inline-flex;
align-items: center;
margin-right: 0.7em;
}
.loom__visibility-item-label {
font-size: var(--font-ui-small);
}
.loom__no-metavisibility {
color: var(--text-faint);
font-size: var(--font-ui-small);
margin: 0 0 0.5em 0.5em;
}
.loom__setting {
display: flex;
flex-direction: column;
@ -331,6 +351,62 @@ body {
padding: 0.35em 0 0.35em 0.6em;
}
/* settings -> loom */
.loom__preset-editor {
align-items: start;
flex-direction: column;
}
.loom__preset-list {
width: 100%;
margin: -0.125em 0 0.75em;
}
.loom__preset {
display: flex;
align-items: center;
padding: 0;
}
.loom__preset.is-active {
background-color: var(--nav-item-background-active);
}
.loom__preset-name {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: 0.35em 0 0.35em 0.6em;
flex-grow: 1;
}
.loom__preset-buttons {
display: flex;
align-items: center;
padding-right: 0.5em;
}
.loom__preset-button {
display: inline-flex !important;
margin-left: -0.025em;
padding: 0.1em 0.075em;
border-radius: 0.25em;
--icon-size: 1.1rem;
}
.loom__preset-button:hover {
background-color: var(--nav-item-background-active);
}
.loom__new-preset-buttons {
display: flex;
gap: var(--size-4-2);
}
.loom__no-preset-selected {
color: var(--text-faint);
font-size: var(--font-ui-small);
}
/* hidden -- must be at end */
.hidden {

1138
views.ts

File diff suppressed because it is too large Load diff