@superblocksteam/cli 2.0.100-next.0 → 2.0.100-next.2

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 (96) hide show
  1. package/README.md +1 -1
  2. package/dist/{acorn-7557T57B.js → acorn-3PVDUZQI.js} +3 -3
  3. package/dist/{angular-TSGNTF3H.js → angular-G25U54XR.js} +3 -3
  4. package/dist/{api-GTIC45EX.js → api-JGOVG2EU.js} +4 -4
  5. package/dist/{babel-UKM3X3BF.js → babel-BIZEN6QE.js} +3 -3
  6. package/dist/{chunk-LJYMUKXI.js → chunk-4CDIXNG4.js} +3 -3
  7. package/dist/{chunk-ZRCZ2OAE.js → chunk-AYIXENLH.js} +3 -3
  8. package/dist/{chunk-67BQ374M.js → chunk-CLZEXRFW.js} +4 -4
  9. package/dist/{chunk-GBUKZJSH.js → chunk-E273HZ2J.js} +3 -3
  10. package/dist/{chunk-I4K6DFLP.js → chunk-ECWH2EAG.js} +3 -3
  11. package/dist/{chunk-S2PZMU3X.js → chunk-J5ZYYEJT.js} +3 -3
  12. package/dist/{chunk-OVOHVB2N.js → chunk-JQRYQZHU.js} +3 -3
  13. package/dist/{chunk-TJW7ZGQJ.js → chunk-K5RFDSVF.js} +6 -6
  14. package/dist/{chunk-WXMT7OBU.js → chunk-KJYT3QVW.js} +3 -3
  15. package/dist/{chunk-LPP5KUW4.js → chunk-KOGKKME2.js} +3 -3
  16. package/dist/{chunk-5Y5LIQVL.js → chunk-OQTURUF5.js} +3 -3
  17. package/dist/{chunk-3MT4DLUU.js → chunk-RAZASBBF.js} +4 -4
  18. package/dist/{chunk-HBELUVA7.js → chunk-WNVFTM7D.js} +2 -2
  19. package/dist/{chunk-XCZST6H7.js → chunk-XYEINSYR.js} +4 -4
  20. package/dist/{cli-truncate-BBFIB7PJ.js → cli-truncate-5AEGTCV4.js} +5 -5
  21. package/dist/commands/dev-parent.js +2 -2
  22. package/dist/{dd-trace-CHEZTK3J.js → dd-trace-NTAMVOZP.js} +7 -7
  23. package/dist/{embedded-playwright-mcp-server-52RQS74W.js → embedded-playwright-mcp-server-4QEXQTI7.js} +3 -3
  24. package/dist/{enquirer-PDTBQAX2.js → enquirer-MD4ILGGR.js} +4 -4
  25. package/dist/{estree-6BAMTQ34.js → estree-6JFRN447.js} +3 -3
  26. package/dist/{flow-VAL47OXG.js → flow-CE2BIN75.js} +3 -3
  27. package/dist/{getMachineId-bsd-LHOH2ZMK.js → getMachineId-bsd-7J4A6E2Y.js} +5 -5
  28. package/dist/{getMachineId-darwin-XU5MGFHF.js → getMachineId-darwin-S7INYEJH.js} +5 -5
  29. package/dist/{getMachineId-linux-NHO6VY6X.js → getMachineId-linux-S2F5IIKU.js} +4 -4
  30. package/dist/{getMachineId-unsupported-ULX37YJW.js → getMachineId-unsupported-2JSJ6AYT.js} +4 -4
  31. package/dist/{getMachineId-win-P66ZDNNA.js → getMachineId-win-4OPMBF3E.js} +5 -5
  32. package/dist/{glimmer-S5ZJQPDK.js → glimmer-U6LHQ6WT.js} +3 -3
  33. package/dist/{graphql-OJGZJHUI.js → graphql-BR4APEAZ.js} +3 -3
  34. package/dist/{html-NWEXGGHG.js → html-6FQCV33C.js} +3 -3
  35. package/dist/index.js +514 -194
  36. package/dist/index.js.map +1 -1
  37. package/dist/{jiti-PUX4C6W5.js → jiti-KGPB6B5H.js} +3 -3
  38. package/dist/{log-update-ZG5GNEPY.js → log-update-IPZBTHHB.js} +6 -6
  39. package/dist/{markdown-BO7IBCCK.js → markdown-VDPENZHO.js} +3 -3
  40. package/dist/{meriyah-MUU4ZVB5.js → meriyah-XROZPDRC.js} +3 -3
  41. package/dist/{postcss-U2SWUSAE.js → postcss-LJDERGX3.js} +3 -3
  42. package/dist/{read-pkg-MACAVKU2.js → read-pkg-DT5VH6EB.js} +5 -5
  43. package/dist/{spans-EKLFG75O.js → spans-TRK7PRT7.js} +4 -4
  44. package/dist/{src-OPWOTRNU.js → src-MZLIUYEK.js} +3 -3
  45. package/dist/{token-RALGBFLE.js → token-YEAFSAI7.js} +5 -5
  46. package/dist/{token-util-DRYJOWXP.js → token-util-6LUKVTZZ.js} +5 -5
  47. package/dist/{typescript-HWZC76Y5.js → typescript-KOSB7NY5.js} +3 -3
  48. package/dist/{wrap-ansi-RELC4KH4.js → wrap-ansi-UDL4BSKP.js} +5 -5
  49. package/dist/{yaml-CCZIV5UJ.js → yaml-6Z3PUEGD.js} +3 -3
  50. package/oclif.manifest.json +1 -1
  51. package/package.json +4 -4
  52. /package/dist/{acorn-7557T57B.js.map → acorn-3PVDUZQI.js.map} +0 -0
  53. /package/dist/{angular-TSGNTF3H.js.map → angular-G25U54XR.js.map} +0 -0
  54. /package/dist/{api-GTIC45EX.js.map → api-JGOVG2EU.js.map} +0 -0
  55. /package/dist/{babel-UKM3X3BF.js.map → babel-BIZEN6QE.js.map} +0 -0
  56. /package/dist/{chunk-LJYMUKXI.js.map → chunk-4CDIXNG4.js.map} +0 -0
  57. /package/dist/{chunk-ZRCZ2OAE.js.map → chunk-AYIXENLH.js.map} +0 -0
  58. /package/dist/{chunk-67BQ374M.js.map → chunk-CLZEXRFW.js.map} +0 -0
  59. /package/dist/{chunk-GBUKZJSH.js.map → chunk-E273HZ2J.js.map} +0 -0
  60. /package/dist/{chunk-I4K6DFLP.js.map → chunk-ECWH2EAG.js.map} +0 -0
  61. /package/dist/{chunk-S2PZMU3X.js.map → chunk-J5ZYYEJT.js.map} +0 -0
  62. /package/dist/{chunk-OVOHVB2N.js.map → chunk-JQRYQZHU.js.map} +0 -0
  63. /package/dist/{chunk-TJW7ZGQJ.js.map → chunk-K5RFDSVF.js.map} +0 -0
  64. /package/dist/{chunk-WXMT7OBU.js.map → chunk-KJYT3QVW.js.map} +0 -0
  65. /package/dist/{chunk-LPP5KUW4.js.map → chunk-KOGKKME2.js.map} +0 -0
  66. /package/dist/{chunk-5Y5LIQVL.js.map → chunk-OQTURUF5.js.map} +0 -0
  67. /package/dist/{chunk-3MT4DLUU.js.map → chunk-RAZASBBF.js.map} +0 -0
  68. /package/dist/{chunk-HBELUVA7.js.map → chunk-WNVFTM7D.js.map} +0 -0
  69. /package/dist/{chunk-XCZST6H7.js.map → chunk-XYEINSYR.js.map} +0 -0
  70. /package/dist/{cli-truncate-BBFIB7PJ.js.map → cli-truncate-5AEGTCV4.js.map} +0 -0
  71. /package/dist/{dd-trace-CHEZTK3J.js.map → dd-trace-NTAMVOZP.js.map} +0 -0
  72. /package/dist/{embedded-playwright-mcp-server-52RQS74W.js.map → embedded-playwright-mcp-server-4QEXQTI7.js.map} +0 -0
  73. /package/dist/{enquirer-PDTBQAX2.js.map → enquirer-MD4ILGGR.js.map} +0 -0
  74. /package/dist/{estree-6BAMTQ34.js.map → estree-6JFRN447.js.map} +0 -0
  75. /package/dist/{flow-VAL47OXG.js.map → flow-CE2BIN75.js.map} +0 -0
  76. /package/dist/{getMachineId-bsd-LHOH2ZMK.js.map → getMachineId-bsd-7J4A6E2Y.js.map} +0 -0
  77. /package/dist/{getMachineId-darwin-XU5MGFHF.js.map → getMachineId-darwin-S7INYEJH.js.map} +0 -0
  78. /package/dist/{getMachineId-linux-NHO6VY6X.js.map → getMachineId-linux-S2F5IIKU.js.map} +0 -0
  79. /package/dist/{getMachineId-unsupported-ULX37YJW.js.map → getMachineId-unsupported-2JSJ6AYT.js.map} +0 -0
  80. /package/dist/{getMachineId-win-P66ZDNNA.js.map → getMachineId-win-4OPMBF3E.js.map} +0 -0
  81. /package/dist/{glimmer-S5ZJQPDK.js.map → glimmer-U6LHQ6WT.js.map} +0 -0
  82. /package/dist/{graphql-OJGZJHUI.js.map → graphql-BR4APEAZ.js.map} +0 -0
  83. /package/dist/{html-NWEXGGHG.js.map → html-6FQCV33C.js.map} +0 -0
  84. /package/dist/{jiti-PUX4C6W5.js.map → jiti-KGPB6B5H.js.map} +0 -0
  85. /package/dist/{log-update-ZG5GNEPY.js.map → log-update-IPZBTHHB.js.map} +0 -0
  86. /package/dist/{markdown-BO7IBCCK.js.map → markdown-VDPENZHO.js.map} +0 -0
  87. /package/dist/{meriyah-MUU4ZVB5.js.map → meriyah-XROZPDRC.js.map} +0 -0
  88. /package/dist/{postcss-U2SWUSAE.js.map → postcss-LJDERGX3.js.map} +0 -0
  89. /package/dist/{read-pkg-MACAVKU2.js.map → read-pkg-DT5VH6EB.js.map} +0 -0
  90. /package/dist/{spans-EKLFG75O.js.map → spans-TRK7PRT7.js.map} +0 -0
  91. /package/dist/{src-OPWOTRNU.js.map → src-MZLIUYEK.js.map} +0 -0
  92. /package/dist/{token-RALGBFLE.js.map → token-YEAFSAI7.js.map} +0 -0
  93. /package/dist/{token-util-DRYJOWXP.js.map → token-util-6LUKVTZZ.js.map} +0 -0
  94. /package/dist/{typescript-HWZC76Y5.js.map → typescript-KOSB7NY5.js.map} +0 -0
  95. /package/dist/{wrap-ansi-RELC4KH4.js.map → wrap-ansi-UDL4BSKP.js.map} +0 -0
  96. /package/dist/{yaml-CCZIV5UJ.js.map → yaml-6Z3PUEGD.js.map} +0 -0
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  if (typeof process === 'object' && process !== null &&
2
2
  process.env !== null && typeof process.env === 'object') {
3
3
  process.env.DD_GIT_REPOSITORY_URL = 'https://token@github.com/superblocksteam/superblocks.git';
4
- process.env.DD_GIT_COMMIT_SHA = '1b50c857130485a8cf38b48d9d43bed75b3d3645';
4
+ process.env.DD_GIT_COMMIT_SHA = '9d0d582fdaba593a8b0288349bb61b3bd7f87f96';
5
5
  }
6
6
  import { createRequire as $dd_createRequire } from 'module';
7
7
  import { fileURLToPath as $dd_fileURLToPath } from 'url';
@@ -24,10 +24,10 @@ import {
24
24
  require_re,
25
25
  require_semver,
26
26
  require_valid
27
- } from "./chunk-OVOHVB2N.js";
27
+ } from "./chunk-JQRYQZHU.js";
28
28
  import {
29
29
  require_enquirer
30
- } from "./chunk-I4K6DFLP.js";
30
+ } from "./chunk-ECWH2EAG.js";
31
31
  import {
32
32
  debounce_default,
33
33
  get_default,
@@ -44,7 +44,7 @@ import {
44
44
  require_lib,
45
45
  require_slugify,
46
46
  throttle_default
47
- } from "./chunk-LJYMUKXI.js";
47
+ } from "./chunk-4CDIXNG4.js";
48
48
  import {
49
49
  require_aspromise,
50
50
  require_dd_trace,
@@ -63,16 +63,16 @@ import {
63
63
  require_rpc,
64
64
  require_src,
65
65
  require_writer
66
- } from "./chunk-TJW7ZGQJ.js";
66
+ } from "./chunk-K5RFDSVF.js";
67
67
  import {
68
68
  require_commonjs
69
- } from "./chunk-GBUKZJSH.js";
69
+ } from "./chunk-E273HZ2J.js";
70
70
  import {
71
71
  require_dc_polyfill
72
- } from "./chunk-LPP5KUW4.js";
72
+ } from "./chunk-KOGKKME2.js";
73
73
  import {
74
74
  require_token_error
75
- } from "./chunk-5Y5LIQVL.js";
75
+ } from "./chunk-OQTURUF5.js";
76
76
  import {
77
77
  SpanKind,
78
78
  SpanStatusCode,
@@ -81,7 +81,7 @@ import {
81
81
  init_esm,
82
82
  metrics,
83
83
  trace
84
- } from "./chunk-S2PZMU3X.js";
84
+ } from "./chunk-J5ZYYEJT.js";
85
85
  import {
86
86
  __commonJS,
87
87
  __esm,
@@ -90,7 +90,7 @@ import {
90
90
  __toCommonJS,
91
91
  __toESM,
92
92
  init_cjs_shims
93
- } from "./chunk-HBELUVA7.js";
93
+ } from "./chunk-WNVFTM7D.js";
94
94
 
95
95
  // ../../../../node_modules/.pnpm/common-tags@1.8.2/node_modules/common-tags/lib/TemplateTag/TemplateTag.js
96
96
  var require_TemplateTag = __commonJS({
@@ -22007,8 +22007,8 @@ var require_get_vercel_oidc_token = __commonJS({
22007
22007
  }
22008
22008
  try {
22009
22009
  const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([
22010
- await import("./token-util-DRYJOWXP.js"),
22011
- await import("./token-RALGBFLE.js")
22010
+ await import("./token-util-6LUKVTZZ.js"),
22011
+ await import("./token-YEAFSAI7.js")
22012
22012
  ]);
22013
22013
  if (!token2 || isExpired(getTokenPayload(token2))) {
22014
22014
  await refreshToken();
@@ -128489,7 +128489,7 @@ var require_github_workflow = __commonJS({
128489
128489
  exports.isGitHubRemoteUrl = isGitHubRemoteUrl3;
128490
128490
  exports.buildGithubSuperblocksSyncWorkflow = buildGithubSuperblocksSyncWorkflow2;
128491
128491
  exports.getSuperblocksDomainFromBaseUrl = getSuperblocksDomainFromBaseUrl;
128492
- exports.buildGithubSuperblocksSyncWorkflowFromBaseUrl = buildGithubSuperblocksSyncWorkflowFromBaseUrl2;
128492
+ exports.buildGithubSuperblocksSyncWorkflowFromBaseUrl = buildGithubSuperblocksSyncWorkflowFromBaseUrl3;
128493
128493
  exports.DEFAULT_SUPERBLOCKS_DOMAIN = "app.superblocks.com";
128494
128494
  function isGitHubRemoteUrl3(remoteUrl) {
128495
128495
  return /(^git@github\.com:)|(^https?:\/\/github\.com\/)|(^ssh:\/\/git@github\.com\/)/.test(remoteUrl.trim());
@@ -128550,7 +128550,7 @@ jobs:
128550
128550
  return exports.DEFAULT_SUPERBLOCKS_DOMAIN;
128551
128551
  }
128552
128552
  }
128553
- function buildGithubSuperblocksSyncWorkflowFromBaseUrl2(superblocksBaseUrl) {
128553
+ function buildGithubSuperblocksSyncWorkflowFromBaseUrl3(superblocksBaseUrl) {
128554
128554
  return buildGithubSuperblocksSyncWorkflow2(getSuperblocksDomainFromBaseUrl(superblocksBaseUrl));
128555
128555
  }
128556
128556
  }
@@ -141826,19 +141826,19 @@ var require_getMachineId = __commonJS({
141826
141826
  if (!getMachineIdImpl) {
141827
141827
  switch (process5.platform) {
141828
141828
  case "darwin":
141829
- getMachineIdImpl = (await import("./getMachineId-darwin-XU5MGFHF.js")).getMachineId;
141829
+ getMachineIdImpl = (await import("./getMachineId-darwin-S7INYEJH.js")).getMachineId;
141830
141830
  break;
141831
141831
  case "linux":
141832
- getMachineIdImpl = (await import("./getMachineId-linux-NHO6VY6X.js")).getMachineId;
141832
+ getMachineIdImpl = (await import("./getMachineId-linux-S2F5IIKU.js")).getMachineId;
141833
141833
  break;
141834
141834
  case "freebsd":
141835
- getMachineIdImpl = (await import("./getMachineId-bsd-LHOH2ZMK.js")).getMachineId;
141835
+ getMachineIdImpl = (await import("./getMachineId-bsd-7J4A6E2Y.js")).getMachineId;
141836
141836
  break;
141837
141837
  case "win32":
141838
- getMachineIdImpl = (await import("./getMachineId-win-P66ZDNNA.js")).getMachineId;
141838
+ getMachineIdImpl = (await import("./getMachineId-win-4OPMBF3E.js")).getMachineId;
141839
141839
  break;
141840
141840
  default:
141841
- getMachineIdImpl = (await import("./getMachineId-unsupported-ULX37YJW.js")).getMachineId;
141841
+ getMachineIdImpl = (await import("./getMachineId-unsupported-2JSJ6AYT.js")).getMachineId;
141842
141842
  break;
141843
141843
  }
141844
141844
  }
@@ -202475,6 +202475,7 @@ var require_login = __commonJS({
202475
202475
  };
202476
202476
  })();
202477
202477
  Object.defineProperty(exports, "__esModule", { value: true });
202478
+ exports.resolveAuthFilePath = resolveAuthFilePath;
202478
202479
  exports.saveApiToken = saveApiToken3;
202479
202480
  exports.getLocalTokenWithUrlIfExists = getLocalTokenWithUrlIfExists6;
202480
202481
  exports.getLocalTokenWithUrl = getLocalTokenWithUrl7;
@@ -202482,20 +202483,24 @@ var require_login = __commonJS({
202482
202483
  var node_path_1 = __require("node:path");
202483
202484
  var fs55 = __importStar(require_lib());
202484
202485
  var constants_js_1 = require_constants15();
202486
+ function resolveAuthFilePath() {
202487
+ return process.env.SUPERBLOCKS_AUTH_FILE || (0, node_path_1.join)((0, node_os_1.homedir)(), constants_js_1.TOKEN_CONFIG_PATH);
202488
+ }
202485
202489
  async function saveApiToken3(superblocksBaseUrl, token2) {
202486
202490
  try {
202487
- await fs55.ensureDir((0, node_path_1.join)((0, node_os_1.homedir)(), ".superblocks"));
202491
+ const authFile = resolveAuthFilePath();
202492
+ await fs55.ensureDir((0, node_path_1.dirname)(authFile));
202488
202493
  if (token2) {
202489
202494
  const tokenConfig = {
202490
202495
  superblocksBaseUrl,
202491
202496
  token: token2
202492
202497
  };
202493
- await fs55.writeJSON((0, node_path_1.join)((0, node_os_1.homedir)(), constants_js_1.TOKEN_CONFIG_PATH), tokenConfig);
202498
+ await fs55.writeJSON(authFile, tokenConfig);
202494
202499
  } else {
202495
202500
  const tokenConfig = {
202496
202501
  superblocksBaseUrl
202497
202502
  };
202498
- await fs55.writeJSON((0, node_path_1.join)((0, node_os_1.homedir)(), constants_js_1.TOKEN_CONFIG_PATH), tokenConfig);
202503
+ await fs55.writeJSON(authFile, tokenConfig);
202499
202504
  }
202500
202505
  } catch {
202501
202506
  throw new constants_js_1.FileAccessError("Could not save token");
@@ -202510,7 +202515,7 @@ var require_login = __commonJS({
202510
202515
  }
202511
202516
  async function getLocalTokenWithUrl7() {
202512
202517
  try {
202513
- const tokenConfig = await fs55.readJSON(process.env.SUPERBLOCKS_AUTH_FILE || (0, node_path_1.join)((0, node_os_1.homedir)(), constants_js_1.TOKEN_CONFIG_PATH));
202518
+ const tokenConfig = await fs55.readJSON(resolveAuthFilePath());
202514
202519
  const superblocksBaseUrl = process.env.SUPERBLOCKS_BASE_URL || tokenConfig.superblocksBaseUrl;
202515
202520
  if (tokenConfig.token) {
202516
202521
  return {
@@ -202811,15 +202816,15 @@ var require_api_files = __commonJS({
202811
202816
  exports.readAppApiYamlFile = readAppApiYamlFile4;
202812
202817
  exports.resolveLanguageSpecificStepContentFromBlocks = resolveLanguageSpecificStepContentFromBlocks2;
202813
202818
  async function writeApiFiles3(...args) {
202814
- const esmFunction = await import("./api-GTIC45EX.js");
202819
+ const esmFunction = await import("./api-JGOVG2EU.js");
202815
202820
  return esmFunction.writeApiFiles(...args);
202816
202821
  }
202817
202822
  async function readAppApiYamlFile4(...args) {
202818
- const esmFunction = await import("./api-GTIC45EX.js");
202823
+ const esmFunction = await import("./api-JGOVG2EU.js");
202819
202824
  return esmFunction.readAppApiYamlFile(...args);
202820
202825
  }
202821
202826
  async function resolveLanguageSpecificStepContentFromBlocks2(...args) {
202822
- const esmFunction = await import("./api-GTIC45EX.js");
202827
+ const esmFunction = await import("./api-JGOVG2EU.js");
202823
202828
  return esmFunction.resolveLanguageSpecificStepContentFromBlocks(...args);
202824
202829
  }
202825
202830
  }
@@ -365124,7 +365129,7 @@ var require_config_loader = __commonJS({
365124
365129
  * @returns {Promise<{createJiti: Function|undefined, version: string;}>} A promise that fulfills with an object containing the jiti module's createJiti function and version.
365125
365130
  */
365126
365131
  static async loadJiti() {
365127
- const { createJiti } = await import("./jiti-PUX4C6W5.js");
365132
+ const { createJiti } = await import("./jiti-KGPB6B5H.js");
365128
365133
  const version5 = require_package6().version;
365129
365134
  return { createJiti, version: version5 };
365130
365135
  }
@@ -365453,7 +365458,7 @@ var require_eslint_helpers = __commonJS({
365453
365458
  }
365454
365459
  async function globMatch({ basePath, pattern }) {
365455
365460
  let found = false;
365456
- const { hfs } = await import("./src-OPWOTRNU.js");
365461
+ const { hfs } = await import("./src-MZLIUYEK.js");
365457
365462
  const patternToUse = normalizeToPosix(path97.relative(basePath, pattern));
365458
365463
  const matcher = new Minimatch2(patternToUse, MINIMATCH_OPTIONS);
365459
365464
  const walkSettings = {
@@ -365493,7 +365498,7 @@ var require_eslint_helpers = __commonJS({
365493
365498
  return new Minimatch2(patternToUse, MINIMATCH_OPTIONS);
365494
365499
  });
365495
365500
  const unmatchedPatterns = /* @__PURE__ */ new Set([...relativeToPatterns.keys()]);
365496
- const { hfs } = await import("./src-OPWOTRNU.js");
365501
+ const { hfs } = await import("./src-MZLIUYEK.js");
365497
365502
  const walk2 = hfs.walk(basePath, {
365498
365503
  async directoryFilter(entry) {
365499
365504
  if (!matchers.some((matcher) => matcher.match(entry.path, true))) {
@@ -520460,6 +520465,166 @@ var import_shared3 = __toESM(require_dist8());
520460
520465
  function getAttributeName(attr2) {
520461
520466
  return typeof attr2 === "string" ? attr2 : attr2.name;
520462
520467
  }
520468
+ var GEN_AI_REQUEST_LIKE_ATTRIBUTES = [
520469
+ { name: "error", type: "boolean" },
520470
+ { name: "gen_ai.client.duration_ms", type: "number" },
520471
+ { name: "gen_ai.client.time_to_first_token", type: "number" },
520472
+ {
520473
+ name: "gen_ai.error.category",
520474
+ allowedValues: [
520475
+ "aborted",
520476
+ "api_error",
520477
+ "auth_error",
520478
+ "content_filter",
520479
+ "context_length",
520480
+ "none",
520481
+ "network",
520482
+ "quota",
520483
+ "rate_limit",
520484
+ "timeout",
520485
+ "unknown",
520486
+ "validation_error"
520487
+ ]
520488
+ },
520489
+ {
520490
+ name: "gen_ai.operation.name",
520491
+ allowedValues: [
520492
+ "chat",
520493
+ "embeddings",
520494
+ "execute_tool",
520495
+ "generate_content",
520496
+ "invoke_agent",
520497
+ "text_completion"
520498
+ ]
520499
+ },
520500
+ {
520501
+ name: "gen_ai.provider.name",
520502
+ allowedValues: [
520503
+ "anthropic",
520504
+ "aws.bedrock",
520505
+ "azure.ai.inference",
520506
+ "azure.ai.openai",
520507
+ "cohere",
520508
+ "deepseek",
520509
+ "gcp.gemini",
520510
+ "gcp.vertex_ai",
520511
+ "groq",
520512
+ "mistral_ai",
520513
+ "openai"
520514
+ ]
520515
+ },
520516
+ { name: "gen_ai.request.model", maxCardinality: 50 },
520517
+ {
520518
+ name: "gen_ai.request.status",
520519
+ allowedValues: ["error", "success"]
520520
+ },
520521
+ {
520522
+ name: "gen_ai.response.finish_reasons",
520523
+ allowedValues: ["content_filter", "error", "length", "stop", "tool_calls"]
520524
+ },
520525
+ { name: "gen_ai.response.model", maxCardinality: 50 },
520526
+ {
520527
+ name: "gen_ai.system",
520528
+ allowedValues: [
520529
+ "anthropic",
520530
+ "aws.bedrock",
520531
+ "azure.ai.inference",
520532
+ "azure.ai.openai",
520533
+ "cohere",
520534
+ "deepseek",
520535
+ "gcp.gemini",
520536
+ "gcp.vertex_ai",
520537
+ "groq",
520538
+ "mistral_ai",
520539
+ "openai"
520540
+ ]
520541
+ },
520542
+ { name: "gen_ai.usage.cached_tokens", type: "number" },
520543
+ { name: "gen_ai.usage.input_tokens", type: "number" },
520544
+ { name: "gen_ai.usage.output_tokens", type: "number" },
520545
+ { name: "gen_ai.usage.reasoning_tokens", type: "number" },
520546
+ { name: "gen_ai.usage.total_tokens", type: "number" },
520547
+ { name: "llm.cached_tokens", type: "number" },
520548
+ { name: "llm.cost_usd", type: "number" },
520549
+ { name: "llm.duration_ms", type: "number" },
520550
+ {
520551
+ name: "llm.error_category",
520552
+ allowedValues: [
520553
+ "aborted",
520554
+ "api_error",
520555
+ "auth_error",
520556
+ "content_filter",
520557
+ "context_length",
520558
+ "none",
520559
+ "network",
520560
+ "quota",
520561
+ "rate_limit",
520562
+ "timeout",
520563
+ "unknown",
520564
+ "validation_error"
520565
+ ]
520566
+ },
520567
+ {
520568
+ name: "llm.finish_reason",
520569
+ allowedValues: ["content_filter", "error", "length", "stop", "tool_calls"]
520570
+ },
520571
+ { name: "llm.input_tokens", type: "number" },
520572
+ { name: "llm.model", maxCardinality: 50 },
520573
+ { name: "llm.output_tokens", type: "number" },
520574
+ {
520575
+ name: "llm.provider",
520576
+ allowedValues: [
520577
+ "anthropic",
520578
+ "azure",
520579
+ "bedrock",
520580
+ "cohere",
520581
+ "google",
520582
+ "mistral",
520583
+ "openai"
520584
+ ]
520585
+ },
520586
+ { name: "llm.reasoning_tokens", type: "number" },
520587
+ {
520588
+ name: "llm.status",
520589
+ allowedValues: ["error", "success"]
520590
+ },
520591
+ { name: "llm.time_to_first_token_ms", type: "number" },
520592
+ { name: "llm.total_tokens", type: "number" },
520593
+ "otel.status_code",
520594
+ {
520595
+ name: "superblocks.tier_hint",
520596
+ allowedValues: ["include_tier3", "skip_export", "tier1_only"]
520597
+ }
520598
+ ];
520599
+ var GEN_AI_TOOL_CALL_ATTRIBUTES = [
520600
+ ...GEN_AI_REQUEST_LIKE_ATTRIBUTES,
520601
+ { name: "tool.duration_ms", type: "number" },
520602
+ {
520603
+ name: "tool.error_category",
520604
+ allowedValues: [
520605
+ "execution_error",
520606
+ "none",
520607
+ "not_found",
520608
+ "permission_denied",
520609
+ "timeout",
520610
+ "unknown",
520611
+ "validation_error"
520612
+ ]
520613
+ },
520614
+ { name: "tool.name", maxCardinality: 50 },
520615
+ {
520616
+ name: "tool.status",
520617
+ allowedValues: ["error", "success"]
520618
+ }
520619
+ ];
520620
+ var GEN_AI_STREAM_STEP_ATTRIBUTES = [
520621
+ ...GEN_AI_REQUEST_LIKE_ATTRIBUTES,
520622
+ { name: "step.number", type: "number" },
520623
+ {
520624
+ name: "step.type",
520625
+ allowedValues: ["reasoning", "text", "thinking", "tool_call"]
520626
+ }
520627
+ ];
520463
520628
  var TIER_2_TRACE_CONTRACT = [
520464
520629
  {
520465
520630
  name: "HTTP GET *",
@@ -520617,127 +520782,54 @@ var TIER_2_TRACE_CONTRACT = [
520617
520782
  "otel.status_code"
520618
520783
  ]
520619
520784
  },
520785
+ {
520786
+ name: "gen_ai.request",
520787
+ description: "LLM API request (OTEL GenAI span name). Emitted by vite-plugin-file-sync LLMObsOtelExporter.",
520788
+ allowedAttributes: GEN_AI_REQUEST_LIKE_ATTRIBUTES
520789
+ },
520790
+ {
520791
+ name: "gen_ai.stream",
520792
+ description: "Streaming LLM session (OTEL GenAI span name). Emitted by LLMObsOtelExporter for ai.streamText.",
520793
+ allowedAttributes: GEN_AI_REQUEST_LIKE_ATTRIBUTES
520794
+ },
520795
+ {
520796
+ name: "gen_ai.stream.step",
520797
+ description: "Streaming LLM step (OTEL GenAI span name). Emitted by LLMObsOtelExporter for ai.streamText.step.",
520798
+ allowedAttributes: GEN_AI_STREAM_STEP_ATTRIBUTES
520799
+ },
520800
+ {
520801
+ name: "gen_ai.tool_call",
520802
+ description: "Tool/function call within GenAI workflow (OTEL GenAI span name). Emitted by LLMObsOtelExporter.",
520803
+ allowedAttributes: GEN_AI_TOOL_CALL_ATTRIBUTES
520804
+ },
520620
520805
  {
520621
520806
  name: "llm.request",
520622
- allowedAttributes: [
520623
- {
520624
- name: "gen_ai.operation.name",
520625
- allowedValues: [
520626
- "chat",
520627
- "text_completion",
520628
- "embeddings",
520629
- "execute_tool",
520630
- "invoke_agent",
520631
- "generate_content"
520632
- ]
520633
- },
520634
- {
520635
- name: "gen_ai.system",
520636
- allowedValues: [
520637
- "openai",
520638
- "anthropic",
520639
- "aws.bedrock",
520640
- "azure.ai.openai",
520641
- "azure.ai.inference",
520642
- "gcp.gemini",
520643
- "gcp.vertex_ai",
520644
- "cohere",
520645
- "mistral_ai",
520646
- "deepseek",
520647
- "groq"
520648
- ]
520649
- },
520650
- {
520651
- name: "gen_ai.provider.name",
520652
- allowedValues: [
520653
- "openai",
520654
- "anthropic",
520655
- "aws.bedrock",
520656
- "azure.ai.openai",
520657
- "azure.ai.inference",
520658
- "gcp.gemini",
520659
- "gcp.vertex_ai",
520660
- "cohere",
520661
- "mistral_ai",
520662
- "deepseek",
520663
- "groq"
520664
- ]
520665
- },
520666
- { name: "gen_ai.request.model", maxCardinality: 50 },
520667
- { name: "gen_ai.response.model", maxCardinality: 50 },
520668
- "llm.provider",
520669
- "llm.model",
520670
- "llm.status",
520671
- {
520672
- name: "llm.error_category",
520673
- allowedValues: [
520674
- "none",
520675
- "rate_limit",
520676
- "context_length",
520677
- "content_filter",
520678
- "quota",
520679
- "network",
520680
- "timeout",
520681
- "auth_error",
520682
- "api_error",
520683
- "validation_error",
520684
- "aborted",
520685
- "unknown"
520686
- ]
520687
- },
520688
- "llm.duration_ms",
520689
- "gen_ai.usage.input_tokens",
520690
- "gen_ai.usage.output_tokens",
520691
- "llm.input_tokens",
520692
- "llm.output_tokens",
520693
- "llm.total_tokens",
520694
- "llm.reasoning_tokens",
520695
- "llm.cached_tokens",
520696
- "llm.cost_usd",
520697
- { name: "gen_ai.client.time_to_first_token", type: "number" },
520698
- { name: "llm.time_to_first_token_ms", type: "number" },
520699
- "gen_ai.response.finish_reasons",
520700
- "llm.finish_reason",
520701
- "otel.status_code"
520702
- ]
520807
+ description: "Legacy span name; prefer gen_ai.request.",
520808
+ allowedAttributes: GEN_AI_REQUEST_LIKE_ATTRIBUTES
520703
520809
  },
520704
520810
  {
520705
520811
  name: "llm.tool_call",
520706
- allowedAttributes: [
520707
- { name: "tool.name", maxCardinality: 50 },
520708
- { name: "tool.status", allowedValues: ["success", "error"] },
520709
- {
520710
- name: "tool.error_category",
520711
- allowedValues: [
520712
- "none",
520713
- "timeout",
520714
- "execution_error",
520715
- "validation_error",
520716
- "permission_denied",
520717
- "not_found",
520718
- "unknown"
520719
- ]
520720
- },
520721
- { name: "tool.duration_ms", type: "number" },
520722
- "otel.status_code"
520723
- ]
520812
+ description: "Legacy span name; prefer gen_ai.tool_call.",
520813
+ allowedAttributes: GEN_AI_TOOL_CALL_ATTRIBUTES
520724
520814
  },
520725
520815
  {
520726
520816
  name: "ai.streamText",
520817
+ description: "Legacy span name; prefer gen_ai.stream.",
520727
520818
  allowedAttributes: [
520728
- "llm.provider",
520729
520819
  "llm.model",
520730
- "llm.total_tokens",
520731
- "llm.step_count"
520820
+ "llm.provider",
520821
+ { name: "llm.step_count", type: "number" },
520822
+ { name: "llm.total_tokens", type: "number" }
520732
520823
  ]
520733
520824
  },
520734
520825
  {
520735
520826
  name: "ai.streamText.step",
520827
+ description: "Legacy span name; prefer gen_ai.stream.step.",
520736
520828
  allowedAttributes: [
520737
520829
  { name: "step.number", type: "number" },
520738
520830
  {
520739
520831
  name: "step.type",
520740
- allowedValues: ["text", "tool_call", "thinking", "reasoning"]
520832
+ allowedValues: ["reasoning", "text", "thinking", "tool_call"]
520741
520833
  }
520742
520834
  ]
520743
520835
  },
@@ -522171,7 +522263,7 @@ init_cjs_shims();
522171
522263
  // ../sdk/package.json
522172
522264
  var package_default = {
522173
522265
  name: "@superblocksteam/sdk",
522174
- version: "2.0.100-next.0",
522266
+ version: "2.0.100-next.2",
522175
522267
  description: "Superblocks JS SDK",
522176
522268
  homepage: "https://www.superblocks.com",
522177
522269
  license: "Superblocks Community Software License",
@@ -522393,7 +522485,7 @@ var config = void 0;
522393
522485
  var configured = false;
522394
522486
  var ddTracePromise = void 0;
522395
522487
  async function getDdTrace() {
522396
- ddTracePromise ??= import("./dd-trace-CHEZTK3J.js").then((module) => module.default);
522488
+ ddTracePromise ??= import("./dd-trace-NTAMVOZP.js").then((module) => module.default);
522397
522489
  return await ddTracePromise;
522398
522490
  }
522399
522491
  var deploymentType = (() => {
@@ -527672,7 +527764,7 @@ var MAX_ATTRIBUTE_LENGTH = 64e3;
527672
527764
  var LLMObsSpanWriter = null;
527673
527765
  async function loadLLMObsSpanWriter() {
527674
527766
  if (!LLMObsSpanWriter) {
527675
- const module = await import("./spans-EKLFG75O.js");
527767
+ const module = await import("./spans-TRK7PRT7.js");
527676
527768
  LLMObsSpanWriter = module.default;
527677
527769
  }
527678
527770
  return LLMObsSpanWriter;
@@ -538362,10 +538454,17 @@ async function markSdkApiAsUntestedIfNeeded(filePath, clark2, services) {
538362
538454
  markApis(clark2, directlyAffected);
538363
538455
  return;
538364
538456
  }
538365
- if (filePath.startsWith("server/")) {
538366
- markApis(clark2, Array.from(previousEntryPoints.keys()));
538367
- return;
538457
+ const scopedApis = Array.from(previousEntryPoints.entries()).filter(([, ep]) => filePath.startsWith(entryPointScope(ep))).map(([name16]) => name16);
538458
+ if (scopedApis.length > 0) {
538459
+ markApis(clark2, scopedApis);
538460
+ }
538461
+ }
538462
+ function entryPointScope(entryPoint) {
538463
+ const withoutExt = entryPoint.replace(/\.(ts|tsx|js)$/, "");
538464
+ if (withoutExt.endsWith("/index")) {
538465
+ return withoutExt.slice(0, -"index".length);
538368
538466
  }
538467
+ return withoutExt + "/";
538369
538468
  }
538370
538469
  function markApis(clark2, apiNames) {
538371
538470
  if (apiNames.length === 0) {
@@ -611512,6 +611611,15 @@ var ChatSessionStore = (() => {
611512
611611
  return await client.call.v1.ai.billing.workflowSummary.submit(summary);
611513
611612
  });
611514
611613
  }
611614
+ async calculatePromptCost(promptId, usage) {
611615
+ const response = await this.rpcClient.call(async (client) => {
611616
+ return await client.call.v1.ai.billing.promptCost.calculate({
611617
+ promptId,
611618
+ usage
611619
+ });
611620
+ });
611621
+ return response.data?.totalCreditsUsed ?? 0;
611622
+ }
611515
611623
  determineSummaryOutcome(summary, allMessages) {
611516
611624
  const summaryIndex = allMessages.findIndex((item) => isAiChatSummary(item) && item.timestamp === summary.timestamp && item.summary === summary.summary);
611517
611625
  if (summaryIndex === -1) {
@@ -615358,6 +615466,17 @@ function formatMediaTag(mediaType) {
615358
615466
  return "[pdf]";
615359
615467
  return `[media: ${mediaType}]`;
615360
615468
  }
615469
+ function formatFileTag(part) {
615470
+ const name16 = part.filename;
615471
+ const mediaType = part.mediaType;
615472
+ if (name16 && mediaType)
615473
+ return `[file: ${name16} (${mediaType})]`;
615474
+ if (name16)
615475
+ return `[file: ${name16}]`;
615476
+ if (mediaType)
615477
+ return `[file: ${mediaType}]`;
615478
+ return "[file]";
615479
+ }
615361
615480
  function stripMedia(msg) {
615362
615481
  if (!Array.isArray(msg.content)) {
615363
615482
  return msg;
@@ -615366,6 +615485,10 @@ function stripMedia(msg) {
615366
615485
  if (typeof part === "object" && part !== null && "type" in part && part.type === "image") {
615367
615486
  return { type: "text", text: "[image]" };
615368
615487
  }
615488
+ if (typeof part === "object" && part !== null && "type" in part && part.type === "file") {
615489
+ const filePart = part;
615490
+ return { type: "text", text: formatFileTag(filePart) };
615491
+ }
615369
615492
  if (part.type === "tool-result" && part.output?.type === "content" && Array.isArray(part.output.value)) {
615370
615493
  const firstMediaType = part.output.value.map(getMediaType).find((t16) => t16 !== null);
615371
615494
  if (firstMediaType) {
@@ -615478,9 +615601,23 @@ async function summarizeSession(options8) {
615478
615601
  };
615479
615602
  });
615480
615603
  }
615481
- async function summarizeWithSplitting(msgs) {
615604
+ const MAX_SPLIT_DEPTH = 10;
615605
+ async function summarizeWithSplitting(msgs, depth = 0) {
615606
+ if (depth >= MAX_SPLIT_DEPTH) {
615607
+ logger4.warn(`Summarization split depth limit reached (${MAX_SPLIT_DEPTH}). Falling back to truncation.`);
615608
+ return createTruncationFallback(messages3, tracer4);
615609
+ }
615482
615610
  if (msgs.length < 2) {
615483
- return callLLM(msgs);
615611
+ try {
615612
+ return await callLLM(msgs);
615613
+ } catch (error40) {
615614
+ if (isTokenLimitError(error40)) {
615615
+ logger4.warn(`Token limit exceeded even with ${msgs.length} message(s). Falling back to truncation.`);
615616
+ return createTruncationFallback(messages3, tracer4);
615617
+ }
615618
+ logger4.error(`LLM summarization failed. Falling back to truncation. Error: ${JSON.stringify(error40)}`, error40);
615619
+ return createTruncationFallback(messages3, tracer4);
615620
+ }
615484
615621
  }
615485
615622
  try {
615486
615623
  const result2 = await callLLM(msgs);
@@ -615493,31 +615630,30 @@ async function summarizeSession(options8) {
615493
615630
  const midpoint = Math.floor(msgs.length / 2);
615494
615631
  const firstHalf = msgs.slice(0, midpoint);
615495
615632
  const secondHalf = msgs.slice(midpoint);
615496
- logger4.warn(`Token limit exceeded with ${msgs.length} messages. Splitting: first half (${firstHalf.length}), second half (${secondHalf.length})`);
615633
+ logger4.warn(`Token limit exceeded with ${msgs.length} messages (depth=${depth}). Splitting: first half (${firstHalf.length}), second half (${secondHalf.length})`);
615497
615634
  const firstResult = await tracer4.trace({ name: "session.summarize.split", kind: "task" }, async (splitSpan) => {
615498
615635
  tracer4.annotate(splitSpan, {
615499
615636
  metadata: {
615500
615637
  input: {
615501
615638
  messageCount: firstHalf.length,
615502
- splitHalf: "first"
615639
+ splitHalf: "first",
615640
+ depth: depth + 1
615503
615641
  }
615504
615642
  }
615505
615643
  });
615506
- return summarizeWithSplitting(firstHalf);
615644
+ return summarizeWithSplitting(firstHalf, depth + 1);
615507
615645
  });
615508
615646
  return tracer4.trace({ name: "session.summarize.split", kind: "task" }, async (splitSpan) => {
615509
615647
  tracer4.annotate(splitSpan, {
615510
615648
  metadata: {
615511
615649
  input: {
615512
615650
  messageCount: firstResult.messages.length + secondHalf.length,
615513
- splitHalf: "combined"
615651
+ splitHalf: "combined",
615652
+ depth: depth + 1
615514
615653
  }
615515
615654
  }
615516
615655
  });
615517
- return summarizeWithSplitting([
615518
- ...firstResult.messages,
615519
- ...secondHalf
615520
- ]);
615656
+ return summarizeWithSplitting([...firstResult.messages, ...secondHalf], depth + 1);
615521
615657
  });
615522
615658
  }
615523
615659
  }
@@ -618653,6 +618789,19 @@ function extractWorkflowMetrics(steps) {
618653
618789
  }
618654
618790
 
618655
618791
  // ../../../vite-plugin-file-sync/dist/ai-service/llm/client.js
618792
+ function extractPromptCostTokens(usage) {
618793
+ const totalInputTokens = usage.inputTokens ?? 0;
618794
+ const cachedReadTokens = usage.inputTokenDetails?.cacheReadTokens ?? usage.cachedInputTokens ?? 0;
618795
+ const cachedWriteTokens = usage.inputTokenDetails?.cacheWriteTokens ?? 0;
618796
+ const inputTokens = usage.inputTokenDetails?.noCacheTokens ?? Math.max(0, totalInputTokens - cachedReadTokens - cachedWriteTokens);
618797
+ const outputTokens = usage.outputTokens ?? 0;
618798
+ return {
618799
+ inputTokens,
618800
+ outputTokens,
618801
+ cachedReadTokens,
618802
+ cachedWriteTokens
618803
+ };
618804
+ }
618656
618805
  function extractTextFromMessage(message, scope = "all") {
618657
618806
  if (typeof message.content === "string") {
618658
618807
  return message.content;
@@ -618914,8 +619063,57 @@ var LLMClient = class {
618914
619063
  const callback = this.onUsageRecorded;
618915
619064
  observers.push({
618916
619065
  attach(events) {
618917
- events.on("stream:finish", (result2) => {
618918
- callback(extractWorkflowMetrics(result2.steps));
619066
+ const usageEntriesByAttempt = /* @__PURE__ */ new Map();
619067
+ const toolCallsByAttempt = /* @__PURE__ */ new Map();
619068
+ const stepCountByAttempt = /* @__PURE__ */ new Map();
619069
+ const emittedAttempts = /* @__PURE__ */ new Set();
619070
+ events.on("step:finish", (step, session) => {
619071
+ const attempt = session.attempt;
619072
+ stepCountByAttempt.set(attempt, (stepCountByAttempt.get(attempt) ?? 0) + 1);
619073
+ toolCallsByAttempt.set(attempt, (toolCallsByAttempt.get(attempt) ?? 0) + (step.toolCalls?.length ?? 0));
619074
+ if (!step.usage) {
619075
+ return;
619076
+ }
619077
+ const attemptEntries = usageEntriesByAttempt.get(attempt) ?? [];
619078
+ if (!usageEntriesByAttempt.has(attempt)) {
619079
+ usageEntriesByAttempt.set(attempt, attemptEntries);
619080
+ }
619081
+ const tokenUsage = extractPromptCostTokens(step.usage);
619082
+ const stepModel = step.response?.headers?.["x-model-id"] ?? step.response?.modelId ?? session.provider.model;
619083
+ const stepProvider = step.response?.headers?.["x-model-provider"] ?? session.provider.name;
619084
+ attemptEntries.push({
619085
+ model: stepModel,
619086
+ provider: stepProvider,
619087
+ ...tokenUsage
619088
+ });
619089
+ });
619090
+ events.on("stream:finish", (result2, session) => {
619091
+ const attempt = session.attempt;
619092
+ if (emittedAttempts.has(attempt)) {
619093
+ return;
619094
+ }
619095
+ emittedAttempts.add(attempt);
619096
+ const promptCostUsageEntries = usageEntriesByAttempt.get(attempt) ?? [];
619097
+ if (promptCostUsageEntries.length === 0) {
619098
+ const tokenUsage = extractPromptCostTokens(result2.totalUsage);
619099
+ promptCostUsageEntries.push({
619100
+ model: session.provider.model,
619101
+ provider: session.provider.name,
619102
+ ...tokenUsage
619103
+ });
619104
+ }
619105
+ const summaryMetrics = extractWorkflowMetrics(result2.steps);
619106
+ const attemptStepCount = stepCountByAttempt.get(attempt) ?? 0;
619107
+ const attemptToolCalls = toolCallsByAttempt.get(attempt) ?? 0;
619108
+ callback({
619109
+ ...summaryMetrics,
619110
+ toolCalls: attemptStepCount > 0 ? attemptToolCalls : summaryMetrics.toolCalls,
619111
+ stepCount: attemptStepCount > 0 ? attemptStepCount : summaryMetrics.stepCount,
619112
+ promptCostUsageEntries
619113
+ });
619114
+ usageEntriesByAttempt.delete(attempt);
619115
+ toolCallsByAttempt.delete(attempt);
619116
+ stepCountByAttempt.delete(attempt);
618919
619117
  });
618920
619118
  }
618921
619119
  });
@@ -637751,7 +637949,7 @@ var PlaywrightMcpServerManager = class {
637751
637949
  this.logger.info(`Starting embedded Playwright MCP server: browser=${options8?.browser || "chromium"}, headless=${options8?.headless !== false}`);
637752
637950
  }
637753
637951
  try {
637754
- const { startEmbeddedPlaywrightMcpServer } = await import("./embedded-playwright-mcp-server-52RQS74W.js");
637952
+ const { startEmbeddedPlaywrightMcpServer } = await import("./embedded-playwright-mcp-server-4QEXQTI7.js");
637755
637953
  this.server = await startEmbeddedPlaywrightMcpServer({
637756
637954
  storageStatePath: options8?.storageStatePath,
637757
637955
  jwt: options8?.jwt,
@@ -645979,6 +646177,17 @@ ${error40.stack ?? error40.message}
645979
646177
  // ../../../vite-plugin-file-sync/dist/ai-service/state-machine/handlers/awaiting-user.js
645980
646178
  init_cjs_shims();
645981
646179
  var import_ai13 = __toESM(require_dist7());
646180
+ var DEFAULT_PROMPT_COST_WARN_THRESHOLD = 5;
646181
+ function getPromptCostWarnThreshold() {
646182
+ const envVal = process.env.SUPERBLOCKS_AI_PROMPT_COST_WARN_THRESHOLD;
646183
+ if (envVal !== void 0) {
646184
+ const parsed = Number(envVal);
646185
+ if (!isNaN(parsed) && parsed >= 0) {
646186
+ return parsed;
646187
+ }
646188
+ }
646189
+ return DEFAULT_PROMPT_COST_WARN_THRESHOLD;
646190
+ }
645982
646191
  function createWorkflowSummary(promptId, workflowMetrics) {
645983
646192
  const completedAt = (/* @__PURE__ */ new Date()).toISOString();
645984
646193
  const startedAt = workflowMetrics.workflowStartedAt;
@@ -645995,6 +646204,30 @@ function createWorkflowSummary(promptId, workflowMetrics) {
645995
646204
  }
645996
646205
  };
645997
646206
  }
646207
+ async function checkPromptCost(promptId, workflowMetrics, chatSessionStore, logger15) {
646208
+ let totalCreditsUsed = 0;
646209
+ try {
646210
+ totalCreditsUsed = await chatSessionStore.calculatePromptCost(promptId, workflowMetrics.llmUsage);
646211
+ } catch (error40) {
646212
+ logger15.warn("[billing:prompt-cost] Failed to calculate prompt credits", {
646213
+ promptId,
646214
+ error: error40 instanceof Error ? error40.message : String(error40)
646215
+ });
646216
+ return;
646217
+ }
646218
+ const threshold = getPromptCostWarnThreshold();
646219
+ const costSummary = {
646220
+ promptId,
646221
+ totalCreditsUsed,
646222
+ llmCallCount: workflowMetrics.llmCallCount,
646223
+ threshold
646224
+ };
646225
+ if (totalCreditsUsed > threshold) {
646226
+ logger15.warn(`[billing:prompt-cost] Prompt credit usage ${totalCreditsUsed} exceeds threshold of ${threshold}`, costSummary);
646227
+ } else {
646228
+ logger15.info(`[billing:prompt-cost] Prompt cost summary: ${totalCreditsUsed} credits across ${workflowMetrics.llmCallCount} LLM calls`, costSummary);
646229
+ }
646230
+ }
645998
646231
  var doAwaitingUser = (clark2, { signals, chatSessionStore, llmProvider, clarkProfiler }) => {
645999
646232
  const sendUsergenerationState = sendUserGenerationStateChannel(clark2);
646000
646233
  const sendUserMessage = sendUserMessageChannel(clark2, chatSessionStore);
@@ -646014,6 +646247,7 @@ var doAwaitingUser = (clark2, { signals, chatSessionStore, llmProvider, clarkPro
646014
646247
  signals.emit("generationCompleted", hasSuggestions);
646015
646248
  await clarkProfiler?.endSession();
646016
646249
  if (promptId && workflowMetrics) {
646250
+ await checkPromptCost(promptId, workflowMetrics, chatSessionStore, clark2.logger);
646017
646251
  const submitStart = performance.now();
646018
646252
  clark2.logger.info("[awaiting-user] Starting submitWorkflowSummary");
646019
646253
  try {
@@ -646054,6 +646288,7 @@ var doAwaitingUser = (clark2, { signals, chatSessionStore, llmProvider, clarkPro
646054
646288
  await clarkProfiler?.endSession();
646055
646289
  const { promptId, workflowMetrics } = clark2.context;
646056
646290
  if (promptId && workflowMetrics) {
646291
+ await checkPromptCost(promptId, workflowMetrics, chatSessionStore, clark2.logger);
646057
646292
  await chatSessionStore.submitWorkflowSummary(createWorkflowSummary(promptId, workflowMetrics));
646058
646293
  }
646059
646294
  void sendUsergenerationState({
@@ -646072,6 +646307,7 @@ var doAwaitingUser = (clark2, { signals, chatSessionStore, llmProvider, clarkPro
646072
646307
  await clarkProfiler?.endSession();
646073
646308
  const { promptId, workflowMetrics } = clark2.context;
646074
646309
  if (promptId && workflowMetrics) {
646310
+ await checkPromptCost(promptId, workflowMetrics, chatSessionStore, clark2.logger);
646075
646311
  await chatSessionStore.submitWorkflowSummary(createWorkflowSummary(promptId, workflowMetrics));
646076
646312
  }
646077
646313
  if (summaryMessages.length > 0) {
@@ -649391,6 +649627,7 @@ var SECRET_SCAN_ENABLED_TOOLS = /* @__PURE__ */ new Set([
649391
649627
  executeRequestToIntegrationToolFactory.name
649392
649628
  ]);
649393
649629
  var TOOL_LOG_SUMMARY_NAMES = {
649630
+ buildCaptureScreenshot: buildCaptureScreenshotToolFactory.name,
649394
649631
  buildReadFile: buildReadFileToolFactory.name,
649395
649632
  executeRequestToIntegration: executeRequestToIntegrationToolFactory.name,
649396
649633
  getApiDocs: getApiDocsToolFactory.name,
@@ -649441,7 +649678,26 @@ function getTier2ErrorMeta(error40) {
649441
649678
  }
649442
649679
  };
649443
649680
  }
649681
+ function summarizeScreenshotResult(result) {
649682
+ if (!result || typeof result !== "object" || Array.isArray(result)) {
649683
+ return {
649684
+ fallback: true,
649685
+ type: Array.isArray(result) ? "array" : typeof result
649686
+ };
649687
+ }
649688
+ const root3 = result;
649689
+ const dataUrl = typeof root3.dataUrl === "string" ? root3.dataUrl : void 0;
649690
+ return {
649691
+ dataUrlChars: dataUrl?.length,
649692
+ hasShortLivedUrl: typeof root3.shortLivedUrl === "string",
649693
+ fileName: typeof root3.fileName === "string" ? root3.fileName : void 0,
649694
+ mimeType: typeof root3.mimeType === "string" ? root3.mimeType : void 0
649695
+ };
649696
+ }
649444
649697
  function summarizeToolResultForLogs(toolName, result) {
649698
+ if (toolName === TOOL_LOG_SUMMARY_NAMES.buildCaptureScreenshot) {
649699
+ return summarizeScreenshotResult(result);
649700
+ }
649445
649701
  const sanitizedResult = sanitizeLogObject(result);
649446
649702
  const serializedSanitizedResult = JSON.stringify(sanitizedResult);
649447
649703
  const fallbackSummary = (type) => ({
@@ -674013,7 +674269,9 @@ var AiService = class extends import_shared40.TracedEventEmitter {
674013
674269
  stepCount: metrics2.stepCount + usage.stepCount,
674014
674270
  linesAdded: metrics2.linesAdded + usage.linesAdded,
674015
674271
  linesEdited: metrics2.linesEdited + usage.linesEdited,
674016
- linesRemoved: metrics2.linesRemoved + usage.linesRemoved
674272
+ linesRemoved: metrics2.linesRemoved + usage.linesRemoved,
674273
+ llmUsage: [...metrics2.llmUsage, ...usage.promptCostUsageEntries],
674274
+ llmCallCount: metrics2.llmCallCount + usage.promptCostUsageEntries.length
674017
674275
  }
674018
674276
  };
674019
674277
  });
@@ -674258,6 +674516,8 @@ var AiService = class extends import_shared40.TracedEventEmitter {
674258
674516
  linesAdded: 0,
674259
674517
  linesEdited: 0,
674260
674518
  linesRemoved: 0,
674519
+ llmUsage: [],
674520
+ llmCallCount: 0,
674261
674521
  workflowStartedAt: (/* @__PURE__ */ new Date()).toISOString()
674262
674522
  },
674263
674523
  llmConfig: request3.llmConfig,
@@ -677959,8 +678219,16 @@ async function ensureGithubWorkflowFile(gitService, superblocksBaseUrl) {
677959
678219
  throw error40;
677960
678220
  }
677961
678221
  }
678222
+ const resolvedUrl = superblocksBaseUrl || "";
678223
+ if (!resolvedUrl) {
678224
+ getLogger().warn("[git] ensureGithubWorkflowFile: no superblocksBaseUrl provided, workflow will use default prod domain", {
678225
+ gitCategory: "setup",
678226
+ gitOperation: "ensure-github-workflow-file",
678227
+ gitOutcome: "degraded"
678228
+ });
678229
+ }
677962
678230
  await mkdir13(dirname14(workflowPath), { recursive: true });
677963
- await writeFile11(workflowPath, (0, import_shared53.buildGithubSuperblocksSyncWorkflowFromBaseUrl)(superblocksBaseUrl ?? ""), "utf-8");
678231
+ await writeFile11(workflowPath, (0, import_shared53.buildGithubSuperblocksSyncWorkflowFromBaseUrl)(resolvedUrl), "utf-8");
677964
678232
  getLogger().info(`[git] ensureGithubWorkflowFile: created ${GITHUB_WORKFLOW_PATH}`);
677965
678233
  return { created: true };
677966
678234
  }
@@ -678131,7 +678399,7 @@ var SocketManager = class extends import_shared55.TracedEventEmitter {
678131
678399
  super(tracer4);
678132
678400
  }
678133
678401
  socketServer;
678134
- startSocketServer({ server, fileSyncManager, syncService, lockService, aiService, gitService, activateGitService, checkAuthorization, path: path97, tracer: tracer4, gitOperationLock }) {
678402
+ startSocketServer({ server, fileSyncManager, syncService, lockService, aiService, gitService, activateGitService, checkAuthorization, path: path97, tracer: tracer4, gitOperationLock, superblocksBaseUrl }) {
678135
678403
  if (this.socketServer) {
678136
678404
  throw new Error("Socket server already started");
678137
678405
  }
@@ -678498,7 +678766,7 @@ var SocketManager = class extends import_shared55.TracedEventEmitter {
678498
678766
  throw fetchErr;
678499
678767
  }
678500
678768
  });
678501
- await ensureGithubWorkflowFile(readyGitService, aiService?.superblocksBaseUrl).catch((error40) => {
678769
+ await ensureGithubWorkflowFile(readyGitService, superblocksBaseUrl || aiService?.superblocksBaseUrl).catch((error40) => {
678502
678770
  getLogger().warn("[git] gitCommitLocal failed to ensure GitHub workflow file", {
678503
678771
  gitCategory: "setup",
678504
678772
  gitOperation: "ensure-github-workflow-file",
@@ -700456,7 +700724,7 @@ var parseYaml3;
700456
700724
  async function loadYaml(file2) {
700457
700725
  const content9 = await read_file_default(file2);
700458
700726
  if (!parseYaml3) {
700459
- ({ __parsePrettierYamlConfig: parseYaml3 } = await import("./yaml-CCZIV5UJ.js"));
700727
+ ({ __parsePrettierYamlConfig: parseYaml3 } = await import("./yaml-6Z3PUEGD.js"));
700460
700728
  }
700461
700729
  try {
700462
700730
  return parseYaml3(content9);
@@ -705850,7 +706118,7 @@ function createParsersAndPrinters(modules) {
705850
706118
  }
705851
706119
  var estreePlugin = createParsersAndPrinters([
705852
706120
  {
705853
- importPlugin: () => import("./estree-6BAMTQ34.js"),
706121
+ importPlugin: () => import("./estree-6JFRN447.js"),
705854
706122
  printers: ["estree", "estree-json"]
705855
706123
  }
705856
706124
  ]);
@@ -705874,11 +706142,11 @@ var languages = [
705874
706142
  ];
705875
706143
  var { parsers: parsers12, printers } = createParsersAndPrinters([
705876
706144
  {
705877
- importPlugin: () => import("./acorn-7557T57B.js"),
706145
+ importPlugin: () => import("./acorn-3PVDUZQI.js"),
705878
706146
  parsers: ["acorn", "espree"]
705879
706147
  },
705880
706148
  {
705881
- importPlugin: () => import("./angular-TSGNTF3H.js"),
706149
+ importPlugin: () => import("./angular-G25U54XR.js"),
705882
706150
  parsers: [
705883
706151
  "__ng_action",
705884
706152
  "__ng_binding",
@@ -705887,7 +706155,7 @@ var { parsers: parsers12, printers } = createParsersAndPrinters([
705887
706155
  ]
705888
706156
  },
705889
706157
  {
705890
- importPlugin: () => import("./babel-UKM3X3BF.js"),
706158
+ importPlugin: () => import("./babel-BIZEN6QE.js"),
705891
706159
  parsers: [
705892
706160
  "babel",
705893
706161
  "babel-flow",
@@ -705906,44 +706174,44 @@ var { parsers: parsers12, printers } = createParsersAndPrinters([
705906
706174
  ]
705907
706175
  },
705908
706176
  {
705909
- importPlugin: () => import("./flow-VAL47OXG.js"),
706177
+ importPlugin: () => import("./flow-CE2BIN75.js"),
705910
706178
  parsers: ["flow"]
705911
706179
  },
705912
706180
  {
705913
- importPlugin: () => import("./glimmer-S5ZJQPDK.js"),
706181
+ importPlugin: () => import("./glimmer-U6LHQ6WT.js"),
705914
706182
  parsers: ["glimmer"],
705915
706183
  printers: ["glimmer"]
705916
706184
  },
705917
706185
  {
705918
- importPlugin: () => import("./graphql-OJGZJHUI.js"),
706186
+ importPlugin: () => import("./graphql-BR4APEAZ.js"),
705919
706187
  parsers: ["graphql"],
705920
706188
  printers: ["graphql"]
705921
706189
  },
705922
706190
  {
705923
- importPlugin: () => import("./html-NWEXGGHG.js"),
706191
+ importPlugin: () => import("./html-6FQCV33C.js"),
705924
706192
  parsers: ["html", "angular", "vue", "lwc", "mjml"],
705925
706193
  printers: ["html"]
705926
706194
  },
705927
706195
  {
705928
- importPlugin: () => import("./markdown-BO7IBCCK.js"),
706196
+ importPlugin: () => import("./markdown-VDPENZHO.js"),
705929
706197
  parsers: ["markdown", "mdx", "remark"],
705930
706198
  printers: ["mdast"]
705931
706199
  },
705932
706200
  {
705933
- importPlugin: () => import("./meriyah-MUU4ZVB5.js"),
706201
+ importPlugin: () => import("./meriyah-XROZPDRC.js"),
705934
706202
  parsers: ["meriyah"]
705935
706203
  },
705936
706204
  {
705937
- importPlugin: () => import("./postcss-U2SWUSAE.js"),
706205
+ importPlugin: () => import("./postcss-LJDERGX3.js"),
705938
706206
  parsers: ["css", "less", "scss"],
705939
706207
  printers: ["postcss"]
705940
706208
  },
705941
706209
  {
705942
- importPlugin: () => import("./typescript-HWZC76Y5.js"),
706210
+ importPlugin: () => import("./typescript-KOSB7NY5.js"),
705943
706211
  parsers: ["typescript"]
705944
706212
  },
705945
706213
  {
705946
- importPlugin: () => import("./yaml-CCZIV5UJ.js"),
706214
+ importPlugin: () => import("./yaml-6Z3PUEGD.js"),
705947
706215
  parsers: ["yaml"],
705948
706216
  printers: ["yaml"]
705949
706217
  }
@@ -709266,7 +709534,8 @@ var fileSyncVitePlugin = (pluginParams, options8) => {
709266
709534
  checkAuthorization: pluginParams.checkAuthorization,
709267
709535
  tracer: pluginParams.tracer,
709268
709536
  path: "/sb-updates",
709269
- gitOperationLock
709537
+ gitOperationLock,
709538
+ superblocksBaseUrl: pluginParams.superblocksBaseUrl
709270
709539
  });
709271
709540
  } finally {
709272
709541
  socketSpan.end();
@@ -717164,7 +717433,7 @@ function getJwksUriWithBaseUrl(superblocksBaseUrl) {
717164
717433
  return jwksUri;
717165
717434
  }
717166
717435
  var httpServer;
717167
- async function createDevServer({ root: root3, mode, fsOperationQueue, syncService, lockService, aiService, gitService, activateGitService, snapshotManager, logger: loggerOverride, port, sdk }) {
717436
+ async function createDevServer({ root: root3, mode, fsOperationQueue, syncService, lockService, aiService, gitService, activateGitService, snapshotManager, logger: loggerOverride, port, sdk, superblocksBaseUrl: explicitBaseUrl }) {
717168
717437
  const logger15 = getLogger2(loggerOverride);
717169
717438
  if (httpServer) {
717170
717439
  logger15.debug("Dev server already running");
@@ -717361,6 +717630,7 @@ async function createDevServer({ root: root3, mode, fsOperationQueue, syncServic
717361
717630
  checkAuthorization,
717362
717631
  logger: loggerOverride,
717363
717632
  httpServer,
717633
+ superblocksBaseUrl: explicitBaseUrl || localToken?.superblocksBaseUrl,
717364
717634
  features: {
717365
717635
  enableSessionRecording: featureFlags?.enableSessionRecording() ?? false
717366
717636
  }
@@ -717463,7 +717733,7 @@ async function createDevServer({ root: root3, mode, fsOperationQueue, syncServic
717463
717733
  logger15.info(`HTTP server started successfully on port ${port}`);
717464
717734
  return httpServer;
717465
717735
  }
717466
- async function startVite({ app, httpServer: httpServer2, root: root3, mode, port, fsOperationQueue, syncService, lockService, aiService, gitService, activateGitService, snapshotManager, checkAuthorization, logger: loggerOverride, features }) {
717736
+ async function startVite({ app, httpServer: httpServer2, root: root3, mode, port, fsOperationQueue, syncService, lockService, aiService, gitService, activateGitService, snapshotManager, checkAuthorization, logger: loggerOverride, superblocksBaseUrl, features }) {
717467
717737
  return tracer3.startActiveSpan("startVite", async (startViteSpan) => {
717468
717738
  try {
717469
717739
  const logger15 = getLogger2(loggerOverride);
@@ -717517,6 +717787,7 @@ async function startVite({ app, httpServer: httpServer2, root: root3, mode, port
717517
717787
  checkAuthorization,
717518
717788
  tracer: tracer3,
717519
717789
  logger: logger15,
717790
+ superblocksBaseUrl,
717520
717791
  features
717521
717792
  }, { isCustomBuildEnabled: isCustomBuildEnabled2 });
717522
717793
  logger15.debug("Configuring dev server with plugins and options");
@@ -717841,6 +718112,57 @@ import path75 from "node:path";
717841
718112
  import * as readline from "node:readline";
717842
718113
  import { promisify as promisify7 } from "node:util";
717843
718114
  var import_fs_extra5 = __toESM(require_lib(), 1);
718115
+
718116
+ // ../sdk/dist/cli-replacement/git-repo-setup.mjs
718117
+ init_cjs_shims();
718118
+ function getGitErrorFields(error40) {
718119
+ const meta2 = getErrorMeta2(error40);
718120
+ return {
718121
+ gitErrorKind: meta2.error.kind,
718122
+ gitErrorMessage: meta2.error.message
718123
+ };
718124
+ }
718125
+ async function ensureRemoteHasDefaultBranch(git, remoteUrl) {
718126
+ const allRefs = await git.raw(["ls-remote", "--heads", "origin"]).catch((err) => {
718127
+ getLogger2().warn("[git] ls-remote failed while checking for empty remote", {
718128
+ gitCategory: "setup",
718129
+ gitOperation: "seed-default-branch",
718130
+ gitOutcome: "failed",
718131
+ gitRemote: "origin",
718132
+ gitRemoteUrl: remoteUrl,
718133
+ ...getGitErrorFields(err)
718134
+ });
718135
+ return "";
718136
+ });
718137
+ if (allRefs.trim()) {
718138
+ return;
718139
+ }
718140
+ const hasAnyCommit = await git.raw(["rev-parse", "--verify", "HEAD"]).then(() => true, () => false);
718141
+ if (!hasAnyCommit) {
718142
+ return;
718143
+ }
718144
+ try {
718145
+ await git.raw(["push", "origin", "HEAD:refs/heads/main"]);
718146
+ getLogger2().info("[git] seeded empty remote with main branch", {
718147
+ gitCategory: "setup",
718148
+ gitOperation: "seed-default-branch",
718149
+ gitOutcome: "succeeded",
718150
+ gitRemote: "origin",
718151
+ gitRemoteUrl: remoteUrl
718152
+ });
718153
+ } catch (err) {
718154
+ getLogger2().warn("[git] failed to seed empty remote with main branch", {
718155
+ gitCategory: "setup",
718156
+ gitOperation: "seed-default-branch",
718157
+ gitOutcome: "failed",
718158
+ gitRemote: "origin",
718159
+ gitRemoteUrl: remoteUrl,
718160
+ ...getGitErrorFields(err)
718161
+ });
718162
+ }
718163
+ }
718164
+
718165
+ // ../sdk/dist/cli-replacement/dev.mjs
717844
718166
  var exec10 = promisify7(child_process3.exec);
717845
718167
  var passErrorToVSCode = (message, logger15) => {
717846
718168
  if (message && process.env.SUPERBLOCKS_VSCODE === "true") {
@@ -717931,7 +718253,7 @@ async function handleLockConflict(error40, lockSvc, span, logger15) {
717931
718253
  }
717932
718254
  async function readPkgJson(cwd) {
717933
718255
  try {
717934
- const { readPackage } = await import("./read-pkg-MACAVKU2.js");
718256
+ const { readPackage } = await import("./read-pkg-DT5VH6EB.js");
717935
718257
  return await readPackage({ cwd });
717936
718258
  } catch {
717937
718259
  return null;
@@ -718148,7 +718470,8 @@ async function dev(options8) {
718148
718470
  cwd,
718149
718471
  logger: logger15,
718150
718472
  userName: gitUserName,
718151
- userEmail: gitUserEmail
718473
+ userEmail: gitUserEmail,
718474
+ superblocksBaseUrl: tokenConfig.superblocksBaseUrl
718152
718475
  });
718153
718476
  if (!bootstrappedGitService) {
718154
718477
  logger15.info("[git] startup git sync skipped", {
@@ -718319,7 +718642,8 @@ async function dev(options8) {
718319
718642
  cwd,
718320
718643
  logger: logger15,
718321
718644
  userName: gitUserName,
718322
- userEmail: gitUserEmail
718645
+ userEmail: gitUserEmail,
718646
+ superblocksBaseUrl: tokenConfig.superblocksBaseUrl
718323
718647
  });
718324
718648
  if (!runtimeGitService) {
718325
718649
  activeDbfsBranchName = await ensureRuntimeDbfsBranchConsistency({
@@ -718371,7 +718695,8 @@ async function dev(options8) {
718371
718695
  activateGitService: activateRuntimeGitService,
718372
718696
  snapshotManager,
718373
718697
  logger: options8.logger,
718374
- sdk
718698
+ sdk,
718699
+ superblocksBaseUrl: tokenConfig.superblocksBaseUrl
718375
718700
  };
718376
718701
  const result = await createDevServer(createDevServerOptions);
718377
718702
  span.end();
@@ -718403,14 +718728,7 @@ async function dev(options8) {
718403
718728
  }
718404
718729
  });
718405
718730
  }
718406
- function getGitErrorFields(error40) {
718407
- const meta2 = getErrorMeta2(error40);
718408
- return {
718409
- gitErrorKind: meta2.error.kind,
718410
- gitErrorMessage: meta2.error.message
718411
- };
718412
- }
718413
- async function bootstrapGitService({ sdk, applicationId, cwd, logger: logger15, userName, userEmail }) {
718731
+ async function bootstrapGitService({ sdk, applicationId, cwd, logger: logger15, userName, userEmail, superblocksBaseUrl }) {
718414
718732
  const gitConfigSdk = sdk;
718415
718733
  const gitConfig = await gitConfigSdk.getApplicationGitConfig(applicationId);
718416
718734
  if (!gitConfig?.gitRemoteUrl) {
@@ -718440,7 +718758,7 @@ async function bootstrapGitService({ sdk, applicationId, cwd, logger: logger15,
718440
718758
  }
718441
718759
  }
718442
718760
  await service.configure({ credentials, userName, userEmail });
718443
- await ensureGitRepo(service, gitConfig.gitRemoteUrl);
718761
+ await ensureGitRepo(service, gitConfig.gitRemoteUrl, superblocksBaseUrl);
718444
718762
  return service;
718445
718763
  }
718446
718764
  async function fetchAndEnsureLiveBranch(git, errorPrefix) {
@@ -718463,7 +718781,7 @@ async function fetchAndEnsureLiveBranch(git, errorPrefix) {
718463
718781
  throw fetchError;
718464
718782
  }
718465
718783
  }
718466
- async function ensureGitRepo(git, remoteUrl) {
718784
+ async function ensureGitRepo(git, remoteUrl, superblocksBaseUrl) {
718467
718785
  const hasGit = await nodeFs.access(path75.join(git.workDir, ".git")).then(() => true, () => false);
718468
718786
  if (!hasGit) {
718469
718787
  await git.init();
@@ -718486,7 +718804,7 @@ async function ensureGitRepo(git, remoteUrl) {
718486
718804
  return "";
718487
718805
  });
718488
718806
  if (!remoteRefs.includes(`refs/heads/${import_shared70.SUPERBLOCKS_LIVE_GIT_BRANCH}`)) {
718489
- await seedGithubWorkflowIfNeeded(git.workDir, remoteUrl);
718807
+ await seedGithubWorkflowIfNeeded(git.workDir, remoteUrl, superblocksBaseUrl);
718490
718808
  let defaultBranch;
718491
718809
  try {
718492
718810
  defaultBranch = await git.getDefaultBranch();
@@ -718558,10 +718876,11 @@ async function ensureGitRepo(git, remoteUrl) {
718558
718876
  await git.remote(["set-url", "origin", remoteUrl]);
718559
718877
  }
718560
718878
  }
718879
+ await ensureRemoteHasDefaultBranch(git, remoteUrl);
718561
718880
  }
718562
- await seedGithubWorkflowIfNeeded(git.workDir, remoteUrl);
718881
+ await seedGithubWorkflowIfNeeded(git.workDir, remoteUrl, superblocksBaseUrl);
718563
718882
  }
718564
- async function seedGithubWorkflowIfNeeded(workDir, remoteUrl) {
718883
+ async function seedGithubWorkflowIfNeeded(workDir, remoteUrl, superblocksBaseUrl) {
718565
718884
  if (!(0, import_shared70.isGitHubRemoteUrl)(remoteUrl)) {
718566
718885
  return;
718567
718886
  }
@@ -718572,7 +718891,8 @@ async function seedGithubWorkflowIfNeeded(workDir, remoteUrl) {
718572
718891
  return;
718573
718892
  }
718574
718893
  await nodeFs.mkdir(workflowDir, { recursive: true });
718575
- await nodeFs.writeFile(workflowFile, (0, import_shared70.buildGithubSuperblocksSyncWorkflow)(), "utf-8");
718894
+ const baseUrl = superblocksBaseUrl || process.env.SUPERBLOCKS_BASE_URL || "";
718895
+ await nodeFs.writeFile(workflowFile, baseUrl ? (0, import_shared70.buildGithubSuperblocksSyncWorkflowFromBaseUrl)(baseUrl) : (0, import_shared70.buildGithubSuperblocksSyncWorkflow)(), "utf-8");
718576
718896
  }
718577
718897
  async function canResolveRef(git, ref2) {
718578
718898
  try {
@@ -719520,7 +719840,7 @@ async function createPrompt(options8, settings) {
719520
719840
  enquirer3 = settings.enquirer;
719521
719841
  } else {
719522
719842
  try {
719523
- enquirer3 = await import("./enquirer-PDTBQAX2.js").then((imported) => imported.default ? new imported.default() : new imported());
719843
+ enquirer3 = await import("./enquirer-MD4ILGGR.js").then((imported) => imported.default ? new imported.default() : new imported());
719524
719844
  } catch (e) {
719525
719845
  if (this instanceof TaskWrapper) {
719526
719846
  this.task.prompt = new PromptError("Enquirer is a peer dependency that must be installed separately.");
@@ -719728,9 +720048,9 @@ var _DefaultRenderer = class {
719728
720048
  return typeof bottomBar === "number" && bottomBar !== 0 || typeof bottomBar === "boolean" && bottomBar !== false || !task.hasTitle();
719729
720049
  }
719730
720050
  async render() {
719731
- const { createLogUpdate } = await import("./log-update-ZG5GNEPY.js");
719732
- const { default: truncate } = await import("./cli-truncate-BBFIB7PJ.js");
719733
- const { default: wrap2 } = await import("./wrap-ansi-RELC4KH4.js");
720051
+ const { createLogUpdate } = await import("./log-update-IPZBTHHB.js");
720052
+ const { default: truncate } = await import("./cli-truncate-5AEGTCV4.js");
720053
+ const { default: wrap2 } = await import("./wrap-ansi-UDL4BSKP.js");
719734
720054
  this.updater = createLogUpdate(this.logger.process.stdout);
719735
720055
  this.truncate = truncate;
719736
720056
  this.wrap = wrap2;