ugly-app 0.1.619 → 0.1.620

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.
@@ -1,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.619";
1
+ export declare const CLI_VERSION = "0.1.620";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.619";
2
+ export const CLI_VERSION = "0.1.620";
3
3
  //# sourceMappingURL=version.js.map
@@ -6,6 +6,7 @@ export interface WebSearchLike {
6
6
  limit?: number;
7
7
  }, options?: {
8
8
  userId?: string;
9
+ token?: string;
9
10
  }): Promise<{
10
11
  items: {
11
12
  url: string;
@@ -18,6 +19,7 @@ export interface WebSearchLike {
18
19
  text?: string;
19
20
  }, options?: {
20
21
  userId?: string;
22
+ token?: string;
21
23
  }): Promise<{
22
24
  output: string;
23
25
  }>;
@@ -25,6 +27,11 @@ export interface WebSearchLike {
25
27
  export interface WebRetrieverOptions {
26
28
  /** Bill the search proxy to this user (charge context). */
27
29
  userId?: string;
30
+ /**
31
+ * The end user's ugly.bot session JWT. When set, the search proxy bills the
32
+ * USER (not the app owner). Omit for the default owner-billed behavior.
33
+ */
34
+ userToken?: string;
28
35
  /** Default result count. */
29
36
  limit?: number;
30
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WebRetriever.d.ts","sourceRoot":"","sources":["../../../src/search/server/WebRetriever.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE1F,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC5B,MAAM,CACJ,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EACzC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5B,OAAO,CAAC;QAAE,KAAK,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IACzE,SAAS,CAAC,CACR,MAAM,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EACvC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5B,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD,qBAAa,YAAa,YAAW,SAAS;IAI1C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJvB,QAAQ,CAAC,IAAI,SAAS;gBAGH,QAAQ,GAAE,aAAwC,EAClD,IAAI,GAAE,mBAAwB;IAG3C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAsBxE,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;CAcrD"}
1
+ {"version":3,"file":"WebRetriever.d.ts","sourceRoot":"","sources":["../../../src/search/server/WebRetriever.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE1F,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC5B,MAAM,CACJ,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EACzC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC;QAAE,KAAK,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IACzE,SAAS,CAAC,CACR,MAAM,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EACvC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD,qBAAa,YAAa,YAAW,SAAS;IAI1C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJvB,QAAQ,CAAC,IAAI,SAAS;gBAGH,QAAQ,GAAE,aAAwC,EAClD,IAAI,GAAE,mBAAwB;IAG3C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAsBxE,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;CAcrD"}
@@ -22,7 +22,7 @@ export class WebRetriever {
22
22
  }
23
23
  async retrieve(query, o) {
24
24
  const limit = o?.limit ?? this.opts.limit ?? 8;
25
- const { items } = await this.provider.search({ query, limit }, { userId: this.opts.userId });
25
+ const { items } = await this.provider.search({ query, limit }, { userId: this.opts.userId, token: this.opts.userToken });
26
26
  const n = Math.max(items.length, 1);
27
27
  return items.map((it, i) => ({
28
28
  id: it.url,
@@ -41,7 +41,7 @@ export class WebRetriever {
41
41
  async read(result) {
42
42
  if (this.provider.summarize && result.source.url) {
43
43
  try {
44
- const { output } = await this.provider.summarize({ url: result.source.url }, { userId: this.opts.userId });
44
+ const { output } = await this.provider.summarize({ url: result.source.url }, { userId: this.opts.userId, token: this.opts.userToken });
45
45
  if (output)
46
46
  return output;
47
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WebRetriever.js","sourceRoot":"","sources":["../../../src/search/server/WebRetriever.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,8EAA8E;AAC9E,iFAAiF;AACjF,yDAAyD;AAEzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AAsBjG,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,OAAO,YAAY;IAIJ;IACA;IAJV,IAAI,GAAG,KAAK,CAAC;IAEtB,YACmB,WAA0B,wBAAwB,EAClD,OAA4B,EAAE;QAD9B,aAAQ,GAAR,QAAQ,CAA0C;QAClD,SAAI,GAAJ,IAAI,CAA0B;IAC9C,CAAC;IAEJ,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,CAAmB;QAC/C,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAC1C,EAAE,KAAK,EAAE,KAAK,EAAE,EAChB,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAC7B,CAAC;QACF,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,EAAE,EAAE,EAAE,CAAC,GAAG;YACV,IAAI,EAAE,EAAE,CAAC,OAAO;YAChB,yEAAyE;YACzE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;YAChB,MAAM,EAAE;gBACN,IAAI,EAAE,KAAK;gBACX,GAAG,EAAE,EAAE,CAAC,GAAG;gBACX,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;aAC3B;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAuB;QAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC9C,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAC1B,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAC7B,CAAC;gBACF,IAAI,MAAM;oBAAE,OAAO,MAAM,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,0BAA0B;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"WebRetriever.js","sourceRoot":"","sources":["../../../src/search/server/WebRetriever.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,8EAA8E;AAC9E,iFAAiF;AACjF,yDAAyD;AAEzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AA2BjG,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,OAAO,YAAY;IAIJ;IACA;IAJV,IAAI,GAAG,KAAK,CAAC;IAEtB,YACmB,WAA0B,wBAAwB,EAClD,OAA4B,EAAE;QAD9B,aAAQ,GAAR,QAAQ,CAA0C;QAClD,SAAI,GAAJ,IAAI,CAA0B;IAC9C,CAAC;IAEJ,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,CAAmB;QAC/C,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAC1C,EAAE,KAAK,EAAE,KAAK,EAAE,EAChB,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CACzD,CAAC;QACF,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,EAAE,EAAE,EAAE,CAAC,GAAG;YACV,IAAI,EAAE,EAAE,CAAC,OAAO;YAChB,yEAAyE;YACzE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;YAChB,MAAM,EAAE;gBACN,IAAI,EAAE,KAAK;gBACX,GAAG,EAAE,EAAE,CAAC,GAAG;gBACX,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;aAC3B;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAuB;QAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC9C,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAC1B,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CACzD,CAAC;gBACF,IAAI,MAAM;oBAAE,OAAO,MAAM,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,0BAA0B;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"UglyBotWebSearchProvider.d.ts","sourceRoot":"","sources":["../../../../src/server/ai/providers/UglyBotWebSearchProvider.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAyDvE,eAAO,MAAM,wBAAwB,EAAE,iBAqDtC,CAAC"}
1
+ {"version":3,"file":"UglyBotWebSearchProvider.d.ts","sourceRoot":"","sources":["../../../../src/server/ai/providers/UglyBotWebSearchProvider.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAgEvE,eAAO,MAAM,wBAAwB,EAAE,iBAyDtC,CAAC"}
@@ -1,7 +1,10 @@
1
1
  const DEFAULT_SEARCH_PROXY_URL = 'https://api.ugly.bot/v1/search';
2
- function resolveSearchEndpoint(op) {
2
+ function resolveSearchEndpoint(op, userToken) {
3
3
  const base = process.env['SEARCH_PROXY_URL'] ?? DEFAULT_SEARCH_PROXY_URL;
4
- const token = process.env['SEARCH_PROXY_TOKEN'] ??
4
+ // A user session JWT (when supplied) bills the user via resolveChargePayer;
5
+ // otherwise fall back to the app's owner-billed proxy token.
6
+ const token = userToken ??
7
+ process.env['SEARCH_PROXY_TOKEN'] ??
5
8
  process.env['UGLY_BOT_TOKEN'] ??
6
9
  '';
7
10
  if (!token) {
@@ -11,8 +14,8 @@ function resolveSearchEndpoint(op) {
11
14
  }
12
15
  return { url: `${base}/${op}`, token };
13
16
  }
14
- async function searchProxyRequest(op, body) {
15
- const { url, token } = resolveSearchEndpoint(op);
17
+ async function searchProxyRequest(op, body, userToken) {
18
+ const { url, token } = resolveSearchEndpoint(op, userToken);
16
19
  const controller = new AbortController();
17
20
  const timer = setTimeout(() => controller.abort(), 30_000);
18
21
  try {
@@ -44,20 +47,20 @@ export const uglyBotWebSearchProvider = {
44
47
  name: 'uglybot',
45
48
  apiKeyEnv: 'SEARCH_PROXY_TOKEN',
46
49
  async search(params, options) {
47
- return searchProxyRequest('kagi', withChargeContext({ query: params.query, limit: params.limit }, options?.userId));
50
+ return searchProxyRequest('kagi', withChargeContext({ query: params.query, limit: params.limit }, options?.userId), options?.token);
48
51
  },
49
52
  async summarize(params, options) {
50
- const result = await searchProxyRequest('summarize', withChargeContext({ url: params.url, text: params.text }, options?.userId));
53
+ const result = await searchProxyRequest('summarize', withChargeContext({ url: params.url, text: params.text }, options?.userId), options?.token);
51
54
  return {
52
55
  output: result.summary,
53
56
  tokens: Math.ceil(result.summary.length / 4),
54
57
  };
55
58
  },
56
59
  async enrichWeb(params, options) {
57
- return searchProxyRequest('enrich-web', withChargeContext({ query: params.query }, options?.userId));
60
+ return searchProxyRequest('enrich-web', withChargeContext({ query: params.query }, options?.userId), options?.token);
58
61
  },
59
62
  async enrichNews(params, options) {
60
- return searchProxyRequest('enrich-news', withChargeContext({ query: params.query }, options?.userId));
63
+ return searchProxyRequest('enrich-news', withChargeContext({ query: params.query }, options?.userId), options?.token);
61
64
  },
62
65
  };
63
66
  //# sourceMappingURL=UglyBotWebSearchProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UglyBotWebSearchProvider.js","sourceRoot":"","sources":["../../../../src/server/ai/providers/UglyBotWebSearchProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UglyBotWebSearchProvider.js","sourceRoot":"","sources":["../../../../src/server/ai/providers/UglyBotWebSearchProvider.ts"],"names":[],"mappings":"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"}
@@ -179,6 +179,13 @@ export interface ImageGenProvider {
179
179
  }
180
180
  export interface WebSearchOptions {
181
181
  userId?: string;
182
+ /**
183
+ * The end user's ugly.bot session JWT. When set, the search proxy is called
184
+ * with THIS token instead of the app's `SEARCH_PROXY_TOKEN`, so ugly.bot bills
185
+ * the user (via `resolveChargePayer`) instead of the app owner. Omit to keep
186
+ * the default owner-billed behavior.
187
+ */
188
+ token?: string;
182
189
  }
183
190
  export interface WebSearchProvider {
184
191
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/ai/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/ai/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wGAAwG;IACxG,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;QAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF;;;OAGG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yGAAyG;IACzG,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,0BAA0B,EAAE,YAAY,CAAC;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO,CACtB,MAAM,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EAC1C,OAAO,GAAG,OAAO;IAEjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACvD;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,gFAAgF;AAChF,MAAM,WAAW,gBAAgB;IAC/B,qFAAqF;IACrF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,kFAAkF;IAClF,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IACzD;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,EAAE,CAAC;CACL;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,mBAAmB,CAAC;IAClC,yBAAyB,EAAE,MAAM,CAAC;IAClC,0BAA0B,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzE,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAClC,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,iBAAiB,CAAC,CAChB,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3B;;;;;OAKG;IACH,kBAAkB,CAAC,CACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,WAAW,EAAE,EACpB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7B;;;;;;;;;OASG;IACH,YAAY,CAAC,IAAI,YAAY,GAAG,IAAI,CAAC;IACrC;;;;;;;OAOG;IACH,gBAAgB,CAAC,IAAI;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAAC;QAClC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtE;AAID,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CACJ,MAAM,EAAE,OAAO,2BAA2B,EAAE,eAAe,EAC3D,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,OAAO,2BAA2B,EAAE,eAAe,CAAC,CAAC;IAChE,SAAS,CACP,MAAM,EAAE,OAAO,2BAA2B,EAAE,kBAAkB,EAC9D,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,SAAS,CACP,MAAM,EAAE,OAAO,2BAA2B,EAAE,eAAe,EAC3D,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,OAAO,2BAA2B,EAAE,eAAe,CAAC,CAAC;IAChE,UAAU,CACR,MAAM,EAAE,OAAO,2BAA2B,EAAE,eAAe,EAC3D,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,OAAO,2BAA2B,EAAE,eAAe,CAAC,CAAC;CACjE;AAED,qBAAa,kBAAmB,SAAQ,KAAK;aAEzB,SAAS,EAAE,OAAO;aAClB,WAAW,EAAE,MAAM;gBADnB,SAAS,EAAE,OAAO,EAClB,WAAW,EAAE,MAAM;CAKtC;AAED,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/server/ai/types.ts"],"names":[],"mappings":"AA2OA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAEzB;IACA;IAFlB,YACkB,SAAkB,EAClB,WAAmB;QAEnC,KAAK,CAAC,wDAAwD,SAAS,EAAE,CAAC,CAAC;QAH3D,cAAS,GAAT,SAAS,CAAS;QAClB,gBAAW,GAAX,WAAW,CAAQ;QAGnC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/server/ai/types.ts"],"names":[],"mappings":"AAkPA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAEzB;IACA;IAFlB,YACkB,SAAkB,EAClB,WAAmB;QAEnC,KAAK,CAAC,wDAAwD,SAAS,EAAE,CAAC,CAAC;QAH3D,cAAS,GAAT,SAAS,CAAS;QAClB,gBAAW,GAAX,WAAW,CAAQ;QAGnC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugly-app",
3
- "version": "0.1.619",
3
+ "version": "0.1.620",
4
4
  "type": "module",
5
5
  "comment:files": "Allowlist what ships to npm. dist = runtime; src = sourcemap targets (dist/*.js.map reference ../../src/); templates = CLI scaffold. Everything else at repo root (.pgdata local Postgres, coverage, assets/icons sources, test/, test-results/) is excluded by omission. The !negations strip the scaffold's installed deps + cruft (templates/node_modules is 200MB+ and must never ship). package.json/README/LICENSE ship automatically.",
6
6
  "files": [
@@ -1,2 +1,2 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.619";
2
+ export const CLI_VERSION = "0.1.620";
@@ -11,17 +11,22 @@ import type { Retriever, RetrievalResult, RetrieveOptions } from '../shared/Retr
11
11
  export interface WebSearchLike {
12
12
  search(
13
13
  params: { query: string; limit?: number },
14
- options?: { userId?: string },
14
+ options?: { userId?: string; token?: string },
15
15
  ): Promise<{ items: { url: string; title: string; snippet: string }[] }>;
16
16
  summarize?(
17
17
  params: { url?: string; text?: string },
18
- options?: { userId?: string },
18
+ options?: { userId?: string; token?: string },
19
19
  ): Promise<{ output: string }>;
20
20
  }
21
21
 
22
22
  export interface WebRetrieverOptions {
23
23
  /** Bill the search proxy to this user (charge context). */
24
24
  userId?: string;
25
+ /**
26
+ * The end user's ugly.bot session JWT. When set, the search proxy bills the
27
+ * USER (not the app owner). Omit for the default owner-billed behavior.
28
+ */
29
+ userToken?: string;
25
30
  /** Default result count. */
26
31
  limit?: number;
27
32
  }
@@ -46,7 +51,7 @@ export class WebRetriever implements Retriever {
46
51
  const limit = o?.limit ?? this.opts.limit ?? 8;
47
52
  const { items } = await this.provider.search(
48
53
  { query, limit },
49
- { userId: this.opts.userId },
54
+ { userId: this.opts.userId, token: this.opts.userToken },
50
55
  );
51
56
  const n = Math.max(items.length, 1);
52
57
  return items.map((it, i) => ({
@@ -69,7 +74,7 @@ export class WebRetriever implements Retriever {
69
74
  try {
70
75
  const { output } = await this.provider.summarize(
71
76
  { url: result.source.url },
72
- { userId: this.opts.userId },
77
+ { userId: this.opts.userId, token: this.opts.userToken },
73
78
  );
74
79
  if (output) return output;
75
80
  } catch {
@@ -23,9 +23,15 @@ import type { WebSearchOptions, WebSearchProvider } from '../types.js';
23
23
 
24
24
  const DEFAULT_SEARCH_PROXY_URL = 'https://api.ugly.bot/v1/search';
25
25
 
26
- function resolveSearchEndpoint(op: string): { url: string; token: string } {
26
+ function resolveSearchEndpoint(
27
+ op: string,
28
+ userToken?: string,
29
+ ): { url: string; token: string } {
27
30
  const base = process.env['SEARCH_PROXY_URL'] ?? DEFAULT_SEARCH_PROXY_URL;
31
+ // A user session JWT (when supplied) bills the user via resolveChargePayer;
32
+ // otherwise fall back to the app's owner-billed proxy token.
28
33
  const token =
34
+ userToken ??
29
35
  process.env['SEARCH_PROXY_TOKEN'] ??
30
36
  process.env['UGLY_BOT_TOKEN'] ??
31
37
  '';
@@ -42,8 +48,9 @@ function resolveSearchEndpoint(op: string): { url: string; token: string } {
42
48
  async function searchProxyRequest<T>(
43
49
  op: string,
44
50
  body: Record<string, unknown>,
51
+ userToken?: string,
45
52
  ): Promise<T> {
46
- const { url, token } = resolveSearchEndpoint(op);
53
+ const { url, token } = resolveSearchEndpoint(op, userToken);
47
54
  const controller = new AbortController();
48
55
  const timer = setTimeout(() => controller.abort(), 30_000);
49
56
  try {
@@ -90,6 +97,7 @@ export const uglyBotWebSearchProvider: WebSearchProvider = {
90
97
  { query: params.query, limit: params.limit },
91
98
  options?.userId,
92
99
  ),
100
+ options?.token,
93
101
  );
94
102
  },
95
103
 
@@ -103,6 +111,7 @@ export const uglyBotWebSearchProvider: WebSearchProvider = {
103
111
  { url: params.url, text: params.text },
104
112
  options?.userId,
105
113
  ),
114
+ options?.token,
106
115
  );
107
116
  return {
108
117
  output: result.summary,
@@ -117,6 +126,7 @@ export const uglyBotWebSearchProvider: WebSearchProvider = {
117
126
  return searchProxyRequest<WebSearchOutput>(
118
127
  'enrich-web',
119
128
  withChargeContext({ query: params.query }, options?.userId),
129
+ options?.token,
120
130
  );
121
131
  },
122
132
 
@@ -127,6 +137,7 @@ export const uglyBotWebSearchProvider: WebSearchProvider = {
127
137
  return searchProxyRequest<WebSearchOutput>(
128
138
  'enrich-news',
129
139
  withChargeContext({ query: params.query }, options?.userId),
140
+ options?.token,
130
141
  );
131
142
  },
132
143
  };
@@ -210,6 +210,13 @@ export interface ImageGenProvider {
210
210
 
211
211
  export interface WebSearchOptions {
212
212
  userId?: string;
213
+ /**
214
+ * The end user's ugly.bot session JWT. When set, the search proxy is called
215
+ * with THIS token instead of the app's `SEARCH_PROXY_TOKEN`, so ugly.bot bills
216
+ * the user (via `resolveChargePayer`) instead of the app owner. Omit to keep
217
+ * the default owner-billed behavior.
218
+ */
219
+ token?: string;
213
220
  }
214
221
 
215
222
  export interface WebSearchProvider {