@pellux/goodvibes-sdk 0.23.1 → 0.24.0

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.
@@ -23,9 +23,9 @@ export declare const ProviderModelEntrySchema: z.ZodObject<{
23
23
  export type ProviderModelEntry = z.infer<typeof ProviderModelEntrySchema>;
24
24
  export declare const ConfiguredViaSchema: z.ZodEnum<{
25
25
  env: "env";
26
+ secrets: "secrets";
26
27
  anonymous: "anonymous";
27
28
  subscription: "subscription";
28
- secrets: "secrets";
29
29
  }>;
30
30
  export type ConfiguredVia = z.infer<typeof ConfiguredViaSchema>;
31
31
  export declare const ProviderEntrySchema: z.ZodObject<{
@@ -34,9 +34,9 @@ export declare const ProviderEntrySchema: z.ZodObject<{
34
34
  configured: z.ZodBoolean;
35
35
  configuredVia: z.ZodOptional<z.ZodEnum<{
36
36
  env: "env";
37
+ secrets: "secrets";
37
38
  anonymous: "anonymous";
38
39
  subscription: "subscription";
39
- secrets: "secrets";
40
40
  }>>;
41
41
  envVars: z.ZodArray<z.ZodString>;
42
42
  models: z.ZodArray<z.ZodObject<{
@@ -55,9 +55,9 @@ export declare const ListProvidersResponseSchema: z.ZodObject<{
55
55
  configured: z.ZodBoolean;
56
56
  configuredVia: z.ZodOptional<z.ZodEnum<{
57
57
  env: "env";
58
+ secrets: "secrets";
58
59
  anonymous: "anonymous";
59
60
  subscription: "subscription";
60
- secrets: "secrets";
61
61
  }>>;
62
62
  envVars: z.ZodArray<z.ZodString>;
63
63
  models: z.ZodArray<z.ZodObject<{
@@ -84,9 +84,9 @@ export declare const CurrentModelResponseSchema: z.ZodObject<{
84
84
  configured: z.ZodBoolean;
85
85
  configuredVia: z.ZodOptional<z.ZodEnum<{
86
86
  env: "env";
87
+ secrets: "secrets";
87
88
  anonymous: "anonymous";
88
89
  subscription: "subscription";
89
- secrets: "secrets";
90
90
  }>>;
91
91
  }, z.core.$strip>;
92
92
  export type CurrentModelResponse = z.infer<typeof CurrentModelResponseSchema>;
@@ -114,9 +114,9 @@ export declare const PatchCurrentModelResponseSchema: z.ZodObject<{
114
114
  configured: z.ZodBoolean;
115
115
  configuredVia: z.ZodOptional<z.ZodEnum<{
116
116
  env: "env";
117
+ secrets: "secrets";
117
118
  anonymous: "anonymous";
118
119
  subscription: "subscription";
119
- secrets: "secrets";
120
120
  }>>;
121
121
  persisted: z.ZodBoolean;
122
122
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"secret-refs.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/secret-refs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secret-refs.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/config/secret-refs.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,9 @@ export const BUILTIN_SECRET_PROVIDER_SOURCES = [
12
12
  'bitwarden-secrets-manager',
13
13
  ];
14
14
  const JSON_REF_PREFIX = 'secretref:';
15
- const SECRET_URI_PREFIX = 'secret://';
15
+ const GOODVIBES_URI_PREFIX = 'goodvibes://';
16
+ const GOODVIBES_URI_PROTOCOL = 'goodvibes:';
17
+ const GOODVIBES_SECRETS_HOST = 'secrets';
16
18
  function asRecord(value) {
17
19
  return value && typeof value === 'object' && !Array.isArray(value)
18
20
  ? value
@@ -27,6 +29,31 @@ function readBoolean(value) {
27
29
  function readNumber(value) {
28
30
  return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
29
31
  }
32
+ function readSearchString(params, ...keys) {
33
+ for (const key of keys) {
34
+ const value = params.get(key);
35
+ if (value && value.length > 0)
36
+ return value;
37
+ }
38
+ return undefined;
39
+ }
40
+ function readSearchBoolean(params, key) {
41
+ const value = params.get(key);
42
+ if (value === null)
43
+ return undefined;
44
+ if (value === 'true')
45
+ return true;
46
+ if (value === 'false')
47
+ return false;
48
+ return undefined;
49
+ }
50
+ function readSearchNumber(params, key) {
51
+ const value = params.get(key);
52
+ if (value === null)
53
+ return undefined;
54
+ const number = Number(value);
55
+ return Number.isFinite(number) ? number : undefined;
56
+ }
30
57
  function readStringArray(value) {
31
58
  return Array.isArray(value) && value.every((entry) => typeof entry === 'string')
32
59
  ? value
@@ -87,11 +114,116 @@ function parseJsonRef(value) {
87
114
  return null;
88
115
  }
89
116
  }
117
+ function parseGoodVibesSecretsUri(url) {
118
+ if (url.protocol !== GOODVIBES_URI_PROTOCOL || url.hostname !== GOODVIBES_SECRETS_HOST)
119
+ return null;
120
+ let rawSegments;
121
+ let segments;
122
+ try {
123
+ rawSegments = url.pathname.split('/').filter(Boolean);
124
+ segments = rawSegments.map((segment) => decodeURIComponent(segment));
125
+ }
126
+ catch {
127
+ return null;
128
+ }
129
+ const source = normalizeSource(segments[0] ?? '');
130
+ if (!source)
131
+ return null;
132
+ const rest = segments.slice(1);
133
+ const params = url.searchParams;
134
+ if (source === 'env') {
135
+ const id = rest[0] ?? readSearchString(params, 'id', 'key', 'name');
136
+ return id ? { source: 'env', id } : null;
137
+ }
138
+ if (source === 'goodvibes') {
139
+ const id = rest[0] ?? readSearchString(params, 'id', 'key', 'name');
140
+ return id ? { source: 'goodvibes', id } : null;
141
+ }
142
+ if (source === 'file') {
143
+ let path = readSearchString(params, 'path');
144
+ if (!path && rawSegments.length > 1) {
145
+ try {
146
+ path = decodeURIComponent(rawSegments.slice(1).join('/'));
147
+ }
148
+ catch {
149
+ return null;
150
+ }
151
+ }
152
+ return path ? { source: 'file', path, selector: readSearchString(params, 'selector', 'jsonPointer', 'field') } : null;
153
+ }
154
+ if (source === 'exec') {
155
+ const command = rest[0] ?? readSearchString(params, 'command', 'cmd');
156
+ if (!command)
157
+ return null;
158
+ const args = [...rest.slice(1), ...params.getAll('arg').filter((entry) => entry.length > 0)];
159
+ return {
160
+ source: 'exec',
161
+ command,
162
+ args: args.length > 0 ? args : undefined,
163
+ stdin: readSearchString(params, 'stdin'),
164
+ timeoutMs: readSearchNumber(params, 'timeoutMs'),
165
+ };
166
+ }
167
+ if (source === '1password' || source === 'onepassword') {
168
+ const ref = readSearchString(params, 'ref', 'uri');
169
+ const vault = readSearchString(params, 'vault') ?? rest[0];
170
+ const item = readSearchString(params, 'item', 'id') ?? rest[1];
171
+ const field = readSearchString(params, 'field') ?? rest[2];
172
+ if (!ref && (!vault || !item || !field))
173
+ return null;
174
+ return {
175
+ source,
176
+ ref,
177
+ vault,
178
+ item,
179
+ field,
180
+ account: readSearchString(params, 'account'),
181
+ cli: readSearchString(params, 'cli'),
182
+ timeoutMs: readSearchNumber(params, 'timeoutMs'),
183
+ };
184
+ }
185
+ if (source === 'bitwarden' || source === 'vaultwarden') {
186
+ const item = rest[0] ?? readSearchString(params, 'item', 'id', 'name');
187
+ if (!item)
188
+ return null;
189
+ return {
190
+ source,
191
+ item,
192
+ field: rest[1] ?? readSearchString(params, 'field') ?? 'password',
193
+ customField: readSearchString(params, 'customField'),
194
+ cli: readSearchString(params, 'cli'),
195
+ appDataDir: readSearchString(params, 'appDataDir'),
196
+ sessionEnv: readSearchString(params, 'sessionEnv'),
197
+ server: readSearchString(params, 'server', 'serverUrl'),
198
+ serverEnv: readSearchString(params, 'serverEnv'),
199
+ validateServer: readSearchBoolean(params, 'validateServer'),
200
+ syncBeforeRead: readSearchBoolean(params, 'syncBeforeRead'),
201
+ timeoutMs: readSearchNumber(params, 'timeoutMs'),
202
+ };
203
+ }
204
+ if (source === 'bitwarden-secrets-manager' || source === 'bws') {
205
+ const id = rest[0] ?? readSearchString(params, 'id', 'secretId', 'secret');
206
+ if (!id)
207
+ return null;
208
+ return {
209
+ source,
210
+ id,
211
+ field: rest[1] ?? readSearchString(params, 'field') ?? 'value',
212
+ cli: readSearchString(params, 'cli'),
213
+ accessTokenEnv: readSearchString(params, 'accessTokenEnv'),
214
+ profile: readSearchString(params, 'profile'),
215
+ configFile: readSearchString(params, 'configFile'),
216
+ serverUrl: readSearchString(params, 'serverUrl'),
217
+ timeoutMs: readSearchNumber(params, 'timeoutMs'),
218
+ };
219
+ }
220
+ return null;
221
+ }
90
222
  function parseProviderUri(value) {
91
223
  if (value.startsWith('op://')) {
92
224
  return { source: '1password', ref: value };
93
225
  }
94
- if (!value.startsWith(SECRET_URI_PREFIX) && !value.startsWith('bw://') && !value.startsWith('vaultwarden://') && !value.startsWith('bws://')) {
226
+ if (!value.startsWith(GOODVIBES_URI_PREFIX) && !value.startsWith('bw://') && !value.startsWith('vaultwarden://') && !value.startsWith('bws://')) {
95
227
  return null;
96
228
  }
97
229
  let url;
@@ -101,6 +233,9 @@ function parseProviderUri(value) {
101
233
  catch {
102
234
  return null;
103
235
  }
236
+ if (url.protocol === GOODVIBES_URI_PROTOCOL) {
237
+ return parseGoodVibesSecretsUri(url);
238
+ }
104
239
  const host = decodeURIComponent(url.hostname);
105
240
  const segments = url.pathname.split('/').filter(Boolean).map((segment) => decodeURIComponent(segment));
106
241
  if (url.protocol === 'bw:') {
@@ -1,6 +1,6 @@
1
1
  import { readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- let version = '0.23.1';
3
+ let version = '0.24.0';
4
4
  try {
5
5
  const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', '..', 'package.json'), 'utf-8'));
6
6
  version = pkg.version ?? version;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pellux/goodvibes-sdk",
3
- "version": "0.23.1",
3
+ "version": "0.24.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/mgd34msu/goodvibes-sdk.git"