clefbase 1.5.2 → 2.0.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.
package/dist/ai.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
package/dist/app.d.ts CHANGED
@@ -4,6 +4,7 @@ import { Auth } from "./auth";
4
4
  import { ClefbaseStorage } from "./storage";
5
5
  import { ClefbaseHosting } from "./hosting";
6
6
  import { ClefbaseFunctions } from "./functions";
7
+ import { ClefbaseAI } from "./ai";
7
8
  import type { ClefbaseConfig } from "./types";
8
9
  /**
9
10
  * A Clefbase application instance.
@@ -16,11 +17,13 @@ export declare class ClefbaseApp {
16
17
  /** @internal */ readonly _storageHttp: HttpClient;
17
18
  /** @internal */ readonly _hostingHttp: HttpClient;
18
19
  /** @internal */ readonly _functionsHttp: HttpClient;
20
+ /** @internal */ readonly _aiHttp: HttpClient;
19
21
  private _db;
20
22
  private _auth;
21
23
  private _storage;
22
24
  private _hosting;
23
25
  private _functions;
26
+ private _ai;
24
27
  constructor(config: ClefbaseConfig);
25
28
  /** @internal */
26
29
  _getDb(): Database;
@@ -32,6 +35,8 @@ export declare class ClefbaseApp {
32
35
  _getHosting(): ClefbaseHosting;
33
36
  /** @internal */
34
37
  _getFunctions(): ClefbaseFunctions;
38
+ /** @internal */
39
+ _getAI(): ClefbaseAI;
35
40
  }
36
41
  /**
37
42
  * Initialise a Clefbase app. Call once at startup.
@@ -69,4 +74,39 @@ export declare function getHosting(app?: ClefbaseApp): ClefbaseHosting;
69
74
  * const { data } = await greet({ name: "Alice" });
70
75
  */
71
76
  export declare function getFunctions(app?: ClefbaseApp): ClefbaseFunctions;
77
+ /**
78
+ * Get the AI service.
79
+ *
80
+ * @example
81
+ * import { initClefbase, getAI } from "clefbase";
82
+ *
83
+ * const app = initClefbase({ serverUrl, projectId, apiKey, adminSecret: "" });
84
+ * const ai = getAI(app);
85
+ *
86
+ * // Text generation
87
+ * const { content } = await ai.text({
88
+ * model: "claude-sonnet-4-5",
89
+ * prompt: "Explain closures in JavaScript",
90
+ * });
91
+ *
92
+ * // Image generation — saved to project Storage automatically
93
+ * const { files } = await ai.image({
94
+ * model: "imagen-3.0-generate-002",
95
+ * prompt: "A futuristic cityscape at sunset",
96
+ * });
97
+ *
98
+ * // Video generation
99
+ * const { status, files: videoFiles } = await ai.video({
100
+ * model: "veo-2.0-generate-001",
101
+ * prompt: "A dog running on a beach",
102
+ * durationSeconds: 5,
103
+ * });
104
+ *
105
+ * // Embeddings
106
+ * const { embeddings } = await ai.embedding({
107
+ * model: "text-embedding-004",
108
+ * input: ["Hello", "World"],
109
+ * });
110
+ */
111
+ export declare function getAI(app?: ClefbaseApp): ClefbaseAI;
72
112
  //# sourceMappingURL=app.d.ts.map
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C;;;GAGG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAS,UAAU,CAAC;IACrD,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAO,UAAU,CAAC;IACrD,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAI,UAAU,CAAC;IACrD,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAI,UAAU,CAAC;IACrD,gBAAgB,CAAC,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;IAErD,OAAO,CAAC,GAAG,CAAuC;IAClD,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,UAAU,CAAgC;gBAEtC,MAAM,EAAE,cAAc;IAsBlC,gBAAgB;IAChB,MAAM,IAAI,QAAQ;IAKlB,gBAAgB;IAChB,QAAQ,IAAI,IAAI;IAKhB,gBAAgB;IAChB,WAAW,IAAI,eAAe;IAU9B,gBAAgB;IAChB,WAAW,IAAI,eAAe;IAU9B,gBAAgB;IAChB,aAAa,IAAI,iBAAiB;CAKnC;AAOD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE,MAAgB,GACrB,WAAW,CAKb;AAED,wEAAwE;AACxE,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAgB,GAAG,WAAW,CAQ1D;AAID,gCAAgC;AAChC,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,QAAQ,CAEvD;AAED,4BAA4B;AAC5B,wBAAgB,OAAO,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,CAE/C;AAED,+BAA+B;AAC/B,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,eAAe,CAE7D;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,eAAe,CAE7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAEjE"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C;;;GAGG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAS,UAAU,CAAC;IACrD,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAO,UAAU,CAAC;IACrD,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAI,UAAU,CAAC;IACrD,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAI,UAAU,CAAC;IACrD,gBAAgB,CAAC,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;IACrD,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAS,UAAU,CAAC;IAErD,OAAO,CAAC,GAAG,CAAuC;IAClD,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,GAAG,CAAuC;gBAEtC,MAAM,EAAE,cAAc;IAclC,gBAAgB;IAChB,MAAM,IAAI,QAAQ;IAKlB,gBAAgB;IAChB,QAAQ,IAAI,IAAI;IAKhB,gBAAgB;IAChB,WAAW,IAAI,eAAe;IAU9B,gBAAgB;IAChB,WAAW,IAAI,eAAe;IAU9B,gBAAgB;IAChB,aAAa,IAAI,iBAAiB;IAMlC,gBAAgB;IAChB,MAAM,IAAI,UAAU;CAKrB;AAOD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE,MAAgB,GACrB,WAAW,CAKb;AAED,wEAAwE;AACxE,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAgB,GAAG,WAAW,CAQ1D;AAID,gCAAgC;AAChC,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,QAAQ,CAEvD;AAED,4BAA4B;AAC5B,wBAAgB,OAAO,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,CAE/C;AAED,+BAA+B;AAC/B,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,eAAe,CAE7D;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,eAAe,CAE7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAEjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,UAAU,CAEnD"}
package/dist/app.js CHANGED
@@ -8,12 +8,14 @@ exports.getAuth = getAuth;
8
8
  exports.getStorage = getStorage;
9
9
  exports.getHosting = getHosting;
10
10
  exports.getFunctions = getFunctions;
11
+ exports.getAI = getAI;
11
12
  const http_1 = require("./http");
12
13
  const db_1 = require("./db");
13
14
  const auth_1 = require("./auth");
14
15
  const storage_1 = require("./storage");
15
16
  const hosting_1 = require("./hosting");
16
17
  const functions_1 = require("./functions");
18
+ const ai_1 = require("./ai");
17
19
  // ─── App ──────────────────────────────────────────────────────────────────────
18
20
  /**
19
21
  * A Clefbase application instance.
@@ -30,14 +32,7 @@ class ClefbaseApp {
30
32
  this._storageHttp = new http_1.HttpClient(`${base}/storage`, cfxKey);
31
33
  this._hostingHttp = new http_1.HttpClient(`${base}/api/hosting`, admin);
32
34
  this._functionsHttp = new http_1.HttpClient(`${base}/functions`, cfxKey);
33
- // Forward the signed-in user's session token to all data-plane clients so
34
- // that server-side security rules can resolve request.auth. The provider
35
- // is a live closure — it reads from the Auth session store on every request,
36
- // so sign-in / sign-out is reflected immediately with no extra wiring.
37
- const tokenProvider = () => this._getAuth().currentToken;
38
- this._dbHttp.setTokenProvider(tokenProvider);
39
- this._storageHttp.setTokenProvider(tokenProvider);
40
- this._functionsHttp.setTokenProvider(tokenProvider);
35
+ this._aiHttp = new http_1.HttpClient(`${base}/ai`, cfxKey);
41
36
  }
42
37
  /** @internal */
43
38
  _getDb() {
@@ -69,6 +64,12 @@ class ClefbaseApp {
69
64
  this._functions = new functions_1.ClefbaseFunctions(this._functionsHttp);
70
65
  return this._functions;
71
66
  }
67
+ /** @internal */
68
+ _getAI() {
69
+ if (!this._ai)
70
+ this._ai = new ai_1.ClefbaseAI(this._aiHttp);
71
+ return this._ai;
72
+ }
72
73
  }
73
74
  exports.ClefbaseApp = ClefbaseApp;
74
75
  // ─── Registry ─────────────────────────────────────────────────────────────────
@@ -133,4 +134,41 @@ function getHosting(app) {
133
134
  function getFunctions(app) {
134
135
  return (app ?? getApp())._getFunctions();
135
136
  }
137
+ /**
138
+ * Get the AI service.
139
+ *
140
+ * @example
141
+ * import { initClefbase, getAI } from "clefbase";
142
+ *
143
+ * const app = initClefbase({ serverUrl, projectId, apiKey, adminSecret: "" });
144
+ * const ai = getAI(app);
145
+ *
146
+ * // Text generation
147
+ * const { content } = await ai.text({
148
+ * model: "claude-sonnet-4-5",
149
+ * prompt: "Explain closures in JavaScript",
150
+ * });
151
+ *
152
+ * // Image generation — saved to project Storage automatically
153
+ * const { files } = await ai.image({
154
+ * model: "imagen-3.0-generate-002",
155
+ * prompt: "A futuristic cityscape at sunset",
156
+ * });
157
+ *
158
+ * // Video generation
159
+ * const { status, files: videoFiles } = await ai.video({
160
+ * model: "veo-2.0-generate-001",
161
+ * prompt: "A dog running on a beach",
162
+ * durationSeconds: 5,
163
+ * });
164
+ *
165
+ * // Embeddings
166
+ * const { embeddings } = await ai.embedding({
167
+ * model: "text-embedding-004",
168
+ * input: ["Hello", "World"],
169
+ * });
170
+ */
171
+ function getAI(app) {
172
+ return (app ?? getApp())._getAI();
173
+ }
136
174
  //# sourceMappingURL=app.js.map
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":";;;AAgHA,oCAQC;AAGD,wBAQC;AAKD,kCAEC;AAGD,0BAEC;AAGD,gCAEC;AAGD,gCAEC;AAcD,oCAEC;AAoCD,sBAEC;AA/MD,iCAAoC;AACpC,6BAAgC;AAChC,iCAA8B;AAC9B,uCAA4C;AAC5C,uCAA4C;AAC5C,2CAAgD;AAChD,6BAAkC;AAGlC,iFAAiF;AAEjF;;;GAGG;AACH,MAAa,WAAW;IAiBtB,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,IAAI,GAAK,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,EAAE,WAAW,EAAO,MAAM,CAAC,MAAM,EAAE,CAAC;QACnD,MAAM,KAAK,GAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAE9D,IAAI,CAAC,OAAO,GAAU,IAAI,iBAAU,CAAC,GAAG,IAAI,KAAK,EAAW,MAAM,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,GAAQ,IAAI,iBAAU,CAAC,GAAG,IAAI,OAAO,EAAS,MAAM,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,GAAK,IAAI,iBAAU,CAAC,GAAG,IAAI,UAAU,EAAM,MAAM,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,GAAK,IAAI,iBAAU,CAAC,GAAG,IAAI,cAAc,EAAE,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,GAAG,IAAI,iBAAU,CAAC,GAAG,IAAI,YAAY,EAAI,MAAM,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,GAAU,IAAI,iBAAU,CAAC,GAAG,IAAI,KAAK,EAAW,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,gBAAgB;IAChB,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,GAAG,GAAG,IAAI,aAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,WAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,gBAAgB;IAChB,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAe,CACjC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB,IAAI,CAAC,QAAQ,EAAE,CAChB,CAAC;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,gBAAgB;IAChB,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAe,CACjC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB,IAAI,CAAC,MAAM,CAAC,SAAS,CACtB,CAAC;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,gBAAgB;IAChB,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,UAAU;YAClB,IAAI,CAAC,UAAU,GAAG,IAAI,6BAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,gBAAgB;IAChB,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,GAAG;YACX,IAAI,CAAC,GAAG,GAAG,IAAI,eAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF;AA9ED,kCA8EC;AAED,iFAAiF;AAEjF,MAAM,OAAO,GAAG,WAAW,CAAC;AAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAC1B,MAAsB,EACtB,OAAe,OAAO;IAEtB,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wEAAwE;AACxE,SAAgB,MAAM,CAAC,OAAe,OAAO;IAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,iBAAiB,IAAI,wDAAwD,CAC9E,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iFAAiF;AAEjF,gCAAgC;AAChC,SAAgB,WAAW,CAAC,GAAiB;IAC3C,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACpC,CAAC;AAED,4BAA4B;AAC5B,SAAgB,OAAO,CAAC,GAAiB;IACvC,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtC,CAAC;AAED,+BAA+B;AAC/B,SAAgB,UAAU,CAAC,GAAiB;IAC1C,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACzC,CAAC;AAED,iEAAiE;AACjE,SAAgB,UAAU,CAAC,GAAiB;IAC1C,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAAC,GAAiB;IAC5C,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,SAAgB,KAAK,CAAC,GAAiB;IACrC,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACpC,CAAC"}
package/dist/cli.js CHANGED
@@ -34878,7 +34878,7 @@ async function promptRequired(message) {
34878
34878
  }
34879
34879
 
34880
34880
  // package.json
34881
- var version = "1.5.2";
34881
+ var version = "2.0.0";
34882
34882
 
34883
34883
  // src/cli/index.ts
34884
34884
  var program2 = new Command();
package/dist/http.d.ts CHANGED
@@ -11,23 +11,7 @@ export interface RequestOptions {
11
11
  export declare class HttpClient {
12
12
  private readonly baseUrl;
13
13
  private readonly defaultHeaders;
14
- /**
15
- * Optional dynamic token provider. When set, the returned token is attached
16
- * as `Authorization: Bearer <token>` on every request — unless the caller
17
- * already provides an explicit `Authorization` header.
18
- *
19
- * Set via `setTokenProvider()` after construction. Used by the Database
20
- * client to forward the signed-in user's session token so that server-side
21
- * security rules can resolve `request.auth`.
22
- */
23
- private _tokenProvider;
24
14
  constructor(baseUrl: string, defaultHeaders?: Record<string, string>);
25
- /**
26
- * Attach a live token provider. Called once by `ClefbaseApp` after both
27
- * the db and auth clients are wired together.
28
- * @internal
29
- */
30
- setTokenProvider(provider: () => string | null): void;
31
15
  private mergeHeaders;
32
16
  request<T>(path: string, opts?: RequestOptions): Promise<T>;
33
17
  getBaseUrl(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAID,qBAAa,UAAU;IAanB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAbjC;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc,CAAsC;gBAGzC,OAAO,EAAE,MAAM,EACf,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAG9D;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI;IAIrD,OAAO,CAAC,YAAY;IAcd,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAyCrE,UAAU,IAAI,MAAM;IAEpB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAInF,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlF,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIpF,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAGtE"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAID,qBAAa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,OAAO,EAAE,MAAM,EACf,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAG9D,OAAO,CAAC,YAAY;IASd,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAyCrE,UAAU,IAAI,MAAM;IAEpB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAInF,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlF,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIpF,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAGtE"}
package/dist/http.js CHANGED
@@ -59,35 +59,11 @@ class HttpClient {
59
59
  constructor(baseUrl, defaultHeaders = {}) {
60
60
  this.baseUrl = baseUrl;
61
61
  this.defaultHeaders = defaultHeaders;
62
- /**
63
- * Optional dynamic token provider. When set, the returned token is attached
64
- * as `Authorization: Bearer <token>` on every request — unless the caller
65
- * already provides an explicit `Authorization` header.
66
- *
67
- * Set via `setTokenProvider()` after construction. Used by the Database
68
- * client to forward the signed-in user's session token so that server-side
69
- * security rules can resolve `request.auth`.
70
- */
71
- this._tokenProvider = null;
72
- }
73
- /**
74
- * Attach a live token provider. Called once by `ClefbaseApp` after both
75
- * the db and auth clients are wired together.
76
- * @internal
77
- */
78
- setTokenProvider(provider) {
79
- this._tokenProvider = provider;
80
62
  }
81
63
  mergeHeaders(extra, isFormData) {
82
64
  const merged = { ...this.defaultHeaders, ...extra };
83
65
  if (!isFormData)
84
66
  merged["Content-Type"] = "application/json";
85
- // Inject the user's auth token if available and not already overridden
86
- if (!merged["Authorization"] && this._tokenProvider) {
87
- const token = this._tokenProvider();
88
- if (token)
89
- merged["Authorization"] = `Bearer ${token}`;
90
- }
91
67
  return merged;
92
68
  }
93
69
  async request(path, opts = {}) {
package/dist/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAwC;AAExC,iFAAiF;AAEjF,KAAK,UAAU,YAAY;IACzB,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC3C,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,wDAAa,YAAY,GAAC,CAAC;QACvC,OAAO,GAAG,CAAC,OAAkC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,qBAAa,CACrB,gFAAgF,EAChF,eAAe,CAChB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,IAAI,WAAW,GAAwB,IAAI,CAAC;AAC5C,KAAK,UAAU,QAAQ;IACrB,IAAI,CAAC,WAAW;QAAE,WAAW,GAAG,MAAM,YAAY,EAAE,CAAC;IACrD,OAAO,WAAW,CAAC;AACrB,CAAC;AAeD,iFAAiF;AAEjF,MAAa,UAAU;IAYrB,YACmB,OAAe,EACf,iBAAyC,EAAE;QAD3C,YAAO,GAAP,OAAO,CAAQ;QACf,mBAAc,GAAd,cAAc,CAA6B;QAb9D;;;;;;;;WAQG;QACK,mBAAc,GAAiC,IAAI,CAAC;IAKzD,CAAC;IAEJ;;;;OAIG;IACH,gBAAgB,CAAC,QAA6B;QAC5C,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;IACjC,CAAC;IAEO,YAAY,CAClB,KAA6B,EAC7B,UAAmB;QAEnB,MAAM,MAAM,GAA2B,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,KAAK,EAAE,CAAC;QAC5E,IAAI,CAAC,UAAU;YAAE,MAAM,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAC7D,uEAAuE;QACvE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACpC,IAAI,KAAK;gBAAE,MAAM,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;QACzD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,OAAuB,EAAE;QACtD,MAAM,OAAO,GAAG,MAAM,QAAQ,EAAE,CAAC;QACjC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;QACxE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QAErC,MAAM,IAAI,GAAgB;YACxB,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC;SAChD,CAAC;QAEF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAE,IAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,qBAAa,CACrB,kBAAmB,UAAoB,CAAC,OAAO,IAAI,SAAS,EAAE,EAC9D,eAAe,CAChB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,OAAO,GAAG,mBAAmB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YAChE,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;gBACzD,IAAI,OAAO,CAAC,KAAK;oBAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;YACtC,MAAM,IAAI,qBAAa,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACxD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,aAAa,KAAK,GAAG,EAAE,CAAC;YAChD,OAAO,SAAyB,CAAC;QACnC,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;IAClC,CAAC;IAED,UAAU,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAE7C,GAAG,CAAI,IAAY,EAAE,OAAgC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAI,IAAY,EAAE,IAAc,EAAE,OAAgC;QACpE,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,GAAG,CAAI,IAAY,EAAE,IAAc,EAAE,OAAgC;QACnE,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAI,IAAY,EAAE,IAAc,EAAE,OAAgC;QACrE,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAI,IAAY,EAAE,OAAgC;QACtD,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF;AAtGD,gCAsGC"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,58 +4,94 @@
4
4
  * @example
5
5
  * import {
6
6
  * initClefbase, getDatabase, getAuth, getStorage, getHosting,
7
- * getFunctions, httpsCallable, callFunction, deployFunction, deployFromFile,
8
- * setAuthToken, FunctionsError, FieldValue,
7
+ * getFunctions, getAI,
8
+ * httpsCallable, callFunction, deployFunction, deployFromFile,
9
+ * generateText, generateImage, generateVideo, generateEmbedding,
10
+ * setAuthToken, FunctionsError, AIError, FieldValue,
9
11
  * } from "clefbase";
10
12
  *
11
- * const app = initClefbase({ serverUrl, projectId, apiKey, adminSecret: "" });
12
- * const fns = getFunctions(app);
13
- * const auth = getAuth(app);
13
+ * const app = initClefbase({ serverUrl, projectId, apiKey, adminSecret: "" });
14
14
  *
15
- * // ── Auth-aware function call ───────────────────────────────────────────────
15
+ * // ── Auth ──────────────────────────────────────────────────────────────────
16
+ * const auth = getAuth(app);
16
17
  * const { token } = await auth.signIn("alice@example.com", "password123");
17
- * setAuthToken(app, token); // ctx.auth.uid / email now available in function
18
18
  *
19
- * // ── Typed callable ────────────────────────────────────────────────────────
19
+ * // ── Database ──────────────────────────────────────────────────────────────
20
+ * const db = getDatabase(app);
21
+ * await db.collection("posts").doc("p1").update({
22
+ * views: FieldValue.increment(1),
23
+ * publishedAt: FieldValue.serverTimestamp(),
24
+ * });
25
+ *
26
+ * // ── Storage ───────────────────────────────────────────────────────────────
27
+ * const storage = getStorage(app);
28
+ * const url = await storage.ref("avatars/user-123.jpg").getDownloadURL();
29
+ *
30
+ * // ── Functions ─────────────────────────────────────────────────────────────
31
+ * const fns = getFunctions(app);
20
32
  * const greet = httpsCallable<{ name: string }, { message: string }>(fns, "greetUser");
21
33
  * const { data } = await greet({ name: "Alice" });
22
34
  *
23
- * // ── One-shot call ─────────────────────────────────────────────────────────
24
- * const { data } = await callFunction(fns, "greetUser", { name: "Bob" });
35
+ * // ── AI text / code ──────────────────────────────────────────────────────
36
+ * const ai = getAI(app);
25
37
  *
26
- * // ── Deploy from source ────────────────────────────────────────────────────
27
- * await deployFunction(fns, {
28
- * name: "greetUser",
29
- * runtime: "node",
30
- * trigger: { type: "http" },
31
- * source: `export async function handler(ctx) { return { message: "Hi " + ctx.data.name }; }`,
38
+ * const { content } = await ai.text({
39
+ * model: "claude-sonnet-4-5",
40
+ * prompt: "Explain async/await in JavaScript",
32
41
  * });
33
42
  *
34
- * // ── Deploy from file (Node.js) ────────────────────────────────────────────
35
- * await deployFromFile(fns, {
36
- * name: "processOrder",
37
- * runtime: "node",
38
- * trigger: { type: "http" },
39
- * filePath: "./src/functions/processOrder.ts",
43
+ * // Multi-turn chat
44
+ * const reply = await ai.text({
45
+ * model: "gemini-2.5-flash",
46
+ * prompt: "Give me a harder example",
47
+ * systemPrompt: "You are a JavaScript tutor.",
48
+ * history: [{ role: "user", content: "Explain closures" }, { role: "assistant", content: "..." }],
40
49
  * });
41
50
  *
42
- * // ── Error handling ────────────────────────────────────────────────────────
43
- * try {
44
- * await callFunction(fns, "mayFail");
45
- * } catch (err) {
46
- * if (err instanceof FunctionsError) {
47
- * console.error(err.httpStatus, err.message);
48
- * }
49
- * }
51
+ * // ── AI image generation (auto-saved to Storage) ─────────────────────────
52
+ * const { files } = await ai.image({
53
+ * model: "imagen-4.0-generate-001",
54
+ * prompt: "A serene mountain lake at dawn, photorealistic",
55
+ * aspectRatio: "16:9",
56
+ * numberOfImages: 2,
57
+ * outputFolder: "landscapes",
58
+ * });
59
+ * // files[].fullPath → path in project Storage
60
+ * // files[].storageFileId → use with storage.ref() to get the download URL
50
61
  *
51
- * // ── Database ──────────────────────────────────────────────────────────────
52
- * const db = getDatabase(app);
53
- * await db.collection("posts").doc("p1").update({
54
- * views: FieldValue.increment(1),
55
- * publishedAt: FieldValue.serverTimestamp(),
62
+ * // ── AI — video generation (auto-saved to Storage) ─────────────────────────
63
+ * const { status, files: clips } = await ai.video({
64
+ * model: "veo-3.1-generate-preview",
65
+ * prompt: "A slow-motion waterfall in a rainforest",
66
+ * durationSeconds: 8,
67
+ * aspectRatio: "16:9",
68
+ * });
69
+ *
70
+ * // ── AI — embeddings ───────────────────────────────────────────────────────
71
+ * const { embeddings } = await ai.embedding({
72
+ * model: "gemini-embedding-001",
73
+ * input: ["Hello world", "Semantic search"],
74
+ * });
75
+ *
76
+ * // ── AI — browse models ────────────────────────────────────────────────────
77
+ * const imageModels = await ai.listModels({ category: "image" });
78
+ * const allModels = await ai.listModels();
79
+ *
80
+ * // ── AI — usage stats ──────────────────────────────────────────────────────
81
+ * const stats = await ai.getStats();
82
+ * const history = await ai.getUsage({ limit: 20 });
83
+ *
84
+ * // ── AI — convenience top-level functions ──────────────────────────────────
85
+ * const { content: code } = await generateText(ai, {
86
+ * model: "claude-sonnet-4-5",
87
+ * prompt: "Write a merge sort in TypeScript",
88
+ * });
89
+ * const { files: imgs } = await generateImage(ai, {
90
+ * model: "imagen-4.0-fast-generate-001",
91
+ * prompt: "A cute cartoon robot",
56
92
  * });
57
93
  */
58
- export { ClefbaseApp, initClefbase, getApp, getDatabase, getAuth, getStorage, getHosting, getFunctions, } from "./app";
94
+ export { ClefbaseApp, initClefbase, getApp, getDatabase, getAuth, getStorage, getHosting, getFunctions, getAI, } from "./app";
59
95
  export { Database, CollectionReference, CollectionGroup, DocumentReference, Query, WriteBatch, Transaction, runTransaction, } from "./db";
60
96
  export { Auth } from "./auth";
61
97
  export type { GoogleButtonOptions } from "./auth";
@@ -67,6 +103,8 @@ export { ClefbaseHosting, SiteReference } from "./hosting";
67
103
  export type { HostingSite, HostingDeploy, HostingFile, DeployResult, DeployOptions, HostingStatus, DeployStatus, } from "./hosting";
68
104
  export { ClefbaseFunctions, FunctionsError, httpsCallable, callFunction, deployFunction, deleteFunction, listFunctions, getFunctionExecutions, setAuthToken, deployFromFile, } from "./functions";
69
105
  export type { FunctionRuntime, FunctionTrigger, FunctionTriggerType, FunctionDef, FunctionExecution, FunctionsConfig, FunctionStats, DeployFunctionOptions, HttpsCallableResult, } from "./functions";
106
+ export { ClefbaseAI, AIError, generateText, generateImage, generateVideo, generateEmbedding, } from "./ai";
107
+ export type { AIModel, AIProvider, AIModelCategory, GenerateTextOptions, GenerateTextResult, GenerateImageOptions, GenerateImageResult, GeneratedMediaFile, GenerateVideoOptions, GenerateVideoResult, GenerateEmbeddingOptions, GenerateEmbeddingResult, AIUsageRecord, AIUsageStats, } from "./ai";
70
108
  export { FieldValue, FieldValueSentinel } from "./field_value";
71
109
  export type { FieldValueType } from "./field_value";
72
110
  export type { ClefbaseConfig, ClefbaseDocument, QueryOptions, QueryResult, FilterOperator, WhereClause, WhereValue, AuthUser, AuthSession, AuthResult, } from "./types";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAGH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,MAAM,EACN,WAAW,EACX,OAAO,EACP,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,KAAK,EACL,UAAU,EACV,WAAW,EACX,cAAc,GACf,MAAM,MAAM,CAAC;AAGd,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAGlD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC/E,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC3D,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,GACb,MAAM,WAAW,CAAC;AAGnB,OAAO,EAEL,iBAAiB,EAEjB,cAAc,EAEd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FG;AAGH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,MAAM,EACN,WAAW,EACX,OAAO,EACP,UAAU,EACV,UAAU,EACV,YAAY,EACZ,KAAK,GACN,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,KAAK,EACL,UAAU,EACV,WAAW,EACX,cAAc,GACf,MAAM,MAAM,CAAC;AAGd,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAGlD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC/E,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC3D,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,GACb,MAAM,WAAW,CAAC;AAGnB,OAAO,EAEL,iBAAiB,EAEjB,cAAc,EAEd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAEL,UAAU,EAEV,OAAO,EAEP,YAAY,EACZ,aAAa,EACb,aAAa,EACb,iBAAiB,GAClB,MAAM,MAAM,CAAC;AAEd,YAAY,EAEV,OAAO,EACP,UAAU,EACV,eAAe,EAEf,mBAAmB,EACnB,kBAAkB,EAElB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAElB,oBAAoB,EACpB,mBAAmB,EAEnB,wBAAwB,EACxB,uBAAuB,EAEvB,aAAa,EACb,YAAY,GACb,MAAM,MAAM,CAAC;AAGd,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -5,59 +5,95 @@
5
5
  * @example
6
6
  * import {
7
7
  * initClefbase, getDatabase, getAuth, getStorage, getHosting,
8
- * getFunctions, httpsCallable, callFunction, deployFunction, deployFromFile,
9
- * setAuthToken, FunctionsError, FieldValue,
8
+ * getFunctions, getAI,
9
+ * httpsCallable, callFunction, deployFunction, deployFromFile,
10
+ * generateText, generateImage, generateVideo, generateEmbedding,
11
+ * setAuthToken, FunctionsError, AIError, FieldValue,
10
12
  * } from "clefbase";
11
13
  *
12
- * const app = initClefbase({ serverUrl, projectId, apiKey, adminSecret: "" });
13
- * const fns = getFunctions(app);
14
- * const auth = getAuth(app);
14
+ * const app = initClefbase({ serverUrl, projectId, apiKey, adminSecret: "" });
15
15
  *
16
- * // ── Auth-aware function call ───────────────────────────────────────────────
16
+ * // ── Auth ──────────────────────────────────────────────────────────────────
17
+ * const auth = getAuth(app);
17
18
  * const { token } = await auth.signIn("alice@example.com", "password123");
18
- * setAuthToken(app, token); // ctx.auth.uid / email now available in function
19
19
  *
20
- * // ── Typed callable ────────────────────────────────────────────────────────
20
+ * // ── Database ──────────────────────────────────────────────────────────────
21
+ * const db = getDatabase(app);
22
+ * await db.collection("posts").doc("p1").update({
23
+ * views: FieldValue.increment(1),
24
+ * publishedAt: FieldValue.serverTimestamp(),
25
+ * });
26
+ *
27
+ * // ── Storage ───────────────────────────────────────────────────────────────
28
+ * const storage = getStorage(app);
29
+ * const url = await storage.ref("avatars/user-123.jpg").getDownloadURL();
30
+ *
31
+ * // ── Functions ─────────────────────────────────────────────────────────────
32
+ * const fns = getFunctions(app);
21
33
  * const greet = httpsCallable<{ name: string }, { message: string }>(fns, "greetUser");
22
34
  * const { data } = await greet({ name: "Alice" });
23
35
  *
24
- * // ── One-shot call ─────────────────────────────────────────────────────────
25
- * const { data } = await callFunction(fns, "greetUser", { name: "Bob" });
36
+ * // ── AI text / code ──────────────────────────────────────────────────────
37
+ * const ai = getAI(app);
26
38
  *
27
- * // ── Deploy from source ────────────────────────────────────────────────────
28
- * await deployFunction(fns, {
29
- * name: "greetUser",
30
- * runtime: "node",
31
- * trigger: { type: "http" },
32
- * source: `export async function handler(ctx) { return { message: "Hi " + ctx.data.name }; }`,
39
+ * const { content } = await ai.text({
40
+ * model: "claude-sonnet-4-5",
41
+ * prompt: "Explain async/await in JavaScript",
33
42
  * });
34
43
  *
35
- * // ── Deploy from file (Node.js) ────────────────────────────────────────────
36
- * await deployFromFile(fns, {
37
- * name: "processOrder",
38
- * runtime: "node",
39
- * trigger: { type: "http" },
40
- * filePath: "./src/functions/processOrder.ts",
44
+ * // Multi-turn chat
45
+ * const reply = await ai.text({
46
+ * model: "gemini-2.5-flash",
47
+ * prompt: "Give me a harder example",
48
+ * systemPrompt: "You are a JavaScript tutor.",
49
+ * history: [{ role: "user", content: "Explain closures" }, { role: "assistant", content: "..." }],
41
50
  * });
42
51
  *
43
- * // ── Error handling ────────────────────────────────────────────────────────
44
- * try {
45
- * await callFunction(fns, "mayFail");
46
- * } catch (err) {
47
- * if (err instanceof FunctionsError) {
48
- * console.error(err.httpStatus, err.message);
49
- * }
50
- * }
52
+ * // ── AI image generation (auto-saved to Storage) ─────────────────────────
53
+ * const { files } = await ai.image({
54
+ * model: "imagen-4.0-generate-001",
55
+ * prompt: "A serene mountain lake at dawn, photorealistic",
56
+ * aspectRatio: "16:9",
57
+ * numberOfImages: 2,
58
+ * outputFolder: "landscapes",
59
+ * });
60
+ * // files[].fullPath → path in project Storage
61
+ * // files[].storageFileId → use with storage.ref() to get the download URL
51
62
  *
52
- * // ── Database ──────────────────────────────────────────────────────────────
53
- * const db = getDatabase(app);
54
- * await db.collection("posts").doc("p1").update({
55
- * views: FieldValue.increment(1),
56
- * publishedAt: FieldValue.serverTimestamp(),
63
+ * // ── AI — video generation (auto-saved to Storage) ─────────────────────────
64
+ * const { status, files: clips } = await ai.video({
65
+ * model: "veo-3.1-generate-preview",
66
+ * prompt: "A slow-motion waterfall in a rainforest",
67
+ * durationSeconds: 8,
68
+ * aspectRatio: "16:9",
69
+ * });
70
+ *
71
+ * // ── AI — embeddings ───────────────────────────────────────────────────────
72
+ * const { embeddings } = await ai.embedding({
73
+ * model: "gemini-embedding-001",
74
+ * input: ["Hello world", "Semantic search"],
75
+ * });
76
+ *
77
+ * // ── AI — browse models ────────────────────────────────────────────────────
78
+ * const imageModels = await ai.listModels({ category: "image" });
79
+ * const allModels = await ai.listModels();
80
+ *
81
+ * // ── AI — usage stats ──────────────────────────────────────────────────────
82
+ * const stats = await ai.getStats();
83
+ * const history = await ai.getUsage({ limit: 20 });
84
+ *
85
+ * // ── AI — convenience top-level functions ──────────────────────────────────
86
+ * const { content: code } = await generateText(ai, {
87
+ * model: "claude-sonnet-4-5",
88
+ * prompt: "Write a merge sort in TypeScript",
89
+ * });
90
+ * const { files: imgs } = await generateImage(ai, {
91
+ * model: "imagen-4.0-fast-generate-001",
92
+ * prompt: "A cute cartoon robot",
57
93
  * });
58
94
  */
59
95
  Object.defineProperty(exports, "__esModule", { value: true });
60
- exports.ClefbaseError = exports.FieldValueSentinel = exports.FieldValue = exports.deployFromFile = exports.setAuthToken = exports.getFunctionExecutions = exports.listFunctions = exports.deleteFunction = exports.deployFunction = exports.callFunction = exports.httpsCallable = exports.FunctionsError = exports.ClefbaseFunctions = exports.SiteReference = exports.ClefbaseHosting = exports.EmailVerificationCard = exports.BucketReference = exports.StorageReference = exports.ClefbaseStorage = exports.Auth = exports.runTransaction = exports.Transaction = exports.WriteBatch = exports.Query = exports.DocumentReference = exports.CollectionGroup = exports.CollectionReference = exports.Database = exports.getFunctions = exports.getHosting = exports.getStorage = exports.getAuth = exports.getDatabase = exports.getApp = exports.initClefbase = exports.ClefbaseApp = void 0;
96
+ exports.ClefbaseError = exports.FieldValueSentinel = exports.FieldValue = exports.generateEmbedding = exports.generateVideo = exports.generateImage = exports.generateText = exports.AIError = exports.ClefbaseAI = exports.deployFromFile = exports.setAuthToken = exports.getFunctionExecutions = exports.listFunctions = exports.deleteFunction = exports.deployFunction = exports.callFunction = exports.httpsCallable = exports.FunctionsError = exports.ClefbaseFunctions = exports.SiteReference = exports.ClefbaseHosting = exports.EmailVerificationCard = exports.BucketReference = exports.StorageReference = exports.ClefbaseStorage = exports.Auth = exports.runTransaction = exports.Transaction = exports.WriteBatch = exports.Query = exports.DocumentReference = exports.CollectionGroup = exports.CollectionReference = exports.Database = exports.getAI = exports.getFunctions = exports.getHosting = exports.getStorage = exports.getAuth = exports.getDatabase = exports.getApp = exports.initClefbase = exports.ClefbaseApp = void 0;
61
97
  // ─── App ──────────────────────────────────────────────────────────────────────
62
98
  var app_1 = require("./app");
63
99
  Object.defineProperty(exports, "ClefbaseApp", { enumerable: true, get: function () { return app_1.ClefbaseApp; } });
@@ -68,6 +104,7 @@ Object.defineProperty(exports, "getAuth", { enumerable: true, get: function () {
68
104
  Object.defineProperty(exports, "getStorage", { enumerable: true, get: function () { return app_1.getStorage; } });
69
105
  Object.defineProperty(exports, "getHosting", { enumerable: true, get: function () { return app_1.getHosting; } });
70
106
  Object.defineProperty(exports, "getFunctions", { enumerable: true, get: function () { return app_1.getFunctions; } });
107
+ Object.defineProperty(exports, "getAI", { enumerable: true, get: function () { return app_1.getAI; } });
71
108
  // ─── Database ─────────────────────────────────────────────────────────────────
72
109
  var db_1 = require("./db");
73
110
  Object.defineProperty(exports, "Database", { enumerable: true, get: function () { return db_1.Database; } });
@@ -99,7 +136,7 @@ var functions_1 = require("./functions");
99
136
  Object.defineProperty(exports, "ClefbaseFunctions", { enumerable: true, get: function () { return functions_1.ClefbaseFunctions; } });
100
137
  // Error
101
138
  Object.defineProperty(exports, "FunctionsError", { enumerable: true, get: function () { return functions_1.FunctionsError; } });
102
- // Top-level factory / convenience (mirrors the standalone SDK's API shape)
139
+ // Top-level factory / convenience
103
140
  Object.defineProperty(exports, "httpsCallable", { enumerable: true, get: function () { return functions_1.httpsCallable; } });
104
141
  Object.defineProperty(exports, "callFunction", { enumerable: true, get: function () { return functions_1.callFunction; } });
105
142
  Object.defineProperty(exports, "deployFunction", { enumerable: true, get: function () { return functions_1.deployFunction; } });
@@ -108,6 +145,17 @@ Object.defineProperty(exports, "listFunctions", { enumerable: true, get: functio
108
145
  Object.defineProperty(exports, "getFunctionExecutions", { enumerable: true, get: function () { return functions_1.getFunctionExecutions; } });
109
146
  Object.defineProperty(exports, "setAuthToken", { enumerable: true, get: function () { return functions_1.setAuthToken; } });
110
147
  Object.defineProperty(exports, "deployFromFile", { enumerable: true, get: function () { return functions_1.deployFromFile; } });
148
+ // ─── AI ───────────────────────────────────────────────────────────────────────
149
+ var ai_1 = require("./ai");
150
+ // Class
151
+ Object.defineProperty(exports, "ClefbaseAI", { enumerable: true, get: function () { return ai_1.ClefbaseAI; } });
152
+ // Error
153
+ Object.defineProperty(exports, "AIError", { enumerable: true, get: function () { return ai_1.AIError; } });
154
+ // Top-level convenience functions
155
+ Object.defineProperty(exports, "generateText", { enumerable: true, get: function () { return ai_1.generateText; } });
156
+ Object.defineProperty(exports, "generateImage", { enumerable: true, get: function () { return ai_1.generateImage; } });
157
+ Object.defineProperty(exports, "generateVideo", { enumerable: true, get: function () { return ai_1.generateVideo; } });
158
+ Object.defineProperty(exports, "generateEmbedding", { enumerable: true, get: function () { return ai_1.generateEmbedding; } });
111
159
  // ─── FieldValue ───────────────────────────────────────────────────────────────
112
160
  var field_value_1 = require("./field_value");
113
161
  Object.defineProperty(exports, "FieldValue", { enumerable: true, get: function () { return field_value_1.FieldValue; } });