@agnamo/nopilot 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/manifest.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "nopilot",
3
+ "name": "Nopilot",
4
+ "version": "0.1.1",
5
+ "minAppVersion": "1.5.0",
6
+ "description": "LuxDev vault chat. Bring your own key, save chats as notes, run a local agent only when you explicitly enable it.",
7
+ "author": "lux",
8
+ "isDesktopOnly": false
9
+ }
package/package.json CHANGED
@@ -1,6 +1,50 @@
1
1
  {
2
2
  "name": "@agnamo/nopilot",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.1",
4
+ "description": "LuxDev vault chat plugin. Original clean-room client. Not Obsidian Copilot.",
5
+ "author": "lux",
6
+ "license": "ISC",
7
+ "type": "module",
8
+ "main": "main.js",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/LuxDevNet/nopilot.git"
12
+ },
13
+ "homepage": "https://github.com/LuxDevNet/nopilot#readme",
14
+ "bugs": {
15
+ "url": "https://github.com/LuxDevNet/nopilot/issues"
16
+ },
17
+ "keywords": [
18
+ "obsidian",
19
+ "obsidian-plugin",
20
+ "chat",
21
+ "llm",
22
+ "vault"
23
+ ],
24
+ "engines": {
25
+ "node": ">=18"
26
+ },
27
+ "files": [
28
+ "main.js",
29
+ "manifest.json",
30
+ "styles.css",
31
+ "README.md",
32
+ "LICENSE",
33
+ "NOTICE"
34
+ ],
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "scripts": {
39
+ "build": "node esbuild.config.mjs",
40
+ "typecheck": "tsc -p tsconfig.json --noEmit",
41
+ "test": "node --test test/",
42
+ "prepublishOnly": "npm run build && npm run typecheck && npm test"
43
+ },
44
+ "devDependencies": {
45
+ "@types/node": "^22.10.0",
46
+ "esbuild": "^0.25.0",
47
+ "obsidian": "^1.7.2",
48
+ "typescript": "^5.7.0"
49
+ }
50
+ }
package/styles.css ADDED
@@ -0,0 +1,247 @@
1
+ /* LuxDev ink desk. Vermillion on warm black. No external fonts. */
2
+
3
+ .nopilot-root {
4
+ height: 100%;
5
+ min-height: 0;
6
+ display: flex;
7
+ flex-direction: column;
8
+ overflow: hidden;
9
+ box-sizing: border-box;
10
+ background: #16140f;
11
+ color: #f4efe6;
12
+ font: inherit;
13
+ }
14
+
15
+ .nopilot-root *,
16
+ .nopilot-root *::before,
17
+ .nopilot-root *::after {
18
+ box-sizing: border-box;
19
+ }
20
+
21
+ .nopilot-header {
22
+ flex: none;
23
+ display: flex;
24
+ align-items: baseline;
25
+ gap: 8px;
26
+ padding: 14px 16px 12px;
27
+ border-bottom: 1px solid rgba(244, 239, 230, 0.16);
28
+ box-shadow: inset 0 -3px 0 #e4572e;
29
+ letter-spacing: 0.04em;
30
+ }
31
+
32
+ .nopilot-header::before {
33
+ content: "";
34
+ width: 9px;
35
+ height: 9px;
36
+ flex: none;
37
+ align-self: center;
38
+ background: #e4572e;
39
+ }
40
+
41
+ .nopilot-model {
42
+ margin-left: auto;
43
+ font-size: 0.72rem;
44
+ letter-spacing: 0.08em;
45
+ text-transform: uppercase;
46
+ color: rgba(244, 239, 230, 0.62);
47
+ }
48
+
49
+ .nopilot-log {
50
+ flex: 1;
51
+ min-height: 0;
52
+ overflow: auto;
53
+ display: flex;
54
+ flex-direction: column;
55
+ gap: 10px;
56
+ padding: 16px;
57
+ scrollbar-color: #e4572e #16140f;
58
+ }
59
+
60
+ .nopilot-log::-webkit-scrollbar {
61
+ width: 8px;
62
+ }
63
+
64
+ .nopilot-log::-webkit-scrollbar-thumb {
65
+ background: rgba(228, 87, 46, 0.55);
66
+ }
67
+
68
+ .nopilot-empty {
69
+ margin: auto;
70
+ color: rgba(244, 239, 230, 0.5);
71
+ font-style: italic;
72
+ text-align: center;
73
+ }
74
+
75
+ .nopilot-msg {
76
+ white-space: pre-wrap;
77
+ overflow-wrap: anywhere;
78
+ padding: 10px 12px;
79
+ line-height: 1.5;
80
+ border-radius: 0;
81
+ }
82
+
83
+ .nopilot-msg > :first-child {
84
+ margin-bottom: 6px;
85
+ font-size: 0.68rem;
86
+ font-style: normal;
87
+ letter-spacing: 0.14em;
88
+ text-transform: uppercase;
89
+ color: rgba(244, 239, 230, 0.55);
90
+ }
91
+
92
+ .nopilot-msg-user {
93
+ align-self: flex-end;
94
+ max-width: min(34rem, 100%);
95
+ background: rgba(228, 87, 46, 0.08);
96
+ border: 1px solid #e4572e;
97
+ }
98
+
99
+ .nopilot-msg-user > :first-child {
100
+ color: #e4572e;
101
+ }
102
+
103
+ .nopilot-msg-assistant {
104
+ align-self: stretch;
105
+ width: 100%;
106
+ background: #1c1914;
107
+ border: 1px solid rgba(244, 239, 230, 0.16);
108
+ }
109
+
110
+ .nopilot-context {
111
+ align-self: stretch;
112
+ max-width: 100%;
113
+ padding: 4px 10px;
114
+ border-left: 2px solid #e4572e;
115
+ background: rgba(228, 87, 46, 0.08);
116
+ color: #f4efe6;
117
+ font-size: 0.8rem;
118
+ letter-spacing: 0.02em;
119
+ white-space: nowrap;
120
+ overflow: hidden;
121
+ text-overflow: ellipsis;
122
+ }
123
+
124
+ .nopilot-error {
125
+ flex: none;
126
+ padding: 8px 16px 0;
127
+ color: #e4572e;
128
+ font-size: 0.85rem;
129
+ line-height: 1.4;
130
+ white-space: pre-wrap;
131
+ overflow-wrap: anywhere;
132
+ }
133
+
134
+ .nopilot-error:empty,
135
+ .nopilot-error[hidden] {
136
+ display: none;
137
+ }
138
+
139
+ .nopilot-composer {
140
+ flex: none;
141
+ display: flex;
142
+ flex-direction: column;
143
+ gap: 8px;
144
+ padding: 12px 16px 16px;
145
+ border-top: 1px solid rgba(244, 239, 230, 0.16);
146
+ }
147
+
148
+ .nopilot-root textarea.nopilot-input {
149
+ width: 100%;
150
+ min-height: 72px;
151
+ max-height: 220px;
152
+ margin: 0;
153
+ padding: 10px 12px;
154
+ resize: vertical;
155
+ border-radius: 0;
156
+ border: 1px solid rgba(244, 239, 230, 0.2);
157
+ background: #221f19;
158
+ color: #f4efe6;
159
+ box-shadow: none;
160
+ font: inherit;
161
+ line-height: 1.45;
162
+ }
163
+
164
+ .nopilot-root textarea.nopilot-input::placeholder {
165
+ color: rgba(244, 239, 230, 0.42);
166
+ }
167
+
168
+ .nopilot-root textarea.nopilot-input:focus {
169
+ outline: 1px solid #e4572e;
170
+ border-color: #e4572e;
171
+ }
172
+
173
+ .nopilot-root button.nopilot-send {
174
+ align-self: flex-end;
175
+ margin: 0;
176
+ padding: 8px 16px;
177
+ border: none;
178
+ border-radius: 0;
179
+ background: #e4572e;
180
+ color: #16140f;
181
+ box-shadow: none;
182
+ font: inherit;
183
+ font-weight: 600;
184
+ letter-spacing: 0.04em;
185
+ cursor: pointer;
186
+ }
187
+
188
+ .nopilot-root button.nopilot-send:hover:not(:disabled) {
189
+ background: #f06a3c;
190
+ }
191
+
192
+ .nopilot-root button.nopilot-send:active:not(:disabled) {
193
+ background: #c9451f;
194
+ }
195
+
196
+ .nopilot-root button.nopilot-send:focus-visible {
197
+ outline: 2px solid #f4efe6;
198
+ outline-offset: 2px;
199
+ }
200
+
201
+ .nopilot-root button.nopilot-send:disabled {
202
+ opacity: 0.45;
203
+ cursor: default;
204
+ }
205
+
206
+ .nopilot-root ::selection {
207
+ background: #e4572e;
208
+ color: #16140f;
209
+ }
210
+
211
+ .nopilot-settings {
212
+ background: #16140f;
213
+ color: #f4efe6;
214
+ padding: 4px 2px 28px;
215
+ }
216
+
217
+ .nopilot-settings .setting-item {
218
+ border-color: rgba(244, 239, 230, 0.16);
219
+ }
220
+
221
+ .nopilot-settings .setting-item-name,
222
+ .nopilot-settings .setting-item-heading {
223
+ color: #f4efe6;
224
+ }
225
+
226
+ .nopilot-settings .setting-item-description {
227
+ color: #a39888;
228
+ }
229
+
230
+ .nopilot-settings input,
231
+ .nopilot-settings textarea,
232
+ .nopilot-settings select {
233
+ background: #221e17;
234
+ color: #f4efe6;
235
+ border: 1px solid rgba(244, 239, 230, 0.28);
236
+ border-radius: 0;
237
+ }
238
+
239
+ .nopilot-settings .checkbox-container {
240
+ background: #221e17;
241
+ }
242
+
243
+ .nopilot-module {
244
+ margin: 14px 0 4px;
245
+ padding-left: 10px;
246
+ border-left: 3px solid #e4572e;
247
+ }