@fern-api/fern-api-dev 4.77.0 → 4.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/cli.cjs +320 -21
  2. package/package.json +1 -1
package/cli.cjs CHANGED
@@ -477592,6 +477592,7 @@ __export(api_exports, {
477592
477592
  HttpMethod: () => HttpMethod2,
477593
477593
  HttpRequestBody: () => HttpRequestBody,
477594
477594
  HttpResponseBody: () => HttpResponseBody,
477595
+ InvocationSource: () => InvocationSource,
477595
477596
  JsonResponse: () => JsonResponse,
477596
477597
  Literal: () => Literal,
477597
477598
  NamedTypeDefault: () => NamedTypeDefault,
@@ -480204,7 +480205,8 @@ __export(ir_exports2, {
480204
480205
  ApiDefinitionSource: () => ApiDefinitionSource,
480205
480206
  ApiVersionScheme: () => ApiVersionScheme,
480206
480207
  ErrorDiscriminationStrategy: () => ErrorDiscriminationStrategy,
480207
- ExampleStyle: () => ExampleStyle
480208
+ ExampleStyle: () => ExampleStyle,
480209
+ InvocationSource: () => InvocationSource
480208
480210
  });
480209
480211
 
480210
480212
  // ../../ir-sdk/lib/sdk/api/resources/ir/types/ApiDefinitionSource.js
@@ -480309,6 +480311,31 @@ var ExampleStyle = {
480309
480311
  }
480310
480312
  };
480311
480313
 
480314
+ // ../../ir-sdk/lib/sdk/api/resources/ir/types/InvocationSource.js
480315
+ var InvocationSourceValues = {
480316
+ Autopilot: "autopilot",
480317
+ Autorelease: "autorelease",
480318
+ Ci: "ci",
480319
+ Manual: "manual"
480320
+ };
480321
+ var InvocationSource = {
480322
+ ...InvocationSourceValues,
480323
+ _visit: (value, visitor) => {
480324
+ switch (value) {
480325
+ case InvocationSource.Autopilot:
480326
+ return visitor.autopilot();
480327
+ case InvocationSource.Autorelease:
480328
+ return visitor.autorelease();
480329
+ case InvocationSource.Ci:
480330
+ return visitor.ci();
480331
+ case InvocationSource.Manual:
480332
+ return visitor.manual();
480333
+ default:
480334
+ return visitor._other();
480335
+ }
480336
+ }
480337
+ };
480338
+
480312
480339
  // ../../ir-sdk/lib/sdk/api/resources/proto/index.js
480313
480340
  var proto_exports = {};
480314
480341
  __export(proto_exports, {
@@ -482409,6 +482436,7 @@ __export(serialization_exports2, {
482409
482436
  IntegerType: () => IntegerType,
482410
482437
  IntegerValidationRules: () => IntegerValidationRules,
482411
482438
  IntermediateRepresentation: () => IntermediateRepresentation,
482439
+ InvocationSource: () => InvocationSource2,
482412
482440
  JsonEncoding: () => JsonEncoding,
482413
482441
  JsonResponse: () => JsonResponse2,
482414
482442
  JsonResponseBody: () => JsonResponseBody,
@@ -487174,6 +487202,7 @@ __export(ir_exports4, {
487174
487202
  GenerationMetadata: () => GenerationMetadata,
487175
487203
  HeaderApiVersionScheme: () => HeaderApiVersionScheme,
487176
487204
  IntermediateRepresentation: () => IntermediateRepresentation,
487205
+ InvocationSource: () => InvocationSource2,
487177
487206
  Package: () => Package,
487178
487207
  PackageNavigationConfig: () => PackageNavigationConfig,
487179
487208
  PlatformHeaders: () => PlatformHeaders,
@@ -487281,13 +487310,20 @@ var ErrorDiscriminationStrategy2 = schemas_exports3.union("type", {
487281
487310
  // ../../ir-sdk/lib/sdk/serialization/resources/ir/types/ExampleStyle.js
487282
487311
  var ExampleStyle2 = schemas_exports3.enum_(["minimal", "comprehensive"]);
487283
487312
 
487313
+ // ../../ir-sdk/lib/sdk/serialization/resources/ir/types/InvocationSource.js
487314
+ var InvocationSource2 = schemas_exports3.enum_(["autopilot", "autorelease", "ci", "manual"]);
487315
+
487284
487316
  // ../../ir-sdk/lib/sdk/serialization/resources/ir/types/GenerationMetadata.js
487285
487317
  var GenerationMetadata = schemas_exports3.objectWithoutOptionalProperties({
487286
487318
  cliVersion: schemas_exports3.string(),
487287
487319
  generatorName: schemas_exports3.string(),
487288
487320
  generatorVersion: schemas_exports3.string(),
487289
487321
  generatorConfig: schemas_exports3.unknown().optional(),
487290
- originGitCommit: schemas_exports3.string().optional()
487322
+ originGitCommit: schemas_exports3.string().optional(),
487323
+ originGitCommitIsDirty: schemas_exports3.boolean().optional(),
487324
+ invokedBy: InvocationSource2.optional(),
487325
+ requestedVersion: schemas_exports3.string().optional(),
487326
+ ciProvider: schemas_exports3.string().optional()
487291
487327
  });
487292
487328
 
487293
487329
  // ../../ir-sdk/lib/sdk/serialization/resources/publish/types/CratesPublishTarget.js
@@ -492120,6 +492156,81 @@ function getGithubRepository(generatorInvocation) {
492120
492156
  return void 0;
492121
492157
  }
492122
492158
 
492159
+ // ../../commons/api-workspace-commons/lib/detectInvocationSource.js
492160
+ function detectInvocationSource() {
492161
+ const fromEnv = normalizeInvoker(process.env.FERN_INVOKER);
492162
+ if (fromEnv != null) {
492163
+ return fromEnv;
492164
+ }
492165
+ if (isCIEnvironment()) {
492166
+ return "ci";
492167
+ }
492168
+ return "manual";
492169
+ }
492170
+ function detectCiProvider() {
492171
+ if (process.env.GITHUB_ACTIONS === "true") {
492172
+ return "github";
492173
+ }
492174
+ if (process.env.GITLAB_CI === "true") {
492175
+ return "gitlab";
492176
+ }
492177
+ if (process.env.BITBUCKET_BUILD_NUMBER != null) {
492178
+ return "bitbucket";
492179
+ }
492180
+ if (process.env.CIRCLECI === "true") {
492181
+ return "circleci";
492182
+ }
492183
+ if (process.env.TRAVIS === "true") {
492184
+ return "travis";
492185
+ }
492186
+ if (process.env.JENKINS_URL != null || process.env.JENKINS_HOME != null) {
492187
+ return "jenkins";
492188
+ }
492189
+ if (process.env.TF_BUILD != null) {
492190
+ return "azure-pipelines";
492191
+ }
492192
+ if (process.env.BUILDKITE === "true") {
492193
+ return "buildkite";
492194
+ }
492195
+ if (process.env.CODEBUILD_BUILD_ID != null) {
492196
+ return "codebuild";
492197
+ }
492198
+ if (process.env.TEAMCITY_VERSION != null) {
492199
+ return "teamcity";
492200
+ }
492201
+ if (process.env.DRONE === "true") {
492202
+ return "drone";
492203
+ }
492204
+ if (process.env.SEMAPHORE === "true") {
492205
+ return "semaphore";
492206
+ }
492207
+ if (process.env.APPVEYOR === "true" || process.env.APPVEYOR === "True") {
492208
+ return "appveyor";
492209
+ }
492210
+ if (isCIEnvironment()) {
492211
+ return "unknown";
492212
+ }
492213
+ return void 0;
492214
+ }
492215
+ function normalizeInvoker(raw) {
492216
+ if (raw == null) {
492217
+ return void 0;
492218
+ }
492219
+ const normalized = raw.trim().toLowerCase();
492220
+ switch (normalized) {
492221
+ case "autopilot":
492222
+ case "autorelease":
492223
+ case "ci":
492224
+ case "manual":
492225
+ return normalized;
492226
+ default:
492227
+ return void 0;
492228
+ }
492229
+ }
492230
+ function isCIEnvironment() {
492231
+ return !!(process.env.CI || process.env.CONTINUOUS_INTEGRATION || process.env.GITHUB_ACTIONS || process.env.GITLAB_CI || process.env.CIRCLECI || process.env.TRAVIS || process.env.JENKINS_URL || process.env.JENKINS_HOME || process.env.TF_BUILD || process.env.BUILDKITE || process.env.CODEBUILD_BUILD_ID || process.env.TEAMCITY_VERSION || process.env.BITBUCKET_BUILD_NUMBER || process.env.DRONE || process.env.SEMAPHORE || process.env.APPVEYOR || process.env.BUDDY_WORKSPACE_ID || process.env.WERCKER_RUN_ID);
492232
+ }
492233
+
492123
492234
  // ../../commons/api-workspace-commons/lib/FernWorkspace.js
492124
492235
  var FernWorkspace = class extends AbstractAPIWorkspace {
492125
492236
  definition;
@@ -492163,6 +492274,20 @@ function getOriginGitCommit() {
492163
492274
  return void 0;
492164
492275
  }
492165
492276
  }
492277
+ function getOriginGitCommitIsDirty() {
492278
+ if (process.env.IGNORE_GIT_IN_METADATA === "true") {
492279
+ return void 0;
492280
+ }
492281
+ try {
492282
+ const status = (0, import_child_process3.execSync)("git status --porcelain", {
492283
+ encoding: "utf-8",
492284
+ stdio: ["pipe", "pipe", "pipe"]
492285
+ });
492286
+ return status.trim().length > 0;
492287
+ } catch {
492288
+ return void 0;
492289
+ }
492290
+ }
492166
492291
 
492167
492292
  // ../configuration/lib/constants.js
492168
492293
  var FERN_DIRECTORY = "fern";
@@ -622064,7 +622189,7 @@ var AccessTokenPosthogManager = class {
622064
622189
  properties: {
622065
622190
  ...event,
622066
622191
  ...event.properties,
622067
- version: "4.77.0",
622192
+ version: "4.78.0",
622068
622193
  usingAccessToken: true
622069
622194
  }
622070
622195
  });
@@ -622118,7 +622243,7 @@ var UserPosthogManager = class {
622118
622243
  distinctId: this.userId ?? await this.getPersistedDistinctId(),
622119
622244
  event: "CLI",
622120
622245
  properties: {
622121
- version: "4.77.0",
622246
+ version: "4.78.0",
622122
622247
  ...event,
622123
622248
  ...event.properties,
622124
622249
  usingAccessToken: false,
@@ -754057,7 +754182,16 @@ function inflateIr(ir15, casingsGenerator) {
754057
754182
  dynamic: ir15.dynamic != null ? inflateDynamicIr(ir15.dynamic) : void 0,
754058
754183
  selfHosted: ir15.selfHosted,
754059
754184
  audiences: ir15.audiences,
754060
- generationMetadata: ir15.generationMetadata,
754185
+ // V65 only knows about cliVersion/generatorName/generatorVersion/generatorConfig/originGitCommit.
754186
+ // Strip the V66-only fields (originGitCommitIsDirty, invokedBy, requestedVersion, ciProvider)
754187
+ // to preserve the V65 contract for older generators.
754188
+ generationMetadata: ir15.generationMetadata != null ? {
754189
+ cliVersion: ir15.generationMetadata.cliVersion,
754190
+ generatorName: ir15.generationMetadata.generatorName,
754191
+ generatorVersion: ir15.generationMetadata.generatorVersion,
754192
+ generatorConfig: ir15.generationMetadata.generatorConfig,
754193
+ originGitCommit: ir15.generationMetadata.originGitCommit
754194
+ } : void 0,
754061
754195
  apiPlayground: ir15.apiPlayground
754062
754196
  };
754063
754197
  }
@@ -839336,7 +839470,7 @@ var LOCAL_STORAGE_FOLDER4 = ".fern-dev";
839336
839470
  var LOGS_FOLDER_NAME = "logs";
839337
839471
  var MAX_LOGS_DIR_SIZE_BYTES = 100 * 1024 * 1024;
839338
839472
  function getCliSource() {
839339
- const version7 = "4.77.0";
839473
+ const version7 = "4.78.0";
839340
839474
  return `cli@${version7}`;
839341
839475
  }
839342
839476
  var DebugLogger = class {
@@ -849247,7 +849381,11 @@ async function runRemoteGenerationForGenerator({ projectConfig, organization, wo
849247
849381
  generatorName: generatorInvocation.name,
849248
849382
  generatorVersion: generatorInvocation.version,
849249
849383
  generatorConfig: generatorInvocation.config,
849250
- originGitCommit: getOriginGitCommit()
849384
+ originGitCommit: getOriginGitCommit(),
849385
+ originGitCommitIsDirty: getOriginGitCommitIsDirty(),
849386
+ invokedBy: detectInvocationSource(),
849387
+ requestedVersion: version7,
849388
+ ciProvider: detectCiProvider()
849251
849389
  }
849252
849390
  });
849253
849391
  const venus = createVenusService({ token: token.value });
@@ -850651,7 +850789,7 @@ var LegacyDocsPublisher = class {
850651
850789
  previewId,
850652
850790
  disableTemplates: void 0,
850653
850791
  skipUpload,
850654
- cliVersion: "4.77.0"
850792
+ cliVersion: "4.78.0"
850655
850793
  });
850656
850794
  if (taskContext.getResult() === TaskResult.Failure) {
850657
850795
  return { success: false };
@@ -889084,18 +889222,156 @@ var DynamicTypeLiteralMapper4 = class _DynamicTypeLiteralMapper {
889084
889222
  });
889085
889223
  return ruby_exports.TypeLiteral.nop();
889086
889224
  }
889087
- return ruby_exports.TypeLiteral.hash(Object.entries(value).map(([key2, val]) => {
889225
+ const entries23 = this.convertObjectEntries({ object: object22, value });
889226
+ return ruby_exports.TypeLiteral.hash(entries23);
889227
+ }
889228
+ convertObjectEntries({ object: object22, value }) {
889229
+ const record22 = typeof value === "object" && value != null ? value : {};
889230
+ const providedWireValues = new Set(Object.keys(record22));
889231
+ const entries23 = [];
889232
+ for (const [key2, val] of Object.entries(record22)) {
889088
889233
  this.context.errors.scope(key2);
889089
889234
  const property24 = object22.properties.find((p10) => p10.name.wireValue === key2);
889090
889235
  const typeReference2 = property24?.typeReference ?? { type: "unknown" };
889091
889236
  const propertyName = property24?.name.name.snakeCase.safeName ?? key2;
889092
- const astNode = {
889093
- key: ruby_exports.TypeLiteral.string(propertyName),
889094
- value: this.convert({ typeReference: typeReference2, value: val })
889095
- };
889237
+ const converted = this.convert({ typeReference: typeReference2, value: val });
889238
+ if (!ruby_exports.TypeLiteral.isNop(converted)) {
889239
+ entries23.push({
889240
+ key: ruby_exports.TypeLiteral.string(propertyName),
889241
+ value: converted
889242
+ });
889243
+ }
889096
889244
  this.context.errors.unscope();
889097
- return astNode;
889098
- }));
889245
+ }
889246
+ for (const property24 of object22.properties) {
889247
+ if (providedWireValues.has(property24.name.wireValue)) {
889248
+ continue;
889249
+ }
889250
+ if (this.context.isOptional(property24.typeReference) || this.context.isNullable(property24.typeReference)) {
889251
+ continue;
889252
+ }
889253
+ const defaultValue = this.synthesizeDefaultValue(property24.typeReference);
889254
+ if (!ruby_exports.TypeLiteral.isNop(defaultValue)) {
889255
+ entries23.push({
889256
+ key: ruby_exports.TypeLiteral.string(property24.name.name.snakeCase.safeName),
889257
+ value: defaultValue
889258
+ });
889259
+ }
889260
+ }
889261
+ return entries23.filter((entry) => !ruby_exports.TypeLiteral.isNop(entry.value));
889262
+ }
889263
+ // =============================================================================
889264
+ // DEFAULT VALUE SYNTHESIS
889265
+ // =============================================================================
889266
+ /**
889267
+ * Synthesizes a reasonable default value for a given type reference.
889268
+ * Used to populate required fields that are missing from examples,
889269
+ * preventing invalid code generation (e.g. empty hashes for types
889270
+ * with required fields).
889271
+ */
889272
+ synthesizeDefaultValue(typeReference2, seen = /* @__PURE__ */ new Set()) {
889273
+ switch (typeReference2.type) {
889274
+ case "optional":
889275
+ case "nullable":
889276
+ return ruby_exports.TypeLiteral.nop();
889277
+ case "primitive":
889278
+ return this.synthesizeDefaultPrimitive(typeReference2.value);
889279
+ case "literal":
889280
+ return this.synthesizeDefaultLiteral(typeReference2.value);
889281
+ case "list":
889282
+ return ruby_exports.TypeLiteral.list([]);
889283
+ case "set":
889284
+ return ruby_exports.TypeLiteral.list([]);
889285
+ case "map":
889286
+ return ruby_exports.TypeLiteral.hash([]);
889287
+ case "named": {
889288
+ if (seen.has(typeReference2.value)) {
889289
+ return ruby_exports.TypeLiteral.nop();
889290
+ }
889291
+ const named = this.context.resolveNamedType({ typeId: typeReference2.value });
889292
+ if (named == null) {
889293
+ return ruby_exports.TypeLiteral.nop();
889294
+ }
889295
+ return this.synthesizeDefaultNamed({ named, typeId: typeReference2.value, seen });
889296
+ }
889297
+ case "unknown":
889298
+ return ruby_exports.TypeLiteral.nop();
889299
+ default:
889300
+ assertNever(typeReference2);
889301
+ }
889302
+ }
889303
+ synthesizeDefaultPrimitive(primitive) {
889304
+ switch (primitive) {
889305
+ case "STRING":
889306
+ case "BASE_64":
889307
+ case "BIG_INTEGER":
889308
+ return ruby_exports.TypeLiteral.string("string");
889309
+ case "INTEGER":
889310
+ case "LONG":
889311
+ case "UINT":
889312
+ case "UINT_64":
889313
+ return ruby_exports.TypeLiteral.integer(1);
889314
+ case "FLOAT":
889315
+ case "DOUBLE":
889316
+ return ruby_exports.TypeLiteral.float(1.1);
889317
+ case "BOOLEAN":
889318
+ return ruby_exports.TypeLiteral.boolean(true);
889319
+ case "DATE":
889320
+ return ruby_exports.TypeLiteral.string("2024-01-15");
889321
+ case "DATE_TIME":
889322
+ case "DATE_TIME_RFC_2822":
889323
+ return ruby_exports.TypeLiteral.string("2024-01-15T09:30:00Z");
889324
+ case "UUID":
889325
+ return ruby_exports.TypeLiteral.string("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32");
889326
+ default:
889327
+ assertNever(primitive);
889328
+ }
889329
+ }
889330
+ synthesizeDefaultLiteral(literalType2) {
889331
+ switch (literalType2.type) {
889332
+ case "boolean":
889333
+ return ruby_exports.TypeLiteral.boolean(literalType2.value);
889334
+ case "string":
889335
+ return ruby_exports.TypeLiteral.string(literalType2.value);
889336
+ default:
889337
+ assertNever(literalType2);
889338
+ }
889339
+ }
889340
+ synthesizeDefaultNamed({ named, typeId, seen }) {
889341
+ const newSeen = new Set(seen);
889342
+ newSeen.add(typeId);
889343
+ switch (named.type) {
889344
+ case "alias":
889345
+ return this.synthesizeDefaultValue(named.typeReference, newSeen);
889346
+ case "enum": {
889347
+ const firstValue = named.values[0];
889348
+ if (firstValue == null) {
889349
+ return ruby_exports.TypeLiteral.nop();
889350
+ }
889351
+ return ruby_exports.TypeLiteral.string(firstValue.wireValue);
889352
+ }
889353
+ case "object": {
889354
+ const entries23 = [];
889355
+ for (const property24 of named.properties) {
889356
+ if (this.context.isOptional(property24.typeReference) || this.context.isNullable(property24.typeReference)) {
889357
+ continue;
889358
+ }
889359
+ const defaultValue = this.synthesizeDefaultValue(property24.typeReference, newSeen);
889360
+ if (!ruby_exports.TypeLiteral.isNop(defaultValue)) {
889361
+ entries23.push({
889362
+ key: ruby_exports.TypeLiteral.string(property24.name.name.snakeCase.safeName),
889363
+ value: defaultValue
889364
+ });
889365
+ }
889366
+ }
889367
+ return ruby_exports.TypeLiteral.hash(entries23);
889368
+ }
889369
+ case "discriminatedUnion":
889370
+ case "undiscriminatedUnion":
889371
+ return ruby_exports.TypeLiteral.nop();
889372
+ default:
889373
+ assertNever(named);
889374
+ }
889099
889375
  }
889100
889376
  getValueAsNumber({ value, as: as8 }) {
889101
889377
  const num = as8 === "key" ? typeof value === "string" ? Number(value) : value : value;
@@ -889587,9 +889863,10 @@ var EndpointSnippetGenerator7 = class {
889587
889863
  }
889588
889864
  getMethodArgsForPropertiesRequest({ request: request7, snippet: snippet2 }) {
889589
889865
  const args = [];
889866
+ const record22 = this.context.getRecord(snippet2.requestBody) ?? {};
889590
889867
  const bodyProperties = this.context.associateByWireValue({
889591
889868
  parameters: request7.value,
889592
- values: this.context.getRecord(snippet2.requestBody) ?? {}
889869
+ values: record22
889593
889870
  });
889594
889871
  for (const parameter6 of bodyProperties) {
889595
889872
  const value = this.context.dynamicTypeLiteralMapper.convert(parameter6);
@@ -902495,7 +902772,11 @@ async function getIntermediateRepresentation({ workspace, audiences, generatorIn
902495
902772
  generatorName: generatorInvocation.name,
902496
902773
  generatorVersion: generatorInvocation.version,
902497
902774
  generatorConfig: generatorInvocation.config,
902498
- originGitCommit: getOriginGitCommit()
902775
+ originGitCommit: getOriginGitCommit(),
902776
+ originGitCommitIsDirty: getOriginGitCommitIsDirty(),
902777
+ invokedBy: detectInvocationSource(),
902778
+ requestedVersion: version7,
902779
+ ciProvider: detectCiProvider()
902499
902780
  }
902500
902781
  });
902501
902782
  if (sourceConfig != null) {
@@ -902506,7 +902787,17 @@ async function getIntermediateRepresentation({ workspace, audiences, generatorIn
902506
902787
  generatorName: generatorInvocation.name,
902507
902788
  generatorVersion: generatorInvocation.version,
902508
902789
  generatorConfig: generatorInvocation.config,
902509
- originGitCommit: getOriginGitCommit()
902790
+ originGitCommit: getOriginGitCommit(),
902791
+ originGitCommitIsDirty: getOriginGitCommitIsDirty(),
902792
+ invokedBy: detectInvocationSource(),
902793
+ // `requestedVersion` must reflect the raw `--version` flag passed by the user. The
902794
+ // `version` parameter here may have been resolved (e.g. via `computeSemanticVersion`)
902795
+ // so we never fall back to it. When the IR is freshly generated above, this field is
902796
+ // populated with the raw flag value. When the IR is pre-generated, the caller is
902797
+ // responsible for having set this correctly; a pre-existing `undefined` means the
902798
+ // user did not pass `--version`.
902799
+ requestedVersion: intermediateRepresentation.generationMetadata?.requestedVersion,
902800
+ ciProvider: detectCiProvider()
902510
902801
  };
902511
902802
  context3.logger.debug("Generated IR");
902512
902803
  const irVersionFromFdr = await getIrVersionForGenerator(generatorInvocation).then((version8) => version8 == null ? void 0 : "v" + version8.toString());
@@ -903917,7 +904208,11 @@ async function runLocalGenerationForWorkspace({ token, projectConfig, workspace,
903917
904208
  generatorName: generatorInvocation.name,
903918
904209
  generatorVersion: generatorInvocation.version,
903919
904210
  generatorConfig: generatorInvocation.config,
903920
- originGitCommit: getOriginGitCommit()
904211
+ originGitCommit: getOriginGitCommit(),
904212
+ originGitCommitIsDirty: getOriginGitCommitIsDirty(),
904213
+ invokedBy: detectInvocationSource(),
904214
+ requestedVersion: userProvidedVersion,
904215
+ ciProvider: detectCiProvider()
903921
904216
  }
903922
904217
  });
903923
904218
  const venus = createVenusService({ token: token?.value });
@@ -904348,7 +904643,11 @@ var GenerationRunner = class {
904348
904643
  generatorName: generatorInvocation.name,
904349
904644
  generatorVersion: generatorInvocation.version,
904350
904645
  generatorConfig: generatorInvocation.config,
904351
- originGitCommit: getOriginGitCommit()
904646
+ originGitCommit: getOriginGitCommit(),
904647
+ originGitCommitIsDirty: getOriginGitCommitIsDirty(),
904648
+ invokedBy: detectInvocationSource(),
904649
+ requestedVersion: outputVersionOverride,
904650
+ ciProvider: detectCiProvider()
904352
904651
  }
904353
904652
  });
904354
904653
  const workspaceTempDir = await getWorkspaceTempDir();
@@ -925562,7 +925861,7 @@ var CliContext = class _CliContext {
925562
925861
  if (false) {
925563
925862
  this.logger.error("CLI_VERSION is not defined");
925564
925863
  }
925565
- return "4.77.0";
925864
+ return "4.78.0";
925566
925865
  }
925567
925866
  getCliName() {
925568
925867
  if (false) {
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.77.0",
2
+ "version": "4.78.0",
3
3
  "repository": {
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/fern-api/fern.git",