buildless-cli 0.1.9 → 0.1.10

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.
Files changed (45) hide show
  1. package/dist/index.js +2347 -83
  2. package/dist/index.js.map +1 -1
  3. package/package.json +4 -3
  4. package/dist/ai.d.ts +0 -29
  5. package/dist/ai.d.ts.map +0 -1
  6. package/dist/ai.js +0 -148
  7. package/dist/ai.js.map +0 -1
  8. package/dist/app.d.ts +0 -9
  9. package/dist/app.d.ts.map +0 -1
  10. package/dist/app.js +0 -67
  11. package/dist/app.js.map +0 -1
  12. package/dist/auth.d.ts +0 -14
  13. package/dist/auth.d.ts.map +0 -1
  14. package/dist/auth.js +0 -100
  15. package/dist/auth.js.map +0 -1
  16. package/dist/config.d.ts +0 -14
  17. package/dist/config.d.ts.map +0 -1
  18. package/dist/config.js +0 -45
  19. package/dist/config.js.map +0 -1
  20. package/dist/firestore.d.ts +0 -35
  21. package/dist/firestore.d.ts.map +0 -1
  22. package/dist/firestore.js +0 -340
  23. package/dist/firestore.js.map +0 -1
  24. package/dist/index.d.ts +0 -3
  25. package/dist/index.d.ts.map +0 -1
  26. package/dist/log.d.ts +0 -3
  27. package/dist/log.d.ts.map +0 -1
  28. package/dist/log.js +0 -10
  29. package/dist/log.js.map +0 -1
  30. package/dist/ui/app-search.d.ts +0 -11
  31. package/dist/ui/app-search.d.ts.map +0 -1
  32. package/dist/ui/app-search.js +0 -86
  33. package/dist/ui/app-search.js.map +0 -1
  34. package/dist/ui/runner.d.ts +0 -14
  35. package/dist/ui/runner.d.ts.map +0 -1
  36. package/dist/ui/runner.js +0 -546
  37. package/dist/ui/runner.js.map +0 -1
  38. package/dist/ui/useRunnerRenderSource.d.ts +0 -53
  39. package/dist/ui/useRunnerRenderSource.d.ts.map +0 -1
  40. package/dist/ui/useRunnerRenderSource.js +0 -69
  41. package/dist/ui/useRunnerRenderSource.js.map +0 -1
  42. package/dist/ui/useRunnerSession.d.ts +0 -16
  43. package/dist/ui/useRunnerSession.d.ts.map +0 -1
  44. package/dist/ui/useRunnerSession.js +0 -188
  45. package/dist/ui/useRunnerSession.js.map +0 -1
package/dist/ai.js DELETED
@@ -1,148 +0,0 @@
1
- import { firestoreDocsBase, authHeaders, parseRunQueryDocs, parseDocument, extractDocIdFromName, } from "./firestore.js";
2
- export async function callUnifiedChat(opts) {
3
- const url = `https://us-central1-${opts.firebaseProjectId}.cloudfunctions.net/aiApi`;
4
- const headers = {
5
- "Content-Type": "application/json",
6
- Authorization: `Bearer ${opts.idToken}`,
7
- };
8
- if (opts.appCheckToken) {
9
- headers["X-Firebase-AppCheck"] = opts.appCheckToken;
10
- }
11
- const res = await fetch(url, {
12
- method: "POST",
13
- headers,
14
- body: JSON.stringify({ data: { action: "unifiedChat", payload: opts.payload } }),
15
- });
16
- if (!res.ok) {
17
- const text = await res.text();
18
- throw new Error(`AI request failed (${res.status}): ${text}`);
19
- }
20
- const json = (await res.json());
21
- const data = json.result?.data;
22
- if (!data)
23
- throw new Error("Unexpected AI response format");
24
- return data;
25
- }
26
- export async function loadLatestConversation(opts) {
27
- const base = firestoreDocsBase(opts.firebaseProjectId);
28
- const parent = `projects/${opts.projectId}/versions/${opts.versionId}`;
29
- // Fetch up to 50 conversations
30
- const convoRes = await fetch(`${base}/${parent}:runQuery`, {
31
- method: "POST",
32
- headers: { "Content-Type": "application/json", ...authHeaders(opts.idToken, opts.appCheckToken) },
33
- body: JSON.stringify({
34
- structuredQuery: {
35
- from: [{ collectionId: "ai_conversations" }],
36
- limit: 50,
37
- },
38
- }),
39
- });
40
- if (!convoRes.ok)
41
- return null;
42
- const convoRows = parseRunQueryDocs((await convoRes.json()));
43
- if (!convoRows.length)
44
- return null;
45
- // Pick latest by max(updatedAt, createdAt)
46
- let bestDoc = convoRows[0];
47
- let bestTime = 0;
48
- for (const doc of convoRows) {
49
- const data = parseDocument(doc);
50
- const t = Math.max(toMs(data.updatedAt), toMs(data.createdAt));
51
- if (t > bestTime || bestTime === 0) {
52
- bestTime = t;
53
- bestDoc = doc;
54
- }
55
- }
56
- const conversationId = extractDocIdFromName(bestDoc?.name);
57
- if (!conversationId)
58
- return null;
59
- // Fetch messages ordered by seq asc
60
- const msgRes = await fetch(`${base}/${parent}/ai_conversations/${encodeURIComponent(conversationId)}:runQuery`, {
61
- method: "POST",
62
- headers: { "Content-Type": "application/json", ...authHeaders(opts.idToken, opts.appCheckToken) },
63
- body: JSON.stringify({
64
- structuredQuery: {
65
- from: [{ collectionId: "messages" }],
66
- orderBy: [{ field: { fieldPath: "seq" }, direction: "ASCENDING" }],
67
- limit: 200,
68
- },
69
- }),
70
- });
71
- if (!msgRes.ok)
72
- return { conversationId, messages: [], messageCount: 0 };
73
- const msgDocs = parseRunQueryDocs((await msgRes.json()));
74
- const messages = msgDocs.map((doc) => {
75
- const d = parseDocument(doc);
76
- return { role: d.role, text: d.text, toolName: d.toolName || undefined };
77
- });
78
- return { conversationId, messages, messageCount: messages.length };
79
- }
80
- export async function createConversation(opts) {
81
- const base = firestoreDocsBase(opts.firebaseProjectId);
82
- const colPath = `projects/${opts.projectId}/versions/${opts.versionId}/ai_conversations`;
83
- const now = new Date().toISOString();
84
- const res = await fetch(`${base}/${colPath}`, {
85
- method: "POST",
86
- headers: { "Content-Type": "application/json", ...authHeaders(opts.idToken, opts.appCheckToken) },
87
- body: JSON.stringify({
88
- fields: {
89
- projectId: { stringValue: opts.projectId },
90
- versionId: { stringValue: opts.versionId },
91
- createdAt: { timestampValue: now },
92
- updatedAt: { timestampValue: now },
93
- },
94
- }),
95
- });
96
- if (!res.ok) {
97
- const text = await res.text();
98
- throw new Error(`Failed to create conversation (${res.status}): ${text}`);
99
- }
100
- const doc = (await res.json());
101
- const id = extractDocIdFromName(doc.name);
102
- if (!id)
103
- throw new Error("Failed to extract conversation ID");
104
- return id;
105
- }
106
- export async function appendMessage(opts) {
107
- const base = firestoreDocsBase(opts.firebaseProjectId);
108
- const msgPath = `projects/${opts.projectId}/versions/${opts.versionId}/ai_conversations/${opts.conversationId}/messages`;
109
- const now = new Date().toISOString();
110
- const fields = {
111
- role: { stringValue: opts.role },
112
- text: { stringValue: opts.text },
113
- seq: { integerValue: String(opts.seq) },
114
- createdAt: { timestampValue: now },
115
- };
116
- if (opts.toolName) {
117
- fields.toolName = { stringValue: opts.toolName };
118
- }
119
- // Create message doc
120
- const msgRes = await fetch(`${base}/${msgPath}`, {
121
- method: "POST",
122
- headers: { "Content-Type": "application/json", ...authHeaders(opts.idToken, opts.appCheckToken) },
123
- body: JSON.stringify({ fields }),
124
- });
125
- if (!msgRes.ok)
126
- return; // best-effort
127
- // Update conversation updatedAt
128
- const convoPath = `projects/${opts.projectId}/versions/${opts.versionId}/ai_conversations/${opts.conversationId}`;
129
- await fetch(`${base}/${convoPath}?updateMask.fieldPaths=updatedAt`, {
130
- method: "PATCH",
131
- headers: { "Content-Type": "application/json", ...authHeaders(opts.idToken, opts.appCheckToken) },
132
- body: JSON.stringify({
133
- fields: { updatedAt: { timestampValue: now } },
134
- }),
135
- }).catch(() => { }); // best-effort
136
- }
137
- function toMs(value) {
138
- if (!value)
139
- return 0;
140
- if (typeof value === "number")
141
- return value;
142
- if (typeof value === "string") {
143
- const parsed = Date.parse(value);
144
- return Number.isNaN(parsed) ? 0 : parsed;
145
- }
146
- return 0;
147
- }
148
- //# sourceMappingURL=ai.js.map
package/dist/ai.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
package/dist/app.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import React from "react";
2
- import type { CliConfig } from "./config.js";
3
- export declare const App: React.FC<{
4
- config: CliConfig;
5
- idToken: string;
6
- initialQuery?: string;
7
- onExit: () => void;
8
- }>;
9
- //# sourceMappingURL=app.d.ts.map
package/dist/app.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C,eAAO,MAAM,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CA+FA,CAAC"}
package/dist/app.js DELETED
@@ -1,67 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from "react";
3
- import { Box, Text } from "ink";
4
- import { fetchRunnableAppsViaServer } from "./firestore.js";
5
- import { AppSearch } from "./ui/app-search.js";
6
- import { Runner } from "./ui/runner.js";
7
- import { log } from "./log.js";
8
- export const App = ({ config, idToken, initialQuery, onExit }) => {
9
- const [apps, setApps] = useState([]);
10
- const [loading, setLoading] = useState(true);
11
- const [error, setError] = useState(null);
12
- const [selectedApp, setSelectedApp] = useState(null);
13
- useEffect(() => {
14
- let mounted = true;
15
- const load = async () => {
16
- try {
17
- setLoading(true);
18
- log(`Loading apps from ${config.terminalUrl}`);
19
- const results = await fetchRunnableAppsViaServer({
20
- terminalUrl: config.terminalUrl,
21
- idToken,
22
- query: initialQuery,
23
- });
24
- if (!mounted)
25
- return;
26
- log(`Loaded ${results.length} apps`);
27
- setApps(results);
28
- setError(null);
29
- }
30
- catch (err) {
31
- if (!mounted)
32
- return;
33
- setError(err instanceof Error ? err.message : String(err));
34
- }
35
- finally {
36
- if (mounted)
37
- setLoading(false);
38
- }
39
- };
40
- void load();
41
- return () => {
42
- mounted = false;
43
- };
44
- }, [config.firebaseProjectId, config.terminalUrl, idToken, initialQuery]);
45
- if (error) {
46
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "red", children: error }), _jsx(Text, { dimColor: true, children: "Tip: Set BLO_DEBUG=1 for detailed logs." }), _jsx(Text, { children: "Press Ctrl+C to exit." })] }));
47
- }
48
- if (loading) {
49
- return (_jsx(Box, { flexDirection: "column", children: _jsxs(Text, { color: "green", children: ["Loading apps from ", config.terminalUrl, "..."] }) }));
50
- }
51
- if (apps.length === 0) {
52
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "yellow", children: "No apps found." }), _jsx(Text, { dimColor: true, children: initialQuery
53
- ? `No apps matched "${initialQuery}". Try without a query filter.`
54
- : "Your account has no projects and no published apps are available." }), _jsx(Text, { children: "Press Ctrl+C to exit." })] }));
55
- }
56
- if (!selectedApp) {
57
- return (_jsx(AppSearch, { apps: apps, initialQuery: initialQuery, onSelect: (app) => {
58
- log(`Selected app: ${app.projectId} (version=${app.versionId}, source=${app.versionSource})`);
59
- setSelectedApp(app);
60
- }, onExit: onExit }));
61
- }
62
- return (_jsx(Runner, { projectId: selectedApp.projectId, versionId: selectedApp.versionId, terminalUrl: config.terminalUrl, idToken: idToken, firebaseProjectId: config.firebaseProjectId, appCheckToken: config.appCheckToken, onBackToApps: () => {
63
- log("Returning to app list");
64
- setSelectedApp(null);
65
- }, onExit: onExit }));
66
- };
67
- //# sourceMappingURL=app.js.map
package/dist/app.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
package/dist/auth.d.ts DELETED
@@ -1,14 +0,0 @@
1
- export type LoginResult = {
2
- token: string;
3
- exp: number | null;
4
- appCheckToken?: string;
5
- };
6
- type LoginOptions = {
7
- webOrigin: string;
8
- };
9
- export declare const decodeJwtPayload: (token: string) => Record<string, unknown> | null;
10
- export declare const getTokenExp: (token: string) => number | null;
11
- export declare const isTokenValid: (token?: string, exp?: number | null) => boolean;
12
- export declare const startExternalLogin: (options: LoginOptions) => Promise<LoginResult>;
13
- export {};
14
- //# sourceMappingURL=auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF,KAAK,YAAY,GAAG;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAS1E,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,IAIpD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,MAAM,MAAM,GAAG,IAAI,KAAG,OAKlE,CAAC;AAIF,eAAO,MAAM,kBAAkB,GAAU,SAAS,YAAY,KAAG,OAAO,CAAC,WAAW,CAqEnF,CAAC"}
package/dist/auth.js DELETED
@@ -1,100 +0,0 @@
1
- import { createServer } from "node:http";
2
- import crypto from "node:crypto";
3
- import { URL } from "node:url";
4
- import open from "open";
5
- import { log } from "./log.js";
6
- export const decodeJwtPayload = (token) => {
7
- const parts = token.split(".");
8
- if (parts.length < 2)
9
- return null;
10
- try {
11
- const payload = Buffer.from(parts[1], "base64url").toString("utf8");
12
- return JSON.parse(payload);
13
- }
14
- catch {
15
- return null;
16
- }
17
- };
18
- export const getTokenExp = (token) => {
19
- const payload = decodeJwtPayload(token);
20
- if (!payload || typeof payload.exp !== "number")
21
- return null;
22
- return payload.exp;
23
- };
24
- export const isTokenValid = (token, exp) => {
25
- if (!token)
26
- return false;
27
- if (exp == null)
28
- return true;
29
- const now = Math.floor(Date.now() / 1000);
30
- return exp - 30 > now;
31
- };
32
- const LOGIN_TIMEOUT_MS = 120_000;
33
- export const startExternalLogin = async (options) => {
34
- const state = crypto.randomBytes(16).toString("hex");
35
- const server = createServer();
36
- const result = await new Promise((resolve, reject) => {
37
- let settled = false;
38
- const timeout = setTimeout(() => {
39
- if (settled)
40
- return;
41
- settled = true;
42
- server.close();
43
- reject(new Error("Login timed out after 2 minutes. Please try again."));
44
- }, LOGIN_TIMEOUT_MS);
45
- server.on("request", (req, res) => {
46
- if (!req.url)
47
- return;
48
- const url = new URL(req.url, "http://localhost");
49
- if (url.pathname !== "/callback") {
50
- res.writeHead(404, { "Content-Type": "text/plain" });
51
- res.end("Not found");
52
- return;
53
- }
54
- if (settled) {
55
- res.writeHead(409, { "Content-Type": "text/plain" });
56
- res.end("Login already handled. You can close this window.");
57
- return;
58
- }
59
- const token = url.searchParams.get("token") || "";
60
- const returnedState = url.searchParams.get("state") || "";
61
- const appCheckToken = url.searchParams.get("appCheckToken") || undefined;
62
- if (!token || returnedState !== state) {
63
- settled = true;
64
- res.writeHead(400, { "Content-Type": "text/plain" });
65
- res.end("Invalid login response. You can close this window.");
66
- clearTimeout(timeout);
67
- log(`Login callback failed: token=${token ? "present" : "missing"}, state=${returnedState === state ? "match" : "mismatch"}`);
68
- reject(new Error("Login failed: invalid callback. Make sure you completed the login in your browser."));
69
- server.close();
70
- return;
71
- }
72
- settled = true;
73
- res.writeHead(200, { "Content-Type": "text/plain" });
74
- res.end("Login complete. You can close this window.");
75
- clearTimeout(timeout);
76
- const exp = getTokenExp(token);
77
- log(`Login callback received: exp=${exp}, appCheck=${appCheckToken ? "yes" : "no"}`);
78
- resolve({ token, exp, appCheckToken });
79
- server.close();
80
- });
81
- server.listen(0, "127.0.0.1", () => {
82
- const address = server.address();
83
- if (!address || typeof address === "string") {
84
- clearTimeout(timeout);
85
- reject(new Error("Failed to start local login server."));
86
- return;
87
- }
88
- const callbackUrl = `http://127.0.0.1:${address.port}/callback`;
89
- const loginUrl = new URL("/cli-auth", options.webOrigin);
90
- loginUrl.searchParams.set("redirect_uri", callbackUrl);
91
- loginUrl.searchParams.set("state", state);
92
- log(`Login server listening on port ${address.port}`);
93
- log(`Opening browser: ${loginUrl.toString()}`);
94
- process.stderr.write("Opening browser for login...\n");
95
- void open(loginUrl.toString());
96
- });
97
- });
98
- return result;
99
- };
100
- //# sourceMappingURL=auth.js.map
package/dist/auth.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts DELETED
@@ -1,14 +0,0 @@
1
- export type CliConfig = {
2
- webOrigin: string;
3
- terminalUrl: string;
4
- firebaseProjectId: string;
5
- idToken?: string;
6
- tokenExp?: number;
7
- appCheckToken?: string;
8
- };
9
- export declare const loadConfig: () => {
10
- path: string;
11
- config: CliConfig;
12
- };
13
- export declare const saveConfig: (configPath: string, config: CliConfig) => void;
14
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAcF,eAAO,MAAM,UAAU,QAAO;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CA0B9D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,YAAY,MAAM,EAAE,QAAQ,SAAS,KAAG,IAIlE,CAAC"}
package/dist/config.js DELETED
@@ -1,45 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import os from "node:os";
4
- const defaultWebOrigin = process.env.BLO_WEB_ORIGIN || "https://buildless.online";
5
- const defaultTerminalUrl = process.env.BLO_TERMINAL_URL || "https://buildless.online";
6
- const defaultProjectId = process.env.BLO_FIREBASE_PROJECT_ID || process.env.VITE_FIREBASE_PROJECT_ID || "buildless-online";
7
- const resolveConfigPath = () => {
8
- if (process.env.BLO_CONFIG_PATH)
9
- return process.env.BLO_CONFIG_PATH;
10
- const home = os.homedir();
11
- const configDir = process.env.XDG_CONFIG_HOME || path.join(home, ".config");
12
- return path.join(configDir, "blo", "cli.json");
13
- };
14
- export const loadConfig = () => {
15
- const configPath = resolveConfigPath();
16
- const defaults = {
17
- webOrigin: defaultWebOrigin,
18
- terminalUrl: defaultTerminalUrl,
19
- firebaseProjectId: defaultProjectId,
20
- };
21
- if (!fs.existsSync(configPath)) {
22
- return { path: configPath, config: defaults };
23
- }
24
- try {
25
- const raw = fs.readFileSync(configPath, "utf8");
26
- const parsed = JSON.parse(raw);
27
- return {
28
- path: configPath,
29
- config: {
30
- ...defaults,
31
- ...parsed,
32
- },
33
- };
34
- }
35
- catch (err) {
36
- process.stderr.write(`Warning: failed to parse ${configPath}, using defaults: ${err instanceof Error ? err.message : String(err)}\n`);
37
- return { path: configPath, config: defaults };
38
- }
39
- };
40
- export const saveConfig = (configPath, config) => {
41
- const dir = path.dirname(configPath);
42
- fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
43
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2), { mode: 0o600 });
44
- };
45
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAWzB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,0BAA0B,CAAC;AAClF,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;AACtF,MAAM,gBAAgB,GACpB,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,kBAAkB,CAAC;AAEpG,MAAM,iBAAiB,GAAG,GAAW,EAAE;IACrC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACpE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5E,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAwC,EAAE;IAClE,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAc;QAC1B,SAAS,EAAE,gBAAgB;QAC3B,WAAW,EAAE,kBAAkB;QAC/B,iBAAiB,EAAE,gBAAgB;KACpC,CAAC;IAEF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC;QACrD,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE;gBACN,GAAG,QAAQ;gBACX,GAAG,MAAM;aACV;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,UAAU,qBAAqB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtI,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAChD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,MAAiB,EAAQ,EAAE;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACjF,CAAC,CAAC"}
@@ -1,35 +0,0 @@
1
- export type RunnableApp = {
2
- id: string;
3
- projectId: string;
4
- versionId: string;
5
- versionSource: "published" | "latest" | "store";
6
- publishedVersionId?: string;
7
- name?: string;
8
- displayName?: string;
9
- tagline?: string;
10
- description?: string;
11
- accessTier?: string;
12
- authorName?: string;
13
- ownerDisplayName?: string;
14
- appSource?: "user" | "published";
15
- };
16
- export declare const parseDocument: (doc: any) => Record<string, any>;
17
- export declare const firestoreDocsBase: (projectId: string) => string;
18
- export declare const parseRunQueryDocs: (rows: Array<{
19
- document?: any;
20
- }>) => any[];
21
- export declare const extractDocIdFromName: (name?: string) => string | undefined;
22
- export declare const authHeaders: (idToken: string, appCheckToken?: string) => Record<string, string>;
23
- export declare const fetchRunnableAppsViaServer: (opts: {
24
- terminalUrl: string;
25
- idToken: string;
26
- query?: string;
27
- }) => Promise<RunnableApp[]>;
28
- export declare const fetchRunnableApps: (opts: {
29
- projectId: string;
30
- idToken: string;
31
- appCheckToken?: string;
32
- query?: string;
33
- }) => Promise<RunnableApp[]>;
34
- export declare const filterApp: (app: RunnableApp, term: string) => boolean;
35
- //# sourceMappingURL=firestore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"firestore.d.ts","sourceRoot":"","sources":["../src/firestore.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;IAChD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;CAClC,CAAC;AAiCF,eAAO,MAAM,aAAa,GAAI,KAAK,GAAG,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAO1D,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,WAAW,MAAM,KAAG,MACyD,CAAC;AAEhH,eAAO,MAAM,iBAAiB,GAAI,MAAM,KAAK,CAAC;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC,KAAG,GAAG,EACtB,CAAC;AAElD,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,SAI7D,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,EAAE,gBAAgB,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ1F,CAAC;AA8PF,eAAO,MAAM,0BAA0B,GAAU,MAAM;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,KAAG,OAAO,CAAC,WAAW,EAAE,CAoCxB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAU,MAAM;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,KAAG,OAAO,CAAC,WAAW,EAAE,CA+BxB,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,KAAK,WAAW,EAAE,MAAM,MAAM,KAAG,OAaK,CAAC"}