@papert-code/papert-code 0.3.9 → 0.3.91

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 (2) hide show
  1. package/dist/cli.js +3 -233
  2. package/package.json +2 -2
package/dist/cli.js CHANGED
@@ -100711,7 +100711,7 @@ import { fileURLToPath as fileURLToPath5 } from "node:url";
100711
100711
  import path15 from "node:path";
100712
100712
  async function getVersion() {
100713
100713
  const pkgJson = await getPackageJson(__dirname3);
100714
- return "0.3.9";
100714
+ return "0.3.91";
100715
100715
  }
100716
100716
  var __filename2, __dirname3;
100717
100717
  var init_version2 = __esm({
@@ -171503,7 +171503,7 @@ function createContentGeneratorConfig(config2, authType, generationConfig) {
171503
171503
  };
171504
171504
  }
171505
171505
  async function createContentGenerator(config2, gcConfig, isInitialAuth) {
171506
- const version3 = "0.3.9";
171506
+ const version3 = "0.3.91";
171507
171507
  const userAgent2 = `PapertCode/${version3} (${process.platform}; ${process.arch})`;
171508
171508
  const baseHeaders = {
171509
171509
  "User-Agent": userAgent2
@@ -401856,60 +401856,14 @@ var require_prompts3 = __commonJS({
401856
401856
  // packages/cli/src/admin/adminClient.ts
401857
401857
  import path130 from "node:path";
401858
401858
  import fs108 from "node:fs/promises";
401859
- function getAdminEnv() {
401860
- const rawBase = process.env["PAPERT_ADMIN_URL"];
401861
- const baseUrl = rawBase ? rawBase.replace(/\/$/, "") : void 0;
401862
- return {
401863
- baseUrl,
401864
- email: process.env["PAPERT_ADMIN_EMAIL"],
401865
- password: process.env["PAPERT_ADMIN_PASSWORD"],
401866
- token: process.env["PAPERT_ADMIN_TOKEN"]
401867
- };
401868
- }
401869
401859
  function getAdminTokenPath() {
401870
401860
  return path130.join(Storage.getGlobalPapertDir(), "admin-token.json");
401871
401861
  }
401872
- async function loadCachedToken(baseUrl) {
401873
- try {
401874
- const raw2 = await fs108.readFile(getAdminTokenPath(), "utf-8");
401875
- const parsed = JSON.parse(raw2);
401876
- if (!parsed.token || !parsed.baseUrl) return null;
401877
- if (parsed.baseUrl !== baseUrl) return null;
401878
- return { token: parsed.token, email: parsed.email };
401879
- } catch {
401880
- return null;
401881
- }
401882
- }
401883
401862
  async function saveCachedToken(baseUrl, token2, email2) {
401884
401863
  const payload = { baseUrl, token: token2, email: email2, savedAt: (/* @__PURE__ */ new Date()).toISOString() };
401885
401864
  await fs108.mkdir(path130.dirname(getAdminTokenPath()), { recursive: true });
401886
401865
  await fs108.writeFile(getAdminTokenPath(), JSON.stringify(payload, null, 2));
401887
401866
  }
401888
- async function promptForLogin() {
401889
- if (!process.stdin.isTTY) return null;
401890
- const response = await (0, import_prompts4.default)(
401891
- [
401892
- {
401893
- type: "text",
401894
- name: "email",
401895
- message: "Admin email",
401896
- validate: /* @__PURE__ */ __name((value) => value.includes("@") ? true : "Enter a valid email", "validate")
401897
- },
401898
- {
401899
- type: "password",
401900
- name: "password",
401901
- message: "Admin password"
401902
- }
401903
- ],
401904
- {
401905
- onCancel: /* @__PURE__ */ __name(() => true, "onCancel")
401906
- }
401907
- );
401908
- if (!response.email || !response.password) {
401909
- return null;
401910
- }
401911
- return { email: response.email, password: response.password };
401912
- }
401913
401867
  async function requestJson(baseUrl, path157, options2 = {}) {
401914
401868
  const response = await fetch(`${baseUrl}${path157}`, options2);
401915
401869
  const payload = await response.json().catch(() => void 0);
@@ -401925,92 +401879,6 @@ async function requestJson(baseUrl, path157, options2 = {}) {
401925
401879
  function isFetchFailure(err) {
401926
401880
  return err instanceof TypeError && err.message === "fetch failed";
401927
401881
  }
401928
- async function resolveAdminSession() {
401929
- const { baseUrl, email: email2, password, token: token2 } = getAdminEnv();
401930
- if (!baseUrl) return null;
401931
- let authToken = token2;
401932
- let loginResponse;
401933
- if (!authToken) {
401934
- const cached2 = await loadCachedToken(baseUrl);
401935
- if (cached2?.token) {
401936
- authToken = cached2.token;
401937
- }
401938
- }
401939
- let loginEmail = email2;
401940
- let loginPassword = password;
401941
- if (!authToken && (!loginEmail || !loginPassword)) {
401942
- const prompted = await promptForLogin();
401943
- if (prompted) {
401944
- loginEmail = prompted.email;
401945
- loginPassword = prompted.password;
401946
- }
401947
- }
401948
- if (!authToken && loginEmail && loginPassword) {
401949
- try {
401950
- loginResponse = await requestJson(baseUrl, "/api/v1/auth/login", {
401951
- method: "POST",
401952
- headers: { "Content-Type": "application/json" },
401953
- body: JSON.stringify({ email: loginEmail, password: loginPassword })
401954
- });
401955
- authToken = loginResponse.token;
401956
- if (authToken) {
401957
- await saveCachedToken(baseUrl, authToken, loginEmail);
401958
- }
401959
- } catch (err) {
401960
- if (isFetchFailure(err)) {
401961
- console.warn(
401962
- `Warning: unable to reach admin server at ${baseUrl}. Continuing without admin session.`
401963
- );
401964
- return null;
401965
- }
401966
- throw err;
401967
- }
401968
- }
401969
- if (!authToken) {
401970
- return null;
401971
- }
401972
- try {
401973
- const configResponse = await requestJson(baseUrl, "/api/v1/user/config", {
401974
- headers: {
401975
- Authorization: `Bearer ${authToken}`
401976
- }
401977
- });
401978
- const user = configResponse.user ?? loginResponse?.user;
401979
- const provider = configResponse.provider ?? loginResponse?.provider ?? loginResponse?.user?.provider ?? {};
401980
- return {
401981
- baseUrl,
401982
- token: authToken,
401983
- userId: user?.id || email2 || "unknown-user",
401984
- email: user?.email || email2 || "unknown",
401985
- selfManaged: Boolean(user?.selfManaged),
401986
- provider,
401987
- controls: configResponse.controls ?? loginResponse?.controls ?? {},
401988
- quota: configResponse.quota ?? loginResponse?.quota
401989
- };
401990
- } catch (err) {
401991
- if (isFetchFailure(err)) {
401992
- console.warn(
401993
- `Warning: unable to reach admin server at ${baseUrl}. Continuing without admin session.`
401994
- );
401995
- return null;
401996
- }
401997
- if (err.status === 401) {
401998
- try {
401999
- await fs108.unlink(getAdminTokenPath());
402000
- } catch {
402001
- }
402002
- }
402003
- const payload = err.payload;
402004
- if (payload?.error === "quota_exceeded") {
402005
- throw new AdminQuotaError(payload.message || "Token quota exceeded", {
402006
- quota: payload.quota,
402007
- token: authToken,
402008
- baseUrl
402009
- });
402010
- }
402011
- throw err;
402012
- }
402013
- }
402014
401882
  async function resolveAdminSessionWithCredentials(options2) {
402015
401883
  const baseUrl = options2.baseUrl.replace(/\/$/, "");
402016
401884
  if (!baseUrl) return null;
@@ -402092,64 +401960,6 @@ function applyAdminSessionToEnv(session) {
402092
401960
  process.env["PAPERT_ADMIN_MODELS"] = JSON.stringify(models);
402093
401961
  }
402094
401962
  }
402095
- async function reportAdminUsage(session, config2) {
402096
- const metrics2 = uiTelemetryService.getMetrics();
402097
- const usage2 = computeUsageFromMetrics(metrics2);
402098
- const totalTokens = usage2?.total_tokens ?? (typeof usage2?.input_tokens === "number" && typeof usage2?.output_tokens === "number" ? usage2.input_tokens + usage2.output_tokens : void 0);
402099
- if (!totalTokens) return;
402100
- await requestJson(session.baseUrl, "/api/v1/user/usage", {
402101
- method: "POST",
402102
- headers: {
402103
- Authorization: `Bearer ${session.token}`,
402104
- "Content-Type": "application/json"
402105
- },
402106
- body: JSON.stringify({
402107
- sessionId: config2.getSessionId(),
402108
- totalTokens,
402109
- promptTokens: usage2.input_tokens,
402110
- completionTokens: usage2.output_tokens,
402111
- model: config2.getModel(),
402112
- baseUrl: config2.getContentGeneratorConfig().baseUrl
402113
- })
402114
- });
402115
- }
402116
- async function uploadAdminSession(session, config2) {
402117
- const sessionId = config2.getSessionId();
402118
- const chatPath = path130.join(
402119
- config2.storage.getProjectTempDir(),
402120
- "chats",
402121
- `${sessionId}.jsonl`
402122
- );
402123
- let transcript;
402124
- try {
402125
- transcript = await fs108.readFile(chatPath, "utf-8");
402126
- } catch {
402127
- return;
402128
- }
402129
- await requestJson(session.baseUrl, "/api/v1/user/sessions", {
402130
- method: "POST",
402131
- headers: {
402132
- Authorization: `Bearer ${session.token}`,
402133
- "Content-Type": "application/json"
402134
- },
402135
- body: JSON.stringify({
402136
- sessionId,
402137
- transcript,
402138
- model: config2.getModel(),
402139
- baseUrl: config2.getContentGeneratorConfig().baseUrl
402140
- })
402141
- });
402142
- }
402143
- async function requestQuotaIncrease(baseUrl, token2, reason) {
402144
- await requestJson(baseUrl, "/api/v1/user/quota-requests", {
402145
- method: "POST",
402146
- headers: {
402147
- Authorization: `Bearer ${token2}`,
402148
- "Content-Type": "application/json"
402149
- },
402150
- body: JSON.stringify({ reason })
402151
- });
402152
- }
402153
401963
  var import_prompts4, AdminQuotaError;
402154
401964
  var init_adminClient = __esm({
402155
401965
  async "packages/cli/src/admin/adminClient.ts"() {
@@ -402173,19 +401983,12 @@ var init_adminClient = __esm({
402173
401983
  this.baseUrl = options2.baseUrl;
402174
401984
  }
402175
401985
  };
402176
- __name(getAdminEnv, "getAdminEnv");
402177
401986
  __name(getAdminTokenPath, "getAdminTokenPath");
402178
- __name(loadCachedToken, "loadCachedToken");
402179
401987
  __name(saveCachedToken, "saveCachedToken");
402180
- __name(promptForLogin, "promptForLogin");
402181
401988
  __name(requestJson, "requestJson");
402182
401989
  __name(isFetchFailure, "isFetchFailure");
402183
- __name(resolveAdminSession, "resolveAdminSession");
402184
401990
  __name(resolveAdminSessionWithCredentials, "resolveAdminSessionWithCredentials");
402185
401991
  __name(applyAdminSessionToEnv, "applyAdminSessionToEnv");
402186
- __name(reportAdminUsage, "reportAdminUsage");
402187
- __name(uploadAdminSession, "uploadAdminSession");
402188
- __name(requestQuotaIncrease, "requestQuotaIncrease");
402189
401992
  }
402190
401993
  });
402191
401994
 
@@ -433731,7 +433534,7 @@ var init_acpAgent = __esm({
433731
433534
  name: APPROVAL_MODE_INFO[mode].name,
433732
433535
  description: APPROVAL_MODE_INFO[mode].description
433733
433536
  }));
433734
- const version3 = "0.3.9";
433537
+ const version3 = "0.3.91";
433735
433538
  return {
433736
433539
  protocolVersion: PROTOCOL_VERSION,
433737
433540
  agentInfo: {
@@ -434034,29 +433837,6 @@ async function main() {
434034
433837
  migrateDeprecatedSettings(settings);
434035
433838
  await cleanupCheckpoints();
434036
433839
  let argv = await parseArguments(settings.merged);
434037
- let adminSession = null;
434038
- try {
434039
- adminSession = await resolveAdminSession();
434040
- if (adminSession) {
434041
- applyAdminSessionToEnv(adminSession);
434042
- }
434043
- } catch (err) {
434044
- if (err instanceof AdminQuotaError) {
434045
- if (err.baseUrl && err.token) {
434046
- try {
434047
- await requestQuotaIncrease(
434048
- err.baseUrl,
434049
- err.token,
434050
- "User exceeded token quota during login."
434051
- );
434052
- } catch {
434053
- }
434054
- }
434055
- console.error(err.message);
434056
- process.exit(1);
434057
- }
434058
- throw err;
434059
- }
434060
433840
  const targetCwd = argv.cwd ? path156.resolve(argv.cwd) : process.cwd();
434061
433841
  if (argv.promptInteractive && !process.stdin.isTTY) {
434062
433842
  console.error(
@@ -434149,15 +433929,6 @@ ${finalArgs[promptIndex + 1]}`;
434149
433929
  argv,
434150
433930
  targetCwd
434151
433931
  );
434152
- if (adminSession) {
434153
- registerCleanup(async () => {
434154
- try {
434155
- await reportAdminUsage(adminSession, config2);
434156
- await uploadAdminSession(adminSession, config2);
434157
- } catch {
434158
- }
434159
- });
434160
- }
434161
433932
  if (config2.getListExtensions()) {
434162
433933
  console.log("Installed extensions:");
434163
433934
  for (const extension of extensions) {
@@ -434336,7 +434107,6 @@ var init_gemini = __esm({
434336
434107
  await init_validateNonInterActiveAuth();
434337
434108
  await init_ResumeSessionPicker();
434338
434109
  init_deferred();
434339
- await init_adminClient();
434340
434110
  init_extensionEnablement();
434341
434111
  init_sandboxConfig();
434342
434112
  await init_acpAgent();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@papert-code/papert-code",
3
- "version": "0.3.9",
3
+ "version": "0.3.91",
4
4
  "engines": {
5
5
  "node": ">=20.0.0"
6
6
  },
@@ -137,4 +137,4 @@
137
137
  "prettier --write"
138
138
  ]
139
139
  }
140
- }
140
+ }