@gasboost/console 0.5.2 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,26 @@
1
+ export declare const deploymentTypes: readonly ["webapp", "executionApi"];
2
+ export declare const deploymentAccessValues: readonly ["MYSELF", "DOMAIN", "ANYONE", "ANYONE_ANONYMOUS"];
3
+ export declare const webAppExecuteAsValues: readonly ["USER_ACCESSING", "USER_DEPLOYING"];
4
+ export type DeploymentType = (typeof deploymentTypes)[number];
5
+ export type DeploymentAccess = (typeof deploymentAccessValues)[number];
6
+ export type WebAppExecuteAs = (typeof webAppExecuteAsValues)[number];
7
+ export type DeploymentConfiguration = {
8
+ readonly type: "webapp";
9
+ readonly access: DeploymentAccess;
10
+ readonly executeAs: WebAppExecuteAs;
11
+ } | {
12
+ readonly type: "executionApi";
13
+ readonly access: DeploymentAccess;
14
+ };
15
+ export declare class AppsScriptManifestRepository {
16
+ private readonly path;
17
+ constructor(projectRoot: string);
18
+ readDeploymentConfiguration(fallbackType?: DeploymentType): Promise<{
19
+ readonly exists: boolean;
20
+ readonly configuration: DeploymentConfiguration;
21
+ readonly source: "manifest" | "default";
22
+ }>;
23
+ updateDeploymentConfiguration(configuration: DeploymentConfiguration): Promise<DeploymentConfiguration>;
24
+ private read;
25
+ }
26
+ //# sourceMappingURL=AppsScriptManifestRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppsScriptManifestRepository.d.ts","sourceRoot":"","sources":["../../src/appsScript/AppsScriptManifestRepository.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,YAAI,QAAQ,EAAE,cAAc,CAAU,CAAC;AACnE,eAAO,MAAM,sBAAsB,YACjC,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,kBAAkB,CACV,CAAC;AACX,eAAO,MAAM,qBAAqB,YAChC,gBAAgB,EAChB,gBAAgB,CACR,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AACvE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,MAAM,MAAM,uBAAuB,GAC/B;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;CACrC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC,CAAC;AAqBN,qBAAa,4BAA4B;IACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAE9B,YAAmB,WAAW,EAAE,MAAM,EAErC;IAEY,2BAA2B,CACtC,YAAY,GAAE,cAAyB,GACtC,OAAO,CAAC;QACT,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAC;QAChD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;KACzC,CAAC,CAgBD;IAEY,6BAA6B,CACxC,aAAa,EAAE,uBAAuB,GACrC,OAAO,CAAC,uBAAuB,CAAC,CAiBlC;YAEa,IAAI;CAuBnB"}
@@ -0,0 +1,112 @@
1
+ import { readFile, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ export const deploymentTypes = ["webapp", "executionApi"];
4
+ export const deploymentAccessValues = [
5
+ "MYSELF",
6
+ "DOMAIN",
7
+ "ANYONE",
8
+ "ANYONE_ANONYMOUS",
9
+ ];
10
+ export const webAppExecuteAsValues = [
11
+ "USER_ACCESSING",
12
+ "USER_DEPLOYING",
13
+ ];
14
+ const defaultWebAppConfiguration = {
15
+ type: "webapp",
16
+ access: "ANYONE",
17
+ executeAs: "USER_DEPLOYING",
18
+ };
19
+ const defaultExecutionApiConfiguration = {
20
+ type: "executionApi",
21
+ access: "ANYONE",
22
+ };
23
+ export class AppsScriptManifestRepository {
24
+ path;
25
+ constructor(projectRoot) {
26
+ this.path = join(projectRoot, "appsscript.json");
27
+ }
28
+ async readDeploymentConfiguration(fallbackType = "webapp") {
29
+ const manifest = await this.read();
30
+ if (manifest === undefined) {
31
+ return {
32
+ exists: false,
33
+ configuration: defaultConfiguration(fallbackType),
34
+ source: "default",
35
+ };
36
+ }
37
+ const configuration = parseDeploymentConfiguration(manifest);
38
+ return {
39
+ exists: true,
40
+ configuration: configuration ?? defaultConfiguration(fallbackType),
41
+ source: configuration === undefined ? "default" : "manifest",
42
+ };
43
+ }
44
+ async updateDeploymentConfiguration(configuration) {
45
+ const manifest = (await this.read()) ?? {};
46
+ if (configuration.type === "webapp") {
47
+ manifest.webapp = {
48
+ access: configuration.access,
49
+ executeAs: configuration.executeAs,
50
+ };
51
+ delete manifest.executionApi;
52
+ }
53
+ else {
54
+ manifest.executionApi = {
55
+ access: configuration.access,
56
+ };
57
+ delete manifest.webapp;
58
+ }
59
+ await writeFile(this.path, `${JSON.stringify(manifest, null, 2)}\n`, "utf8");
60
+ return configuration;
61
+ }
62
+ async read() {
63
+ try {
64
+ const value = JSON.parse(await readFile(this.path, "utf8"));
65
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
66
+ throw new Error("Expected a JSON object.");
67
+ }
68
+ return value;
69
+ }
70
+ catch (error) {
71
+ if (typeof error === "object" &&
72
+ error !== null &&
73
+ "code" in error &&
74
+ error.code === "ENOENT") {
75
+ return undefined;
76
+ }
77
+ throw new Error("appsscript.json exists but does not contain a valid manifest object.", { cause: error });
78
+ }
79
+ }
80
+ }
81
+ function parseDeploymentConfiguration(manifest) {
82
+ if (isRecord(manifest.webapp)) {
83
+ return {
84
+ type: "webapp",
85
+ access: parseAccess(manifest.webapp.access) ?? defaultWebAppConfiguration.access,
86
+ executeAs: parseExecuteAs(manifest.webapp.executeAs) ?? defaultWebAppConfiguration.executeAs,
87
+ };
88
+ }
89
+ if (isRecord(manifest.executionApi)) {
90
+ return {
91
+ type: "executionApi",
92
+ access: parseAccess(manifest.executionApi.access) ??
93
+ defaultExecutionApiConfiguration.access,
94
+ };
95
+ }
96
+ return undefined;
97
+ }
98
+ function defaultConfiguration(type) {
99
+ return type === "executionApi"
100
+ ? defaultExecutionApiConfiguration
101
+ : defaultWebAppConfiguration;
102
+ }
103
+ function parseAccess(value) {
104
+ return deploymentAccessValues.find((candidate) => candidate === value);
105
+ }
106
+ function parseExecuteAs(value) {
107
+ return webAppExecuteAsValues.find((candidate) => candidate === value);
108
+ }
109
+ function isRecord(value) {
110
+ return typeof value === "object" && value !== null && !Array.isArray(value);
111
+ }
112
+ //# sourceMappingURL=AppsScriptManifestRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppsScriptManifestRepository.js","sourceRoot":"","sources":["../../src/appsScript/AppsScriptManifestRepository.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { GasboostAppsScriptConfig } from "@gasboost/config";
2
2
  import type { OperationDefinition } from "@gasboost/console-runtime";
3
+ import { type DeploymentConfiguration } from "./AppsScriptManifestRepository.js";
3
4
  import type { ClaspResult, ClaspRunner } from "./ClaspRunner.js";
4
5
  export type AppsScriptStatus = {
5
6
  readonly authenticated: boolean;
@@ -7,6 +8,8 @@ export type AppsScriptStatus = {
7
8
  readonly scriptId?: string;
8
9
  readonly rootDir: string;
9
10
  readonly manifestExists: boolean;
11
+ readonly deploymentConfiguration: DeploymentConfiguration;
12
+ readonly deploymentConfigurationSource: "manifest" | "default";
10
13
  readonly desired: boolean;
11
14
  readonly deploymentId?: string;
12
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"appsScriptOperations.d.ts","sourceRoot":"","sources":["../../src/appsScript/appsScriptOperations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAQrE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,KAAK,mBAAmB,GAAG,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7D,KAAK,WAAW,GAAG;IACjB,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;CAC3E,CAAC;AA2BF,wBAAgB,0BAA0B,CAAC,EACzC,WAAW,EACX,MAAM,EACN,KAAK,EACL,KAAsC,EACtC,aAA2B,GAC5B,EAAE;IACD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD,GAAG,SAAS,mBAAmB,EAAE,CAoJjC"}
1
+ {"version":3,"file":"appsScriptOperations.d.ts","sourceRoot":"","sources":["../../src/appsScript/appsScriptOperations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAoB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAOvF,OAAO,EAIL,KAAK,uBAAuB,EAE7B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAC1D,QAAQ,CAAC,6BAA6B,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,KAAK,mBAAmB,GAAG,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7D,KAAK,WAAW,GAAG;IACjB,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;CAC3E,CAAC;AA0CF,wBAAgB,0BAA0B,CAAC,EACzC,WAAW,EACX,MAAM,EACN,KAAK,EACL,KAAsC,EACtC,aAA2B,GAC5B,EAAE;IACD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD,GAAG,SAAS,mBAAmB,EAAE,CAiKjC"}
@@ -4,6 +4,7 @@ import { join } from "node:path";
4
4
  import { z } from "zod";
5
5
  import { EnvFileRepository } from "../env/EnvFileRepository.js";
6
6
  import { openBrowser } from "../openBrowser.js";
7
+ import { AppsScriptManifestRepository, deploymentAccessValues, webAppExecuteAsValues, } from "./AppsScriptManifestRepository.js";
7
8
  import { AppsScriptProjectRepository } from "./AppsScriptProjectRepository.js";
8
9
  const emptyInput = z.object({}).strict();
9
10
  const createInput = z
@@ -28,6 +29,21 @@ const updateDeploymentInput = z
28
29
  description: z.string().trim().max(120).optional(),
29
30
  })
30
31
  .strict();
32
+ const deploymentConfigurationInput = z.discriminatedUnion("type", [
33
+ z
34
+ .object({
35
+ type: z.literal("webapp"),
36
+ access: z.enum(deploymentAccessValues),
37
+ executeAs: z.enum(webAppExecuteAsValues),
38
+ })
39
+ .strict(),
40
+ z
41
+ .object({
42
+ type: z.literal("executionApi"),
43
+ access: z.enum(deploymentAccessValues),
44
+ })
45
+ .strict(),
46
+ ]);
31
47
  const defaultAppsScriptConfig = { type: "webapp" };
32
48
  export function createAppsScriptOperations({ projectRoot, config, clasp, build = createBuildRunner(projectRoot), browserOpener = openBrowser, }) {
33
49
  const effectiveConfig = config ?? defaultAppsScriptConfig;
@@ -35,12 +51,15 @@ export function createAppsScriptOperations({ projectRoot, config, clasp, build =
35
51
  projectRoot,
36
52
  config: effectiveConfig,
37
53
  });
54
+ const manifestRepository = new AppsScriptManifestRepository(projectRoot);
38
55
  const envRepository = new EnvFileRepository(projectRoot);
39
56
  const status = async () => getAppsScriptStatus({
40
57
  configDesired: config !== undefined,
41
58
  projectRepository,
59
+ manifestRepository,
42
60
  envRepository,
43
61
  clasp,
62
+ fallbackDeploymentType: effectiveConfig.type,
44
63
  });
45
64
  return [
46
65
  {
@@ -115,13 +134,7 @@ export function createAppsScriptOperations({ projectRoot, config, clasp, build =
115
134
  input: pushInput,
116
135
  async handler(_input, context) {
117
136
  await assertProjectConfigured(projectRepository);
118
- context.progress({ message: "Building deployment artifact", percentage: 20 });
119
- const buildResult = await build.run(context.log);
120
- assertCommandSuccess("Build", buildResult);
121
- context.progress({ message: "Pushing built files", percentage: 70 });
122
- const result = await clasp.run(["push", "--force"], context.log);
123
- assertCommandSuccess("Apps Script push", result);
124
- context.progress({ message: "Push complete", percentage: 100 });
137
+ await buildAndPush({ build, clasp, context });
125
138
  return { pushed: true };
126
139
  },
127
140
  },
@@ -135,21 +148,37 @@ export function createAppsScriptOperations({ projectRoot, config, clasp, build =
135
148
  return parseDeployments(result.stdout);
136
149
  },
137
150
  },
151
+ {
152
+ id: "apps.deployment.configuration.update",
153
+ input: deploymentConfigurationInput,
154
+ async handler(input, context) {
155
+ context.progress({ message: "Saving deployment manifest", percentage: 40 });
156
+ const configuration = await manifestRepository.updateDeploymentConfiguration(input);
157
+ context.progress({ message: "Deployment manifest saved", percentage: 100 });
158
+ return {
159
+ configuration,
160
+ status: await status(),
161
+ };
162
+ },
163
+ },
138
164
  {
139
165
  id: "apps.deployment.create",
140
166
  input: createDeploymentInput,
141
167
  async handler(input, context) {
142
168
  await assertProjectConfigured(projectRepository);
169
+ await buildAndPush({ build, clasp, context, completePercentage: 75 });
143
170
  const args = ["create-deployment"];
144
171
  if (input.description !== undefined && input.description.length > 0) {
145
172
  args.push("--description", input.description);
146
173
  }
174
+ context.progress({ message: "Creating deployment", percentage: 90 });
147
175
  const result = await clasp.run(args, context.log);
148
176
  assertClaspSuccess("Creating deployment", result);
149
177
  const deploymentId = extractDeploymentId(result.stdout);
150
178
  if (deploymentId !== undefined) {
151
179
  await envRepository.update({ DEPLOYMENT_ID: deploymentId });
152
180
  }
181
+ context.progress({ message: "Deployment created", percentage: 100 });
153
182
  return { deploymentId };
154
183
  },
155
184
  },
@@ -175,10 +204,20 @@ export function createAppsScriptOperations({ projectRoot, config, clasp, build =
175
204
  },
176
205
  ];
177
206
  }
178
- async function getAppsScriptStatus({ configDesired, projectRepository, envRepository, clasp, }) {
179
- const [project, authorization] = await Promise.all([
207
+ async function buildAndPush({ build, clasp, context, completePercentage = 100, }) {
208
+ context.progress({ message: "Building deployment artifact", percentage: 20 });
209
+ const buildResult = await build.run(context.log);
210
+ assertCommandSuccess("Build", buildResult);
211
+ context.progress({ message: "Pushing built files", percentage: 70 });
212
+ const result = await clasp.run(["push", "--force"], context.log);
213
+ assertCommandSuccess("Apps Script push", result);
214
+ context.progress({ message: "Push complete", percentage: completePercentage });
215
+ }
216
+ async function getAppsScriptStatus({ configDesired, projectRepository, manifestRepository, envRepository, clasp, fallbackDeploymentType, }) {
217
+ const [project, authorization, deploymentManifest] = await Promise.all([
180
218
  projectRepository.read(),
181
219
  clasp.run(["show-authorized-user", "--json"]),
220
+ manifestRepository.readDeploymentConfiguration(fallbackDeploymentType),
182
221
  ]);
183
222
  if (project.scriptId !== undefined) {
184
223
  await envRepository.update({ GAS_SCRIPT_ID: project.scriptId });
@@ -189,7 +228,9 @@ async function getAppsScriptStatus({ configDesired, projectRepository, envReposi
189
228
  configured: project.configured,
190
229
  ...(project.scriptId === undefined ? {} : { scriptId: project.scriptId }),
191
230
  rootDir: project.rootDir,
192
- manifestExists: project.manifestExists,
231
+ manifestExists: deploymentManifest.exists,
232
+ deploymentConfiguration: deploymentManifest.configuration,
233
+ deploymentConfigurationSource: deploymentManifest.source,
193
234
  desired: configDesired,
194
235
  ...(runtime.DEPLOYMENT_ID === undefined
195
236
  ? {}
@@ -1 +1 @@
1
- {"version":3,"file":"appsScriptOperations.js","sourceRoot":"","sources":["../../src/appsScript/appsScriptOperations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"appsScriptOperations.js","sourceRoot":"","sources":["../../src/appsScript/appsScriptOperations.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { createProjectInspectOperation, type ProjectState, } from "./projectInspectOperation.js";
2
2
  export { startGasboostConsole } from "./startGasboostConsole.js";
3
3
  export { createAppsScriptOperations, type AppsScriptStatus, } from "./appsScript/appsScriptOperations.js";
4
+ export { type DeploymentAccess, type DeploymentConfiguration, type DeploymentType, type WebAppExecuteAs, } from "./appsScript/AppsScriptManifestRepository.js";
4
5
  export { createClaspRunner, type ClaspResult, type ClaspRunner, } from "./appsScript/ClaspRunner.js";
5
6
  export { createDevelopmentOperations, type DevelopmentStatus, } from "./development/developmentOperations.js";
6
7
  export { createFirebaseRunner, type FirebaseResult, type FirebaseRunner, } from "./firebase/FirebaseRunner.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,KAAK,YAAY,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,0BAA0B,EAC1B,KAAK,gBAAgB,GACtB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,2BAA2B,EAC3B,KAAK,iBAAiB,GACvB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wBAAwB,EACxB,KAAK,cAAc,GACpB,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,KAAK,YAAY,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,0BAA0B,EAC1B,KAAK,gBAAgB,GACtB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,2BAA2B,EAC3B,KAAK,iBAAiB,GACvB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wBAAwB,EACxB,KAAK,cAAc,GACpB,MAAM,kCAAkC,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export { createProjectInspectOperation, } from "./projectInspectOperation.js";
2
2
  export { startGasboostConsole } from "./startGasboostConsole.js";
3
3
  export { createAppsScriptOperations, } from "./appsScript/appsScriptOperations.js";
4
+ export {} from "./appsScript/AppsScriptManifestRepository.js";
4
5
  export { createClaspRunner, } from "./appsScript/ClaspRunner.js";
5
6
  export { createDevelopmentOperations, } from "./development/developmentOperations.js";
6
7
  export { createFirebaseRunner, } from "./firebase/FirebaseRunner.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,GAE9B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,0BAA0B,GAE3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,iBAAiB,GAGlB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,2BAA2B,GAE5B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,oBAAoB,GAGrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wBAAwB,GAEzB,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,GAE9B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,0BAA0B,GAE3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAKN,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,iBAAiB,GAGlB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,2BAA2B,GAE5B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,oBAAoB,GAGrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,wBAAwB,GAEzB,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,6 @@
1
+ (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},t=([e,n,r])=>{let i=document.createElementNS(`http://www.w3.org/2000/svg`,e);return Object.keys(n).forEach(e=>{i.setAttribute(e,String(n[e]))}),r?.length&&r.forEach(e=>{let n=t(e);i.appendChild(n)}),i},n=(n,r={})=>t([`svg`,{...e,...r},n]),r=e=>Array.from(e.attributes).reduce((e,t)=>(e[t.name]=t.value,e),{}),i=e=>typeof e==`string`?e:!e||!e.class?``:e.class&&typeof e.class==`string`?e.class.split(` `):e.class&&Array.isArray(e.class)?e.class:``,a=e=>e.flatMap(i).map(e=>e.trim()).filter(Boolean).filter((e,t,n)=>n.indexOf(e)===t).join(` `),ee=e=>e.replace(/(\w)(\w*)(_|-|\s*)/g,(e,t,n)=>t.toUpperCase()+n.toLowerCase()),te=(t,{nameAttr:i,icons:te,attrs:ne})=>{let o=t.getAttribute(i);if(o==null)return;let re=te[ee(o)];if(!re)return console.warn(`${t.outerHTML} icon name was not found in the provided icons object.`);let ie=r(t),ae={...e,"data-lucide":o,...ne,...ie},s=a([`lucide`,`lucide-${o}`,ie,ne]);s&&Object.assign(ae,{class:s});let oe=n(re,ae);return t.parentNode?.replaceChild(oe,t)},ne=[[`path`,{d:`m18 16 4-4-4-4`}],[`path`,{d:`m6 8-4 4 4 4`}],[`path`,{d:`m14.5 4-5 16`}]],o=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`}]],re=[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`M10 14 21 3`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`}]],ie=[[`path`,{d:`M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4`}],[`path`,{d:`M14 2v4a2 2 0 0 0 2 2h4`}],[`path`,{d:`m5 12-3 3 3 3`}],[`path`,{d:`m9 18 3-3-3-3`}]],ae=[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],s=[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]],oe=[[`path`,{d:`m10 17 5-5-5-5`}],[`path`,{d:`M15 12H3`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`}]],se=[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`}]],ce=[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]],le=[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]],ue=[[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z`}],[`path`,{d:`m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0`}],[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`}]],de=[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}]],fe=[[`path`,{d:`M12 3v12`}],[`path`,{d:`m17 8-5-5-5 5`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}]],pe=[[`circle`,{cx:`12`,cy:`8`,r:`5`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`}]],me=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]],he=({icons:e={},nameAttr:t=`data-lucide`,attrs:n={},root:r=document}={})=>{if(!Object.values(e).length)throw Error(`Please provide an icons object.
2
+ If you want to use all the icons you can import it like:
3
+ \`import { createIcons, icons } from 'lucide';
4
+ lucide.createIcons({icons});\``);if(r===void 0)throw Error("`createIcons()` only works in a browser environment.");let i=r.querySelectorAll(`[${t}]`);if(Array.from(i).forEach(r=>te(r,{nameAttr:t,icons:e,attrs:n})),t===`data-lucide`){let t=r.querySelectorAll(`[icon-name]`);t.length>0&&(console.warn(`[Lucide] Some icons were found with the now deprecated icon-name attribute. These will still be replaced for backwards compatibility, but will no longer be supported in v1.0 and you should switch to data-lucide`),Array.from(t).forEach(t=>te(t,{nameAttr:`icon-name`,icons:e,attrs:n})))}};function ge(e=document){for(let t of e.querySelectorAll(`[data-close-dialog]`))t.addEventListener(`click`,()=>{let n=t.dataset.closeDialog;if(n===void 0)return;let r=e.getElementById(n);_e(r)&&r.close()})}function _e(e){return typeof e==`object`&&!!e&&`close`in e&&typeof e.close==`function`}function ve(e,t){let n=t.trim();return e===`webapp`&&n.length>0?`https://script.google.com/macros/s/${n}/exec`:void 0}function ye(e,t,n){n.disabled=ve(e,t)===void 0}function be(e,t){e.addEventListener(`input`,t)}function xe(e,t,n,r){let i=e?.authenticated===!0,a=t.value.trim();n.disabled=!i||a.length===0,r.disabled=!i||a.length===0}var Se=Xe(),Ce,c,l,u,d=`existing`;he({icons:{Code2:ne,Database:o,ExternalLink:re,FileCode2:ie,KeyRound:ae,LayoutDashboard:s,LogIn:oe,Play:se,Plus:ce,RefreshCw:le,Rocket:ue,Square:de,Upload:fe,UserRound:pe,X:me}});var f=$(`refresh`),p=$(`log`),m=$(`apps-log`),h=$(`deployment-log`),g=$(`firebase-log`),_=$(`development-log`),v={overview:$(`overview-nav`),development:$(`development-nav`),"apps-script":$(`apps-script-nav`),deployment:$(`deployment-nav`),firebase:$(`firebase-nav`)},y=$(`apps-login`),b=$(`apps-create`),x=$(`apps-connect`),we=$(`apps-user-settings`),S=$(`apps-open`),C=$(`apps-push`),Te=$(`apps-pull`),Ee=$(`credential-service-account`),De=$(`credential-script-properties`),Oe=$(`credential-copy-email`),ke=$(`credential-copy-private-key`),w=$(`deployment-list`),T=$(`deployment-create`),E=$(`deployment-update`),Ae=$(`deployment-open`),D=$(`deployment-type`),O=$(`deployment-access`),k=$(`deployment-execute-as`),je=$(`deployment-execute-as-field`),A=$(`development-start`),j=$(`development-stop`),M=$(`development-restart`),N=$(`development-open`),P=$(`firebase-enable`),F=$(`firebase-login`),I=$(`firebase-project-id`),L=$(`firebase-project-create`),R=$(`firebase-connect`),z=$(`firebase-webapp-create`),B=$(`firebase-webapp-config`),V=$(`firebase-rtdb-initialize`),H=$(`firebase-rules-generate`),Me=$(`firebase-rules-deploy`),Ne=$(`firebase-open`);f.addEventListener(`click`,()=>void Pe()),$(`clear-log`).addEventListener(`click`,()=>p.replaceChildren()),$(`apps-clear-log`).addEventListener(`click`,()=>m.replaceChildren()),$(`deployment-clear-log`).addEventListener(`click`,()=>h.replaceChildren()),$(`firebase-clear-log`).addEventListener(`click`,()=>g.replaceChildren()),$(`development-clear-log`).addEventListener(`click`,()=>_.replaceChildren());for(let[e,t]of Object.entries(v))t.addEventListener(`click`,()=>{He(e),e===`development`&&Ie(),e===`apps-script`&&U(),e===`deployment`&&U(),e===`firebase`&&W()});$(`apps-refresh`).addEventListener(`click`,()=>void U()),$(`development-refresh`).addEventListener(`click`,()=>void Ie()),$(`deployment-refresh`).addEventListener(`click`,()=>void U()),$(`firebase-refresh`).addEventListener(`click`,()=>void W());for(let e of document.querySelectorAll(`[data-setup-mode]`))e.addEventListener(`click`,()=>{d=e.dataset.setupMode===`new`?`new`:`existing`,Ve()});y.addEventListener(`click`,()=>void G(`apps.login`,{},m,K,[y])),we.addEventListener(`click`,()=>window.open(`https://script.google.com/home/usersettings`,`_blank`,`noopener`)),b.addEventListener(`click`,()=>{let e=$(`script-title`);e.value=Ce?.name??``,$(`create-dialog`).showModal(),e.focus()}),x.addEventListener(`click`,()=>{G(`apps.connect`,{scriptId:$(`script-id`).value.trim()},m,K,[x])}),S.addEventListener(`click`,()=>void G(`apps.open`,{},m,()=>void 0,[S])),C.addEventListener(`click`,()=>$(`push-dialog`).showModal()),Te.addEventListener(`click`,()=>Q(m,`Pull is reserved for a follow-up operation.`,`info`)),Ee.addEventListener(`click`,()=>{let e=l?.projectId;e!==void 0&&window.open(`https://console.firebase.google.com/project/${encodeURIComponent(e)}/settings/serviceaccounts/adminsdk`,`_blank`,`noopener`)}),De.addEventListener(`click`,()=>{let e=c?.scriptId;e!==void 0&&window.open(`https://script.google.com/home/projects/${encodeURIComponent(e)}/settings`,`_blank`,`noopener`)}),Oe.addEventListener(`click`,()=>void qe(`FIREBASE_SERVICE_ACCOUNT_EMAIL`)),ke.addEventListener(`click`,()=>void qe(`FIREBASE_PRIVATE_KEY`)),w.addEventListener(`click`,()=>void G(`apps.deployments`,{},h,e=>{Q(h,e.deployments.length===0?`No deployments returned`:e.deployments.map(e=>`${e.deploymentId}${e.description===void 0?``:` (${e.description})`}`).join(`, `),`info`)},[w])),T.addEventListener(`click`,()=>$(`deployment-dialog`).showModal()),E.addEventListener(`click`,()=>void G(`apps.deployment.update`,{deploymentId:$(`deployment-id`).value.trim()||void 0},h,()=>void U(),[E])),Ae.addEventListener(`click`,()=>{let e=c?.deploymentId??$(`deployment-id`).value.trim(),t=ve(We(),e);t!==void 0&&window.open(t,`_blank`,`noopener`)}),D.addEventListener(`change`,()=>{Y(),Ke()}),O.addEventListener(`change`,()=>void Ke()),k.addEventListener(`change`,()=>void Ke()),P.addEventListener(`click`,()=>void G(`firebase.enable`,{},g,q,[P])),F.addEventListener(`click`,()=>void G(`firebase.login`,{},g,q,[F])),be(I,Y),L.addEventListener(`click`,()=>{G(`firebase.project.create`,{projectId:I.value.trim()},g,q,[L])}),R.addEventListener(`click`,()=>{G(`firebase.project.connect`,{projectId:I.value.trim()},g,q,[R])}),z.addEventListener(`click`,()=>{G(`firebase.webapp.create`,{displayName:$(`firebase-webapp-name`).value.trim()||void 0},g,q,[z])}),B.addEventListener(`click`,()=>void G(`firebase.webapp.config`,{},g,()=>void W(),[B])),V.addEventListener(`click`,()=>{G(`firebase.rtdb.initialize`,{location:$(`firebase-rtdb-location`).value.trim()||`us-central1`},g,q,[V])}),H.addEventListener(`click`,()=>void G(`firebase.rules.generate`,{},g,()=>void W(),[H])),Me.addEventListener(`click`,()=>void G(`firebase.rules.deploy`,{},g,()=>void W(),[Me])),Ne.addEventListener(`click`,()=>window.open(`https://console.firebase.google.com/`,`_blank`,`noopener`)),$(`create-form`).addEventListener(`submit`,e=>{e.preventDefault();let t=$(`create-dialog`),n=$(`script-title`).value;t.close(),G(`apps.create`,{title:n},m,K,[b])}),$(`push-form`).addEventListener(`submit`,e=>{e.preventDefault(),$(`push-dialog`).close(),G(`apps.push`,{confirmed:!0},m,()=>void U(),[C])}),$(`deployment-form`).addEventListener(`submit`,e=>{e.preventDefault(),$(`deployment-dialog`).close(),G(`apps.deployment.create`,{description:$(`deployment-description`).value.trim()||void 0},h,()=>void U(),[T])}),ge(),A.addEventListener(`click`,()=>void G(`development.start`,{},_,J,[A,M])),j.addEventListener(`click`,()=>void G(`development.stop`,{},_,J,[j,M])),M.addEventListener(`click`,()=>void G(`development.restart`,{},_,J,[A,j,M])),N.addEventListener(`click`,()=>void G(`development.open`,{},_,J,[N])),Pe();async function Pe(){await Fe(),await Promise.all([Ie(),U(),W()])}async function Fe(){f.disabled=!0,Z(`running`,`Inspecting`),Q(p,`Inspecting project definition`,`info`);try{await Re(`project.inspect`,{},Le(p,e=>{Ce=e,Be(e)})),Z(`ready`,`Ready`)}catch(e){Z(`error`,`Error`),Ye(p,e)}finally{f.disabled=!1}}async function U(){await G(`apps.status`,{},m,K,[$(`apps-refresh`)])}async function W(){await G(`firebase.status`,{},g,q,[$(`firebase-refresh`)])}async function Ie(){await G(`development.status`,{},_,J,[$(`development-refresh`)])}async function G(e,t,n,r,i=[]){Ue(i,!0),Z(`running`,`Working`);try{await Re(e,t,Le(n,r)),Z(`ready`,`Ready`)}catch(e){Z(`error`,`Error`),Ye(n,e)}finally{Ue(i,!1),Y()}}function Le(e,t){return{log:t=>Q(e,t,`info`),progress:(t,n)=>Q(e,n===void 0?t:`${t} (${n}%)`,`progress`),result:t}}async function Re(e,t,n){let r=await fetch(`/api/operations/${encodeURIComponent(e)}`,{method:`POST`,headers:{"Content-Type":`application/json`,"X-Gasboost-Session":Se},body:JSON.stringify(t)});if(!r.ok||r.body===null){let e=await r.json().catch(()=>null);throw Error(e?.error??`Operation failed with status ${r.status}`)}let i=r.body.pipeThrough(new TextDecoderStream).getReader(),a=``;for(;;){let{done:e,value:t}=await i.read();a+=t??``;let r=a.split(`
5
+
6
+ `);a=r.pop()??``;for(let e of r)ze(e,n);if(e)break}}function ze(e,t){let n=/^event: (.+)$/m.exec(e)?.[1],r=/^data: (.+)$/m.exec(e)?.[1];if(n===void 0||r===void 0)return;let i=JSON.parse(r);if(n===`log`&&typeof i.message==`string`)t.log(i.message);else if(n===`progress`&&typeof i.message==`string`)t.progress(i.message,typeof i.percentage==`number`?i.percentage:void 0);else if(n===`result`)t.result(i);else if(n===`error`)throw Error(typeof i.message==`string`?i.message:`Operation failed`)}function Be(e){$(`project-title`).textContent=e.name,$(`project-path`).textContent=e.root,Je(`apps-script-status`,e.capabilities.appsScript),Je(`firebase-status`,e.capabilities.firebaseRealtimeDatabase)}function K(e){c=e,X(`apps-auth-status`,e.authenticated,`Authorized`,`Sign in required`),X(`apps-project-status`,e.configured,`Connected`,`Not initialized`),X(`apps-manifest-status`,e.manifestExists,`Found`,`Missing`),X(`deployment-project-status`,e.configured,`Ready`,`Prerequisite`),X(`deployment-manifest-status`,e.deploymentConfigurationSource===`manifest`,`Saved`,`Default`),$(`apps-account-detail`).textContent=e.authenticated?`clasp authorization available`:`No clasp authorization found`,$(`apps-project-detail`).textContent=e.configured?`${e.scriptId??`Connected`} · ${e.rootDir}`:`Local source: ${e.rootDir}`,$(`apps-manifest-detail`).textContent=e.manifestExists?`appsscript.json exists in project root`:`Manifest was not detected at project root`,$(`deployment-project-detail`).textContent=e.configured?`Script ID: ${e.scriptId??`connected`}`:`Create or connect an Apps Script project first`,$(`deployment-manifest-detail`).textContent=e.deploymentConfigurationSource===`manifest`?`Deployment configuration is loaded from appsscript.json`:`Using initial defaults until saved to appsscript.json`,$(`deployment-id`).value=e.deploymentId??``,X(`deployment-id-status`,e.deploymentId!==void 0,`Selected`,`Not selected`),$(`deployment-id-detail`).textContent=e.deploymentId===void 0?`No deployment synced to .env`:e.deploymentId,Ge(e.deploymentConfiguration),Ve(),Y()}function q(e){l=e,X(`firebase-enabled-status`,e.enabled,`Enabled`,`Not enabled`),X(`firebase-auth-status`,e.authenticated,`Authorized`,`Sign in required`),X(`firebase-project-status`,e.remoteProjectVerified,`Verified`,`Not verified`),X(`firebase-webapp-status`,e.webApp.configured,`Configured`,`Not configured`),X(`firebase-rtdb-status`,e.realtimeDatabase.initialized,`Initialized`,`Not initialized`),X(`firebase-rules-status`,e.rulesGenerated,`Generated`,`Not generated`),$(`firebase-enabled-detail`).textContent=e.enabled?`Local Firebase configuration detected`:`Enable Firebase to create local configuration`,$(`firebase-auth-detail`).textContent=e.authenticated?`Firebase CLI authorization available`:`No Firebase CLI authorization found`,$(`firebase-project-detail`).textContent=e.projectId===void 0?`No project ID synced to .env`:`${e.projectId}${e.remoteProjectVerified?``:` · remote verification pending`}`,$(`firebase-webapp-detail`).textContent=e.webApp.appId??(e.webApp.sdkConfigAvailable?`SDK config synced to .env`:`No Web App detected`),$(`firebase-rtdb-detail`).textContent=e.realtimeDatabase.databaseUrl??(e.realtimeDatabase.desired?`Realtime capability desired`:`Realtime capability not configured`),$(`firebase-rules-detail`).textContent=e.rulesSourceConfigured?e.rulesGenerated?`database.rules.json is ready`:`Generate rules before deploy`:`No RTDB rules source configured`,I.value=e.projectId??``,$(`firebase-webapp-name`).value=e.webApp.displayName??``,Y()}function J(e){u=e,X(`development-state-status`,e.running,`Running`,`Stopped`),$(`development-state-detail`).textContent=e.command===void 0?`No dev process launched by console`:e.command.join(` `),X(`development-url-status`,e.localUrl!==void 0,`Available`,`Pending`),$(`development-url-detail`).textContent=e.localUrl??`Start the local application to detect a URL`,_.replaceChildren();for(let t of e.log)Q(_,t,`info`);Y()}function Ve(){for(let e of document.querySelectorAll(`[data-setup-mode]`))e.classList.toggle(`setup-mode__button--active`,e.dataset.setupMode===d);$(`apps-create-panel`).hidden=d!==`new`,$(`apps-connect-panel`).hidden=d!==`existing`}function He(e){for(let t of Object.keys(v))$(`${t}-view`).hidden=t!==e,v[t].classList.toggle(`active`,t===e)}function Ue(e,t){for(let n of e)n.disabled=t}function Y(){let e=c?.authenticated===!0,t=c?.configured===!0;y.disabled=e,b.disabled=!e||t,x.disabled=!e||t,S.disabled=!e||!t,C.disabled=!e||!t,Te.disabled=!e||!t,Ee.disabled=l?.projectId===void 0,De.disabled=c?.scriptId===void 0,w.disabled=!e||!t,T.disabled=!e||!t,E.disabled=!e||!t,ye(We(),c?.deploymentId??$(`deployment-id`).value,Ae),D.disabled=c===void 0,O.disabled=c===void 0,k.disabled=c===void 0||D.value!==`webapp`,A.disabled=u?.running===!0,j.disabled=u?.running!==!0,M.disabled=u?.running!==!0,N.disabled=u?.running!==!0||u.localUrl===void 0,F.disabled=l?.authenticated===!0,P.disabled=l?.enabled===!0;let n=l?.remoteProjectVerified===!0;xe(l,I,L,R),z.disabled=!n||l?.webApp.configured===!0,B.disabled=!n||l?.webApp.configured!==!0,V.disabled=!n||l?.realtimeDatabase.desired!==!0||l?.realtimeDatabase.initialized===!0,H.disabled=l?.rulesSourceConfigured!==!0,Me.disabled=!n||l?.rulesGenerated!==!0,Ne.disabled=!1,f.disabled=!1;for(let e of Object.values(v))e.disabled=!1}function We(){return D.value===`webapp`&&c?.deploymentConfiguration.type===`webapp`?`webapp`:`executionApi`}function Ge(e){D.value=e.type,O.value=e.access,je.hidden=e.type!==`webapp`,k.value=e.type===`webapp`?e.executeAs:`USER_DEPLOYING`}async function Ke(){let e=D.value===`executionApi`?{type:`executionApi`,access:O.value}:{type:`webapp`,access:O.value,executeAs:k.value};Ge(e),await G(`apps.deployment.configuration.update`,e,h,e=>{K(e.status),Q(h,`Saved deployment configuration to appsscript.json`,`info`)},[D,O,k])}async function qe(e){await navigator.clipboard.writeText(e),Q(m,`Copied ${e}`,`info`)}function Je(e,t){X(e,t,`Configured`,`Not configured`)}function X(e,t,n,r){let i=$(e);i.textContent=t?n:r,i.className=`badge ${t?`configured`:`inactive`}`}function Z(e,t){let n=$(`runtime-status`);n.className=`runtime-status ${e}`,n.innerHTML=``;let r=document.createElement(`span`);n.append(r,document.createTextNode(` ${t}`))}function Q(e,t,n){let r=document.createElement(`div`);r.className=`log-row ${n}`;let i=document.createElement(`time`);i.textContent=new Date().toLocaleTimeString();let a=document.createElement(`span`);a.textContent=t,r.append(i,a),e.append(r),e.scrollTop=e.scrollHeight}function Ye(e,t){Q(e,t instanceof Error?t.message:`Operation failed`,`error`)}function $(e){let t=document.getElementById(e);if(t===null)throw Error(`Missing UI element: ${e}`);return t}function Xe(){let e=document.querySelector(`meta[name="gasboost-session"]`)?.content;if(e===void 0||e.length===0)throw Error(`Console session was not initialized`);return e}
@@ -0,0 +1 @@
1
+ :root{--gb-background:#0f131b;--gb-surface:#181c23;--gb-surface-lowest:#0a0e15;--gb-surface-high:#262a32;--gb-surface-highest:#31353d;--gb-border:#1e293b;--gb-text:#dfe2ed;--gb-muted:#93a19a;--gb-outline:#64716a;--gb-primary:#4edea3;--gb-primary-hover:#6ffbbe;--gb-primary-dark:#003824;--gb-cyan:#06b6d4;--gb-orange:#f97316;--gb-healthy:#10b981;--gb-code:#040711;--gb-danger:#f87171;--gb-font:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--gb-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;font-family:var(--gb-font);color:var(--gb-text);background:var(--gb-background);font-synthesis:none}*{box-sizing:border-box}[hidden]{display:none!important}body{background:var(--gb-background);-webkit-font-smoothing:antialiased;min-width:320px;min-height:100vh;margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}.topbar{height:60px;color:var(--gb-text);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0a0e15eb;border-bottom:1px solid #1e293bcc;align-items:center;gap:12px;padding:0 24px;display:flex}.brand-mark{object-fit:contain;background:var(--gb-primary);border-radius:6px;width:32px;height:32px}.product-name{font-size:15px;font-weight:700}.project-path{text-overflow:ellipsis;white-space:nowrap;max-width:min(60vw,680px);color:var(--gb-muted);font:11px var(--gb-mono);overflow:hidden}.icon-button{border:1px solid var(--gb-border);width:36px;height:36px;color:var(--gb-muted);background:var(--gb-surface);cursor:pointer;border-radius:6px;place-items:center;margin-left:auto;display:grid}.icon-button:hover{color:var(--gb-primary);background:var(--gb-surface-high)}.icon-button:disabled{opacity:.5;cursor:wait}.icon-button svg{width:17px;height:17px}.icon-button.light{color:var(--gb-muted);border-color:var(--gb-border);background:var(--gb-surface-high);margin-left:0}.icon-button.light:hover{background:var(--gb-surface-highest)}.status-band{background:var(--gb-background);border-bottom:1px solid var(--gb-border);justify-content:space-between;align-items:center;gap:24px;min-height:118px;padding:30px clamp(24px,5vw,72px);display:flex}.eyebrow{color:var(--gb-primary);font-family:var(--gb-mono);letter-spacing:.08em;font-size:11px;font-weight:800}h1,h2,h3,p{letter-spacing:0;margin:0}h1{margin-top:5px;font-size:28px;line-height:1.2}.runtime-status{color:var(--gb-muted);font-family:var(--gb-mono);align-items:center;font-size:12px;font-weight:650;display:flex}.runtime-status span{background:var(--gb-orange);border-radius:50%;width:8px;height:8px}.runtime-status.ready span{background:var(--gb-healthy)}.runtime-status.error span{background:var(--gb-danger)}.workspace{grid-template-columns:220px minmax(0,1fr);min-height:calc(100vh - 176px);display:grid}.sidebar{background:var(--gb-surface);border-right:1px solid var(--gb-border);padding:16px 12px}.nav-item{color:#93a19abf;text-align:left;width:100%;height:40px;font-family:var(--gb-mono);background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:10px;padding:0 12px;font-size:11px;display:flex}.nav-item svg{width:17px;height:17px}.nav-item:hover{background:#262a32a6}.nav-item.active{color:var(--gb-text);background:#4edea314;border-color:#4edea366;font-weight:700;box-shadow:0 0 0 1px #4edea359}.nav-item:disabled{opacity:.55}.content{width:min(980px,100%);padding:32px clamp(24px,5vw,64px) 56px}.section-heading{justify-content:space-between;align-items:end;margin-bottom:18px;display:flex}h2{margin-top:4px;font-size:20px;line-height:1.3}.capability-list,.status-list{background:var(--gb-surface);border:1px solid var(--gb-border);border-radius:8px;overflow:hidden;box-shadow:0 16px 48px #0003}.capability-row,.status-row{border-bottom:1px solid var(--gb-border);grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:15px;min-height:82px;padding:16px 18px;display:grid}.capability-row:last-child,.status-row:last-child{border-bottom:0}.capability-icon{border:1px solid var(--gb-border);background:var(--gb-surface-high);border-radius:8px;place-items:center;width:40px;height:40px;display:grid}.capability-icon svg{width:19px;height:19px}.capability-icon.apps{color:var(--gb-cyan)}.capability-icon.firebase{color:var(--gb-orange)}.capability-icon.account,.capability-icon.development{color:var(--gb-primary)}h3{font-size:14px}.capability-row p,.status-row p{color:var(--gb-muted);margin-top:4px;font-size:12px}.badge{border:1px solid var(--gb-border);min-width:94px;color:var(--gb-muted);background:var(--gb-surface-high);font-family:var(--gb-mono);text-align:center;border-radius:4px;padding:5px 8px;font-size:10px;font-weight:700}.badge.configured{color:var(--gb-primary);background:#4edea314;border-color:#4edea373}.badge.inactive{color:var(--gb-muted)}.mono-detail{text-overflow:ellipsis;white-space:nowrap;font-family:var(--gb-mono);overflow:hidden}.action-bar{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.command-button,.secondary-button{border:1px solid var(--gb-border);min-height:36px;color:var(--gb-muted);background:var(--gb-surface-high);cursor:pointer;font-family:var(--gb-mono);border-radius:6px;justify-content:center;align-items:center;gap:7px;padding:0 13px;font-size:11px;font-weight:700;display:inline-flex}.button{cursor:pointer;border:0;border-radius:5px;justify-content:center;align-items:center;gap:7px;min-height:39px;padding:0 17px;font-size:12px;font-weight:700;display:inline-flex}.button svg{width:15px;height:15px}.button--primary{color:var(--gb-primary-dark);background:var(--gb-primary)}.button--primary:hover:not(:disabled){background:var(--gb-primary-hover)}.button:disabled{opacity:.4;cursor:not-allowed}.command-button svg,.secondary-button svg{width:15px;height:15px}.command-button:hover,.secondary-button:hover{color:var(--gb-text);background:var(--gb-surface-highest)}.command-button.primary{color:var(--gb-primary-dark);border-color:var(--gb-primary);background:var(--gb-primary)}.command-button.danger{color:#190707;border-color:var(--gb-danger);background:var(--gb-danger)}.command-button:disabled{opacity:.45;cursor:not-allowed}.credential-map{border:1px solid var(--gb-border);background:var(--gb-code);border-radius:8px;overflow:hidden}.credential-map__header{color:var(--gb-muted);border-bottom:1px solid var(--gb-border);font:10px/1.4 var(--gb-mono);text-transform:uppercase;padding:10px 12px;font-weight:700}.credential-map__row{border-bottom:1px solid var(--gb-border);grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr) 36px;align-items:center;gap:10px;min-height:42px;padding:7px 10px 7px 12px;display:grid}.credential-map__row:last-child{border-bottom:0}.credential-map code{overflow-wrap:anywhere;color:var(--gb-text);font:11px/1.45 var(--gb-mono)}.credential-map span{overflow-wrap:anywhere;color:var(--gb-muted);font:11px/1.45 var(--gb-mono)}.copy-key{width:30px;height:30px}.setup-mode{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:22px;display:grid}.setup-mode__button{border:1px solid var(--gb-border);min-height:96px;color:var(--gb-text);background:var(--gb-surface);text-align:left;cursor:pointer;border-radius:8px;flex-direction:column;gap:7px;padding:16px;display:flex}.setup-mode__button:hover{background:var(--gb-surface-high)}.setup-mode__button--active{background:#4edea314;border-color:#4edea373;box-shadow:0 0 0 1px #4edea359}.setup-mode__button strong{font-size:13px}.setup-mode__button span{color:var(--gb-muted);font-size:11px;line-height:1.55}.panel{border:1px solid var(--gb-border);background:#1c202799;border-radius:8px;flex-direction:column;gap:14px;margin-top:14px;padding:16px;display:flex}.info-box{color:var(--gb-muted);background:#1c202799;border:1px solid #1e293bd9;border-radius:8px;align-items:flex-start;gap:11px;margin-top:16px;padding:14px;font-size:12px;line-height:1.6;display:flex}.info-box__icon{border:1px solid var(--gb-cyan);width:18px;height:18px;color:var(--gb-cyan);border-radius:999px;flex:none;place-items:center;font-family:serif;font-size:12px;font-weight:700;display:grid}.field{flex-direction:column;gap:8px;margin-top:18px;display:flex}.panel .field{margin-top:0}.deployment-config{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px;display:grid}.deployment-config .field{margin-top:0}.field__label{color:var(--gb-text);font-family:var(--gb-mono);font-size:12px;font-weight:500}.field input{border:1px solid var(--gb-border);width:100%;height:43px;color:var(--gb-text);background:var(--gb-code);font:12px var(--gb-mono);border-radius:8px;outline:none;padding:0 13px}.field select{border:1px solid var(--gb-border);width:100%;height:43px;color:var(--gb-text);background:var(--gb-code);font:12px var(--gb-mono);border-radius:8px;outline:none;padding:0 36px 0 13px}.field input::placeholder{color:#46534d}.field input:focus,.field select:focus{border-color:var(--gb-primary);box-shadow:0 0 0 2px #4edea314}.field__help{color:#93a19ab3;font-family:var(--gb-mono);margin:0;font-size:10px;line-height:1.55}.required{color:#ffb4ab}.activity{margin-top:30px}.activity-heading{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.text-button{color:var(--gb-muted);cursor:pointer;font-family:var(--gb-mono);background:0 0;border:0;font-size:11px;font-weight:700}.text-button:hover{color:var(--gb-primary)}.log{height:190px;color:var(--gb-primary);background:var(--gb-code);border:1px solid var(--gb-border);font:12px/1.6 var(--gb-mono);border-radius:8px;padding:8px 0;overflow:auto}.log-row{grid-template-columns:84px 1fr;gap:10px;padding:4px 14px;display:grid}.log-row time{color:var(--gb-outline)}.log-row.progress span{color:var(--gb-cyan)}.log-row.error span{color:var(--gb-danger)}dialog{border:1px solid var(--gb-border);width:min(440px,100vw - 32px);color:var(--gb-text);background:var(--gb-surface);border-radius:8px;padding:0;box-shadow:0 24px 70px #00000059}dialog::backdrop{background:#040711b8}dialog form{padding:20px}.dialog-heading{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.dialog-close{width:32px;height:32px;color:var(--gb-muted);cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.dialog-close:hover{color:var(--gb-primary)}.dialog-close svg{width:18px;height:18px}dialog label{color:var(--gb-text);font-family:var(--gb-mono);margin-bottom:7px;font-size:12px;font-weight:500;display:block}dialog input{border:1px solid var(--gb-border);width:100%;height:43px;color:var(--gb-text);background:var(--gb-code);font:12px var(--gb-mono);border-radius:8px;padding:0 13px}dialog input:focus{border-color:var(--gb-primary);outline:0;box-shadow:0 0 0 2px #4edea314}.dialog-copy{color:var(--gb-muted);font-size:13px;line-height:1.6}.dialog-actions{justify-content:flex-end;gap:8px;margin-top:24px;display:flex}@media (width<=700px){.topbar{padding:0 16px}.status-band{min-height:104px;padding:20px}h1{font-size:23px}.workspace{grid-template-columns:1fr}.sidebar{border-bottom:1px solid #d5ddd7;border-right:0;padding:8px;display:flex;overflow-x:auto}.nav-item{width:auto;min-width:max-content}.content{padding:24px 16px 40px}.capability-row,.status-row{grid-template-columns:40px minmax(0,1fr)}.badge{grid-column:2;justify-self:start}.action-bar{grid-template-columns:1fr 1fr;display:grid}.deployment-config{grid-template-columns:1fr}}
@@ -5,8 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <meta name="gasboost-session" content="__GASBOOST_SESSION_TOKEN__" />
7
7
  <title>gasboost console</title>
8
- <script type="module" crossorigin src="/assets/index-DIyCP30I.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-DP4XpYgp.css">
8
+ <script type="module" crossorigin src="/assets/index-D7HaxSO6.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-DYh1QN-t.css">
10
10
  </head>
11
11
  <body>
12
12
  <header class="topbar">
@@ -198,6 +198,37 @@
198
198
  <div><h3>Deployment ID</h3><p class="mono-detail" id="deployment-id-detail">Checking .env</p></div>
199
199
  <div class="badge" id="deployment-id-status">Checking</div>
200
200
  </div>
201
+ <div class="status-row">
202
+ <div class="capability-icon apps"><i data-lucide="file-code-2"></i></div>
203
+ <div><h3>Manifest status</h3><p class="mono-detail" id="deployment-manifest-detail">Checking appsscript.json</p></div>
204
+ <div class="badge" id="deployment-manifest-status">Checking</div>
205
+ </div>
206
+ </div>
207
+ <div class="deployment-config">
208
+ <div class="field">
209
+ <label for="deployment-type" class="field__label">Deployment type</label>
210
+ <select id="deployment-type">
211
+ <option value="webapp">Web App</option>
212
+ <option value="executionApi">API Executable</option>
213
+ </select>
214
+ </div>
215
+ <div class="field" id="deployment-execute-as-field">
216
+ <label for="deployment-execute-as" class="field__label">Execute as</label>
217
+ <select id="deployment-execute-as">
218
+ <option value="USER_DEPLOYING">Me</option>
219
+ <option value="USER_ACCESSING">User accessing the web app</option>
220
+ </select>
221
+ </div>
222
+ <div class="field">
223
+ <label for="deployment-access" class="field__label">Access</label>
224
+ <select id="deployment-access">
225
+ <option value="MYSELF">Only myself</option>
226
+ <option value="DOMAIN">Same domain</option>
227
+ <option value="ANYONE">Anyone</option>
228
+ <option value="ANYONE_ANONYMOUS">Anyone, even anonymous</option>
229
+ </select>
230
+ <p class="field__help" id="deployment-config-help">Changes are saved to appsscript.json. Push publishes the manifest to Apps Script.</p>
231
+ </div>
201
232
  </div>
202
233
  <div class="field">
203
234
  <label for="deployment-id" class="field__label">Deployment ID</label>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gasboost/console",
3
- "version": "0.5.2",
3
+ "version": "0.6.1",
4
4
  "description": "gasboost project lifecycle console",
5
5
  "type": "module",
6
6
  "exports": {
@@ -1,6 +0,0 @@
1
- (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},t=([e,n,r])=>{let i=document.createElementNS(`http://www.w3.org/2000/svg`,e);return Object.keys(n).forEach(e=>{i.setAttribute(e,String(n[e]))}),r?.length&&r.forEach(e=>{let n=t(e);i.appendChild(n)}),i},n=(n,r={})=>t([`svg`,{...e,...r},n]),r=e=>Array.from(e.attributes).reduce((e,t)=>(e[t.name]=t.value,e),{}),i=e=>typeof e==`string`?e:!e||!e.class?``:e.class&&typeof e.class==`string`?e.class.split(` `):e.class&&Array.isArray(e.class)?e.class:``,a=e=>e.flatMap(i).map(e=>e.trim()).filter(Boolean).filter((e,t,n)=>n.indexOf(e)===t).join(` `),ee=e=>e.replace(/(\w)(\w*)(_|-|\s*)/g,(e,t,n)=>t.toUpperCase()+n.toLowerCase()),o=(t,{nameAttr:i,icons:o,attrs:s})=>{let c=t.getAttribute(i);if(c==null)return;let l=o[ee(c)];if(!l)return console.warn(`${t.outerHTML} icon name was not found in the provided icons object.`);let u=r(t),d={...e,"data-lucide":c,...s,...u},f=a([`lucide`,`lucide-${c}`,u,s]);f&&Object.assign(d,{class:f});let te=n(l,d);return t.parentNode?.replaceChild(te,t)},s=[[`path`,{d:`m18 16 4-4-4-4`}],[`path`,{d:`m6 8-4 4 4 4`}],[`path`,{d:`m14.5 4-5 16`}]],c=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`}]],l=[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`M10 14 21 3`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`}]],u=[[`path`,{d:`M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4`}],[`path`,{d:`M14 2v4a2 2 0 0 0 2 2h4`}],[`path`,{d:`m5 12-3 3 3 3`}],[`path`,{d:`m9 18 3-3-3-3`}]],d=[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]],f=[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]],te=[[`path`,{d:`m10 17 5-5-5-5`}],[`path`,{d:`M15 12H3`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`}]],ne=[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`}]],re=[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]],ie=[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]],ae=[[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z`}],[`path`,{d:`m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0`}],[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`}]],oe=[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}]],se=[[`path`,{d:`M12 3v12`}],[`path`,{d:`m17 8-5-5-5 5`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}]],ce=[[`circle`,{cx:`12`,cy:`8`,r:`5`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`}]],le=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]],ue=({icons:e={},nameAttr:t=`data-lucide`,attrs:n={},root:r=document}={})=>{if(!Object.values(e).length)throw Error(`Please provide an icons object.
2
- If you want to use all the icons you can import it like:
3
- \`import { createIcons, icons } from 'lucide';
4
- lucide.createIcons({icons});\``);if(r===void 0)throw Error("`createIcons()` only works in a browser environment.");let i=r.querySelectorAll(`[${t}]`);if(Array.from(i).forEach(r=>o(r,{nameAttr:t,icons:e,attrs:n})),t===`data-lucide`){let t=r.querySelectorAll(`[icon-name]`);t.length>0&&(console.warn(`[Lucide] Some icons were found with the now deprecated icon-name attribute. These will still be replaced for backwards compatibility, but will no longer be supported in v1.0 and you should switch to data-lucide`),Array.from(t).forEach(t=>o(t,{nameAttr:`icon-name`,icons:e,attrs:n})))}};function de(e=document){for(let t of e.querySelectorAll(`[data-close-dialog]`))t.addEventListener(`click`,()=>{let n=t.dataset.closeDialog;if(n===void 0)return;let r=e.getElementById(n);fe(r)&&r.close()})}function fe(e){return typeof e==`object`&&!!e&&`close`in e&&typeof e.close==`function`}function pe(e,t){e.addEventListener(`input`,t)}function me(e,t,n,r){let i=e?.authenticated===!0,a=t.value.trim();n.disabled=!i||a.length===0,r.disabled=!i||a.length===0}var he=Ve(),ge,p,m,h,g=`existing`;ue({icons:{Code2:s,Database:c,ExternalLink:l,FileCode2:u,KeyRound:d,LayoutDashboard:f,LogIn:te,Play:ne,Plus:re,RefreshCw:ie,Rocket:ae,Square:oe,Upload:se,UserRound:ce,X:le}});var _=$(`refresh`),v=$(`log`),y=$(`apps-log`),b=$(`deployment-log`),x=$(`firebase-log`),S=$(`development-log`),C={overview:$(`overview-nav`),development:$(`development-nav`),"apps-script":$(`apps-script-nav`),deployment:$(`deployment-nav`),firebase:$(`firebase-nav`)},_e=$(`apps-login`),ve=$(`apps-create`),ye=$(`apps-connect`),be=$(`apps-user-settings`),xe=$(`apps-open`),w=$(`apps-push`),Se=$(`apps-pull`),Ce=$(`credential-service-account`),we=$(`credential-script-properties`),Te=$(`credential-copy-email`),Ee=$(`credential-copy-private-key`),T=$(`deployment-list`),E=$(`deployment-create`),D=$(`deployment-update`),De=$(`deployment-open`),O=$(`development-start`),k=$(`development-stop`),A=$(`development-restart`),j=$(`development-open`),M=$(`firebase-enable`),N=$(`firebase-login`),P=$(`firebase-project-id`),F=$(`firebase-project-create`),I=$(`firebase-connect`),L=$(`firebase-webapp-create`),R=$(`firebase-webapp-config`),z=$(`firebase-rtdb-initialize`),B=$(`firebase-rules-generate`),V=$(`firebase-rules-deploy`),Oe=$(`firebase-open`);_.addEventListener(`click`,()=>void ke()),$(`clear-log`).addEventListener(`click`,()=>v.replaceChildren()),$(`apps-clear-log`).addEventListener(`click`,()=>y.replaceChildren()),$(`deployment-clear-log`).addEventListener(`click`,()=>b.replaceChildren()),$(`firebase-clear-log`).addEventListener(`click`,()=>x.replaceChildren()),$(`development-clear-log`).addEventListener(`click`,()=>S.replaceChildren());for(let[e,t]of Object.entries(C))t.addEventListener(`click`,()=>{Ie(e),e===`development`&&W(),e===`apps-script`&&H(),e===`deployment`&&H(),e===`firebase`&&U()});$(`apps-refresh`).addEventListener(`click`,()=>void H()),$(`development-refresh`).addEventListener(`click`,()=>void W()),$(`deployment-refresh`).addEventListener(`click`,()=>void H()),$(`firebase-refresh`).addEventListener(`click`,()=>void U());for(let e of document.querySelectorAll(`[data-setup-mode]`))e.addEventListener(`click`,()=>{g=e.dataset.setupMode===`new`?`new`:`existing`,Fe()});_e.addEventListener(`click`,()=>void G(`apps.login`,{},y,K,[_e])),be.addEventListener(`click`,()=>window.open(`https://script.google.com/home/usersettings`,`_blank`,`noopener`)),ve.addEventListener(`click`,()=>{let e=$(`script-title`);e.value=ge?.name??``,$(`create-dialog`).showModal(),e.focus()}),ye.addEventListener(`click`,()=>{G(`apps.connect`,{scriptId:$(`script-id`).value.trim()},y,K,[ye])}),xe.addEventListener(`click`,()=>void G(`apps.open`,{},y,()=>void 0,[xe])),w.addEventListener(`click`,()=>$(`push-dialog`).showModal()),Se.addEventListener(`click`,()=>Q(y,`Pull is reserved for a follow-up operation.`,`info`)),Ce.addEventListener(`click`,()=>{let e=m?.projectId;e!==void 0&&window.open(`https://console.firebase.google.com/project/${encodeURIComponent(e)}/settings/serviceaccounts/adminsdk`,`_blank`,`noopener`)}),we.addEventListener(`click`,()=>{let e=p?.scriptId;e!==void 0&&window.open(`https://script.google.com/home/projects/${encodeURIComponent(e)}/settings`,`_blank`,`noopener`)}),Te.addEventListener(`click`,()=>void Re(`FIREBASE_SERVICE_ACCOUNT_EMAIL`)),Ee.addEventListener(`click`,()=>void Re(`FIREBASE_PRIVATE_KEY`)),T.addEventListener(`click`,()=>void G(`apps.deployments`,{},b,e=>{Q(b,e.deployments.length===0?`No deployments returned`:e.deployments.map(e=>`${e.deploymentId}${e.description===void 0?``:` (${e.description})`}`).join(`, `),`info`)},[T])),E.addEventListener(`click`,()=>$(`deployment-dialog`).showModal()),D.addEventListener(`click`,()=>void G(`apps.deployment.update`,{deploymentId:$(`deployment-id`).value.trim()||void 0},b,()=>void H(),[D])),De.addEventListener(`click`,()=>{let e=p?.deploymentId??$(`deployment-id`).value.trim();e.length>0&&window.open(`https://script.google.com/macros/s/${e}/exec`,`_blank`,`noopener`)}),M.addEventListener(`click`,()=>void G(`firebase.enable`,{},x,q,[M])),N.addEventListener(`click`,()=>void G(`firebase.login`,{},x,q,[N])),pe(P,Y),F.addEventListener(`click`,()=>{G(`firebase.project.create`,{projectId:P.value.trim()},x,q,[F])}),I.addEventListener(`click`,()=>{G(`firebase.project.connect`,{projectId:P.value.trim()},x,q,[I])}),L.addEventListener(`click`,()=>{G(`firebase.webapp.create`,{displayName:$(`firebase-webapp-name`).value.trim()||void 0},x,q,[L])}),R.addEventListener(`click`,()=>void G(`firebase.webapp.config`,{},x,()=>void U(),[R])),z.addEventListener(`click`,()=>{G(`firebase.rtdb.initialize`,{location:$(`firebase-rtdb-location`).value.trim()||`us-central1`},x,q,[z])}),B.addEventListener(`click`,()=>void G(`firebase.rules.generate`,{},x,()=>void U(),[B])),V.addEventListener(`click`,()=>void G(`firebase.rules.deploy`,{},x,()=>void U(),[V])),Oe.addEventListener(`click`,()=>window.open(`https://console.firebase.google.com/`,`_blank`,`noopener`)),$(`create-form`).addEventListener(`submit`,e=>{e.preventDefault();let t=$(`create-dialog`),n=$(`script-title`).value;t.close(),G(`apps.create`,{title:n},y,K,[ve])}),$(`push-form`).addEventListener(`submit`,e=>{e.preventDefault(),$(`push-dialog`).close(),G(`apps.push`,{confirmed:!0},y,()=>void H(),[w])}),$(`deployment-form`).addEventListener(`submit`,e=>{e.preventDefault(),$(`deployment-dialog`).close(),G(`apps.deployment.create`,{description:$(`deployment-description`).value.trim()||void 0},b,()=>void H(),[E])}),de(),O.addEventListener(`click`,()=>void G(`development.start`,{},S,J,[O,A])),k.addEventListener(`click`,()=>void G(`development.stop`,{},S,J,[k,A])),A.addEventListener(`click`,()=>void G(`development.restart`,{},S,J,[O,k,A])),j.addEventListener(`click`,()=>void G(`development.open`,{},S,J,[j])),ke();async function ke(){await Ae(),await Promise.all([W(),H(),U()])}async function Ae(){_.disabled=!0,Z(`running`,`Inspecting`),Q(v,`Inspecting project definition`,`info`);try{await Me(`project.inspect`,{},je(v,e=>{ge=e,Pe(e)})),Z(`ready`,`Ready`)}catch(e){Z(`error`,`Error`),Be(v,e)}finally{_.disabled=!1}}async function H(){await G(`apps.status`,{},y,K,[$(`apps-refresh`)])}async function U(){await G(`firebase.status`,{},x,q,[$(`firebase-refresh`)])}async function W(){await G(`development.status`,{},S,J,[$(`development-refresh`)])}async function G(e,t,n,r,i=[]){Le(i,!0),Z(`running`,`Working`);try{await Me(e,t,je(n,r)),Z(`ready`,`Ready`)}catch(e){Z(`error`,`Error`),Be(n,e)}finally{Le(i,!1),Y()}}function je(e,t){return{log:t=>Q(e,t,`info`),progress:(t,n)=>Q(e,n===void 0?t:`${t} (${n}%)`,`progress`),result:t}}async function Me(e,t,n){let r=await fetch(`/api/operations/${encodeURIComponent(e)}`,{method:`POST`,headers:{"Content-Type":`application/json`,"X-Gasboost-Session":he},body:JSON.stringify(t)});if(!r.ok||r.body===null){let e=await r.json().catch(()=>null);throw Error(e?.error??`Operation failed with status ${r.status}`)}let i=r.body.pipeThrough(new TextDecoderStream).getReader(),a=``;for(;;){let{done:e,value:t}=await i.read();a+=t??``;let r=a.split(`
5
-
6
- `);a=r.pop()??``;for(let e of r)Ne(e,n);if(e)break}}function Ne(e,t){let n=/^event: (.+)$/m.exec(e)?.[1],r=/^data: (.+)$/m.exec(e)?.[1];if(n===void 0||r===void 0)return;let i=JSON.parse(r);if(n===`log`&&typeof i.message==`string`)t.log(i.message);else if(n===`progress`&&typeof i.message==`string`)t.progress(i.message,typeof i.percentage==`number`?i.percentage:void 0);else if(n===`result`)t.result(i);else if(n===`error`)throw Error(typeof i.message==`string`?i.message:`Operation failed`)}function Pe(e){$(`project-title`).textContent=e.name,$(`project-path`).textContent=e.root,ze(`apps-script-status`,e.capabilities.appsScript),ze(`firebase-status`,e.capabilities.firebaseRealtimeDatabase)}function K(e){p=e,X(`apps-auth-status`,e.authenticated,`Authorized`,`Sign in required`),X(`apps-project-status`,e.configured,`Connected`,`Not initialized`),X(`apps-manifest-status`,e.manifestExists,`Found`,`Missing`),X(`deployment-project-status`,e.configured,`Ready`,`Prerequisite`),$(`apps-account-detail`).textContent=e.authenticated?`clasp authorization available`:`No clasp authorization found`,$(`apps-project-detail`).textContent=e.configured?`${e.scriptId??`Connected`} · ${e.rootDir}`:`Local source: ${e.rootDir}`,$(`apps-manifest-detail`).textContent=e.manifestExists?`appsscript.json exists in project root`:`Manifest was not detected at project root`,$(`deployment-project-detail`).textContent=e.configured?`Script ID: ${e.scriptId??`connected`}`:`Create or connect an Apps Script project first`,$(`deployment-id`).value=e.deploymentId??``,X(`deployment-id-status`,e.deploymentId!==void 0,`Selected`,`Not selected`),$(`deployment-id-detail`).textContent=e.deploymentId===void 0?`No deployment synced to .env`:e.deploymentId,Fe(),Y()}function q(e){m=e,X(`firebase-enabled-status`,e.enabled,`Enabled`,`Not enabled`),X(`firebase-auth-status`,e.authenticated,`Authorized`,`Sign in required`),X(`firebase-project-status`,e.remoteProjectVerified,`Verified`,`Not verified`),X(`firebase-webapp-status`,e.webApp.configured,`Configured`,`Not configured`),X(`firebase-rtdb-status`,e.realtimeDatabase.initialized,`Initialized`,`Not initialized`),X(`firebase-rules-status`,e.rulesGenerated,`Generated`,`Not generated`),$(`firebase-enabled-detail`).textContent=e.enabled?`Local Firebase configuration detected`:`Enable Firebase to create local configuration`,$(`firebase-auth-detail`).textContent=e.authenticated?`Firebase CLI authorization available`:`No Firebase CLI authorization found`,$(`firebase-project-detail`).textContent=e.projectId===void 0?`No project ID synced to .env`:`${e.projectId}${e.remoteProjectVerified?``:` · remote verification pending`}`,$(`firebase-webapp-detail`).textContent=e.webApp.appId??(e.webApp.sdkConfigAvailable?`SDK config synced to .env`:`No Web App detected`),$(`firebase-rtdb-detail`).textContent=e.realtimeDatabase.databaseUrl??(e.realtimeDatabase.desired?`Realtime capability desired`:`Realtime capability not configured`),$(`firebase-rules-detail`).textContent=e.rulesSourceConfigured?e.rulesGenerated?`database.rules.json is ready`:`Generate rules before deploy`:`No RTDB rules source configured`,P.value=e.projectId??``,$(`firebase-webapp-name`).value=e.webApp.displayName??``,Y()}function J(e){h=e,X(`development-state-status`,e.running,`Running`,`Stopped`),$(`development-state-detail`).textContent=e.command===void 0?`No dev process launched by console`:e.command.join(` `),X(`development-url-status`,e.localUrl!==void 0,`Available`,`Pending`),$(`development-url-detail`).textContent=e.localUrl??`Start the local application to detect a URL`,S.replaceChildren();for(let t of e.log)Q(S,t,`info`);Y()}function Fe(){for(let e of document.querySelectorAll(`[data-setup-mode]`))e.classList.toggle(`setup-mode__button--active`,e.dataset.setupMode===g);$(`apps-create-panel`).hidden=g!==`new`,$(`apps-connect-panel`).hidden=g!==`existing`}function Ie(e){for(let t of Object.keys(C))$(`${t}-view`).hidden=t!==e,C[t].classList.toggle(`active`,t===e)}function Le(e,t){for(let n of e)n.disabled=t}function Y(){let e=p?.authenticated===!0,t=p?.configured===!0;_e.disabled=e,ve.disabled=!e||t,ye.disabled=!e||t,xe.disabled=!e||!t,w.disabled=!e||!t,Se.disabled=!e||!t,Ce.disabled=m?.projectId===void 0,we.disabled=p?.scriptId===void 0,T.disabled=!e||!t,E.disabled=!e||!t,D.disabled=!e||!t,De.disabled=(p?.deploymentId??$(`deployment-id`).value).length===0,O.disabled=h?.running===!0,k.disabled=h?.running!==!0,A.disabled=h?.running!==!0,j.disabled=h?.running!==!0||h.localUrl===void 0,N.disabled=m?.authenticated===!0,M.disabled=m?.enabled===!0;let n=m?.remoteProjectVerified===!0;me(m,P,F,I),L.disabled=!n||m?.webApp.configured===!0,R.disabled=!n||m?.webApp.configured!==!0,z.disabled=!n||m?.realtimeDatabase.desired!==!0||m?.realtimeDatabase.initialized===!0,B.disabled=m?.rulesSourceConfigured!==!0,V.disabled=!n||m?.rulesGenerated!==!0,Oe.disabled=!1,_.disabled=!1;for(let e of Object.values(C))e.disabled=!1}async function Re(e){await navigator.clipboard.writeText(e),Q(y,`Copied ${e}`,`info`)}function ze(e,t){X(e,t,`Configured`,`Not configured`)}function X(e,t,n,r){let i=$(e);i.textContent=t?n:r,i.className=`badge ${t?`configured`:`inactive`}`}function Z(e,t){let n=$(`runtime-status`);n.className=`runtime-status ${e}`,n.innerHTML=``;let r=document.createElement(`span`);n.append(r,document.createTextNode(` ${t}`))}function Q(e,t,n){let r=document.createElement(`div`);r.className=`log-row ${n}`;let i=document.createElement(`time`);i.textContent=new Date().toLocaleTimeString();let a=document.createElement(`span`);a.textContent=t,r.append(i,a),e.append(r),e.scrollTop=e.scrollHeight}function Be(e,t){Q(e,t instanceof Error?t.message:`Operation failed`,`error`)}function $(e){let t=document.getElementById(e);if(t===null)throw Error(`Missing UI element: ${e}`);return t}function Ve(){let e=document.querySelector(`meta[name="gasboost-session"]`)?.content;if(e===void 0||e.length===0)throw Error(`Console session was not initialized`);return e}
@@ -1 +0,0 @@
1
- :root{--gb-background:#0f131b;--gb-surface:#181c23;--gb-surface-lowest:#0a0e15;--gb-surface-high:#262a32;--gb-surface-highest:#31353d;--gb-border:#1e293b;--gb-text:#dfe2ed;--gb-muted:#93a19a;--gb-outline:#64716a;--gb-primary:#4edea3;--gb-primary-hover:#6ffbbe;--gb-primary-dark:#003824;--gb-cyan:#06b6d4;--gb-orange:#f97316;--gb-healthy:#10b981;--gb-code:#040711;--gb-danger:#f87171;--gb-font:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--gb-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;font-family:var(--gb-font);color:var(--gb-text);background:var(--gb-background);font-synthesis:none}*{box-sizing:border-box}[hidden]{display:none!important}body{background:var(--gb-background);-webkit-font-smoothing:antialiased;min-width:320px;min-height:100vh;margin:0}button,input,textarea{font:inherit}button{cursor:pointer}.topbar{height:60px;color:var(--gb-text);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0a0e15eb;border-bottom:1px solid #1e293bcc;align-items:center;gap:12px;padding:0 24px;display:flex}.brand-mark{object-fit:contain;background:var(--gb-primary);border-radius:6px;width:32px;height:32px}.product-name{font-size:15px;font-weight:700}.project-path{text-overflow:ellipsis;white-space:nowrap;max-width:min(60vw,680px);color:var(--gb-muted);font:11px var(--gb-mono);overflow:hidden}.icon-button{border:1px solid var(--gb-border);width:36px;height:36px;color:var(--gb-muted);background:var(--gb-surface);cursor:pointer;border-radius:6px;place-items:center;margin-left:auto;display:grid}.icon-button:hover{color:var(--gb-primary);background:var(--gb-surface-high)}.icon-button:disabled{opacity:.5;cursor:wait}.icon-button svg{width:17px;height:17px}.icon-button.light{color:var(--gb-muted);border-color:var(--gb-border);background:var(--gb-surface-high);margin-left:0}.icon-button.light:hover{background:var(--gb-surface-highest)}.status-band{background:var(--gb-background);border-bottom:1px solid var(--gb-border);justify-content:space-between;align-items:center;gap:24px;min-height:118px;padding:30px clamp(24px,5vw,72px);display:flex}.eyebrow{color:var(--gb-primary);font-family:var(--gb-mono);letter-spacing:.08em;font-size:11px;font-weight:800}h1,h2,h3,p{letter-spacing:0;margin:0}h1{margin-top:5px;font-size:28px;line-height:1.2}.runtime-status{color:var(--gb-muted);font-family:var(--gb-mono);align-items:center;font-size:12px;font-weight:650;display:flex}.runtime-status span{background:var(--gb-orange);border-radius:50%;width:8px;height:8px}.runtime-status.ready span{background:var(--gb-healthy)}.runtime-status.error span{background:var(--gb-danger)}.workspace{grid-template-columns:220px minmax(0,1fr);min-height:calc(100vh - 176px);display:grid}.sidebar{background:var(--gb-surface);border-right:1px solid var(--gb-border);padding:16px 12px}.nav-item{color:#93a19abf;text-align:left;width:100%;height:40px;font-family:var(--gb-mono);background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:10px;padding:0 12px;font-size:11px;display:flex}.nav-item svg{width:17px;height:17px}.nav-item:hover{background:#262a32a6}.nav-item.active{color:var(--gb-text);background:#4edea314;border-color:#4edea366;font-weight:700;box-shadow:0 0 0 1px #4edea359}.nav-item:disabled{opacity:.55}.content{width:min(980px,100%);padding:32px clamp(24px,5vw,64px) 56px}.section-heading{justify-content:space-between;align-items:end;margin-bottom:18px;display:flex}h2{margin-top:4px;font-size:20px;line-height:1.3}.capability-list,.status-list{background:var(--gb-surface);border:1px solid var(--gb-border);border-radius:8px;overflow:hidden;box-shadow:0 16px 48px #0003}.capability-row,.status-row{border-bottom:1px solid var(--gb-border);grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:15px;min-height:82px;padding:16px 18px;display:grid}.capability-row:last-child,.status-row:last-child{border-bottom:0}.capability-icon{border:1px solid var(--gb-border);background:var(--gb-surface-high);border-radius:8px;place-items:center;width:40px;height:40px;display:grid}.capability-icon svg{width:19px;height:19px}.capability-icon.apps{color:var(--gb-cyan)}.capability-icon.firebase{color:var(--gb-orange)}.capability-icon.account,.capability-icon.development{color:var(--gb-primary)}h3{font-size:14px}.capability-row p,.status-row p{color:var(--gb-muted);margin-top:4px;font-size:12px}.badge{border:1px solid var(--gb-border);min-width:94px;color:var(--gb-muted);background:var(--gb-surface-high);font-family:var(--gb-mono);text-align:center;border-radius:4px;padding:5px 8px;font-size:10px;font-weight:700}.badge.configured{color:var(--gb-primary);background:#4edea314;border-color:#4edea373}.badge.inactive{color:var(--gb-muted)}.mono-detail{text-overflow:ellipsis;white-space:nowrap;font-family:var(--gb-mono);overflow:hidden}.action-bar{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.command-button,.secondary-button{border:1px solid var(--gb-border);min-height:36px;color:var(--gb-muted);background:var(--gb-surface-high);cursor:pointer;font-family:var(--gb-mono);border-radius:6px;justify-content:center;align-items:center;gap:7px;padding:0 13px;font-size:11px;font-weight:700;display:inline-flex}.button{cursor:pointer;border:0;border-radius:5px;justify-content:center;align-items:center;gap:7px;min-height:39px;padding:0 17px;font-size:12px;font-weight:700;display:inline-flex}.button svg{width:15px;height:15px}.button--primary{color:var(--gb-primary-dark);background:var(--gb-primary)}.button--primary:hover:not(:disabled){background:var(--gb-primary-hover)}.button:disabled{opacity:.4;cursor:not-allowed}.command-button svg,.secondary-button svg{width:15px;height:15px}.command-button:hover,.secondary-button:hover{color:var(--gb-text);background:var(--gb-surface-highest)}.command-button.primary{color:var(--gb-primary-dark);border-color:var(--gb-primary);background:var(--gb-primary)}.command-button.danger{color:#190707;border-color:var(--gb-danger);background:var(--gb-danger)}.command-button:disabled{opacity:.45;cursor:not-allowed}.credential-map{border:1px solid var(--gb-border);background:var(--gb-code);border-radius:8px;overflow:hidden}.credential-map__header{color:var(--gb-muted);border-bottom:1px solid var(--gb-border);font:10px/1.4 var(--gb-mono);text-transform:uppercase;padding:10px 12px;font-weight:700}.credential-map__row{border-bottom:1px solid var(--gb-border);grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr) 36px;align-items:center;gap:10px;min-height:42px;padding:7px 10px 7px 12px;display:grid}.credential-map__row:last-child{border-bottom:0}.credential-map code{overflow-wrap:anywhere;color:var(--gb-text);font:11px/1.45 var(--gb-mono)}.credential-map span{overflow-wrap:anywhere;color:var(--gb-muted);font:11px/1.45 var(--gb-mono)}.copy-key{width:30px;height:30px}.setup-mode{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:22px;display:grid}.setup-mode__button{border:1px solid var(--gb-border);min-height:96px;color:var(--gb-text);background:var(--gb-surface);text-align:left;cursor:pointer;border-radius:8px;flex-direction:column;gap:7px;padding:16px;display:flex}.setup-mode__button:hover{background:var(--gb-surface-high)}.setup-mode__button--active{background:#4edea314;border-color:#4edea373;box-shadow:0 0 0 1px #4edea359}.setup-mode__button strong{font-size:13px}.setup-mode__button span{color:var(--gb-muted);font-size:11px;line-height:1.55}.panel{border:1px solid var(--gb-border);background:#1c202799;border-radius:8px;flex-direction:column;gap:14px;margin-top:14px;padding:16px;display:flex}.info-box{color:var(--gb-muted);background:#1c202799;border:1px solid #1e293bd9;border-radius:8px;align-items:flex-start;gap:11px;margin-top:16px;padding:14px;font-size:12px;line-height:1.6;display:flex}.info-box__icon{border:1px solid var(--gb-cyan);width:18px;height:18px;color:var(--gb-cyan);border-radius:999px;flex:none;place-items:center;font-family:serif;font-size:12px;font-weight:700;display:grid}.field{flex-direction:column;gap:8px;margin-top:18px;display:flex}.panel .field{margin-top:0}.field__label{color:var(--gb-text);font-family:var(--gb-mono);font-size:12px;font-weight:500}.field input{border:1px solid var(--gb-border);width:100%;height:43px;color:var(--gb-text);background:var(--gb-code);font:12px var(--gb-mono);border-radius:8px;outline:none;padding:0 13px}.field input::placeholder{color:#46534d}.field input:focus{border-color:var(--gb-primary);box-shadow:0 0 0 2px #4edea314}.field__help{color:#93a19ab3;font-family:var(--gb-mono);margin:0;font-size:10px;line-height:1.55}.required{color:#ffb4ab}.activity{margin-top:30px}.activity-heading{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.text-button{color:var(--gb-muted);cursor:pointer;font-family:var(--gb-mono);background:0 0;border:0;font-size:11px;font-weight:700}.text-button:hover{color:var(--gb-primary)}.log{height:190px;color:var(--gb-primary);background:var(--gb-code);border:1px solid var(--gb-border);font:12px/1.6 var(--gb-mono);border-radius:8px;padding:8px 0;overflow:auto}.log-row{grid-template-columns:84px 1fr;gap:10px;padding:4px 14px;display:grid}.log-row time{color:var(--gb-outline)}.log-row.progress span{color:var(--gb-cyan)}.log-row.error span{color:var(--gb-danger)}dialog{border:1px solid var(--gb-border);width:min(440px,100vw - 32px);color:var(--gb-text);background:var(--gb-surface);border-radius:8px;padding:0;box-shadow:0 24px 70px #00000059}dialog::backdrop{background:#040711b8}dialog form{padding:20px}.dialog-heading{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.dialog-close{width:32px;height:32px;color:var(--gb-muted);cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.dialog-close:hover{color:var(--gb-primary)}.dialog-close svg{width:18px;height:18px}dialog label{color:var(--gb-text);font-family:var(--gb-mono);margin-bottom:7px;font-size:12px;font-weight:500;display:block}dialog input{border:1px solid var(--gb-border);width:100%;height:43px;color:var(--gb-text);background:var(--gb-code);font:12px var(--gb-mono);border-radius:8px;padding:0 13px}dialog input:focus{border-color:var(--gb-primary);outline:0;box-shadow:0 0 0 2px #4edea314}.dialog-copy{color:var(--gb-muted);font-size:13px;line-height:1.6}.dialog-actions{justify-content:flex-end;gap:8px;margin-top:24px;display:flex}@media (width<=700px){.topbar{padding:0 16px}.status-band{min-height:104px;padding:20px}h1{font-size:23px}.workspace{grid-template-columns:1fr}.sidebar{border-bottom:1px solid #d5ddd7;border-right:0;padding:8px;display:flex;overflow-x:auto}.nav-item{width:auto;min-width:max-content}.content{padding:24px 16px 40px}.capability-row,.status-row{grid-template-columns:40px minmax(0,1fr)}.badge{grid-column:2;justify-self:start}.action-bar{grid-template-columns:1fr 1fr;display:grid}}