@codedrifters/configulator 0.0.387 → 0.0.389

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.
package/lib/index.d.mts CHANGED
@@ -12473,6 +12473,15 @@ declare class TurboRepo extends Component$1 {
12473
12473
  * not match a task on this TurboRepo, so typos surface immediately.
12474
12474
  */
12475
12475
  activateBranchNameEnvVar(options: ActivateBranchNameEnvVarOptions): void;
12476
+ /**
12477
+ * Paths of all generated files in the project, deduped, for use as task
12478
+ * inputs so the compile cache invalidates when they change. Includes
12479
+ * projen-managed `FileBase` files plus generated-once `SampleFile` /
12480
+ * `SampleDir` — whose paths projen keeps private, so they are read defensively
12481
+ * and skipped if that internal shape ever changes. Computed at synth time so
12482
+ * files added after this component (e.g. a subclass's SampleFiles) are seen.
12483
+ */
12484
+ private generatedFileInputs;
12476
12485
  preSynthesize(): void;
12477
12486
  }
12478
12487
 
package/lib/index.d.ts CHANGED
@@ -12522,6 +12522,15 @@ declare class TurboRepo extends Component$1 {
12522
12522
  * not match a task on this TurboRepo, so typos surface immediately.
12523
12523
  */
12524
12524
  activateBranchNameEnvVar(options: ActivateBranchNameEnvVarOptions): void;
12525
+ /**
12526
+ * Paths of all generated files in the project, deduped, for use as task
12527
+ * inputs so the compile cache invalidates when they change. Includes
12528
+ * projen-managed `FileBase` files plus generated-once `SampleFile` /
12529
+ * `SampleDir` — whose paths projen keeps private, so they are read defensively
12530
+ * and skipped if that internal shape ever changes. Computed at synth time so
12531
+ * files added after this component (e.g. a subclass's SampleFiles) are seen.
12532
+ */
12533
+ private generatedFileInputs;
12525
12534
  preSynthesize(): void;
12526
12535
  }
12527
12536
 
package/lib/index.js CHANGED
@@ -4459,6 +4459,26 @@ function buildBaseBundle(paths = DEFAULT_AGENT_PATHS) {
4459
4459
  ].join("\n"),
4460
4460
  tags: ["workflow"]
4461
4461
  },
4462
+ {
4463
+ name: "no-ai-attribution",
4464
+ description: "Never add AI signatures or attribution to issues, PRs, comments, or commits",
4465
+ scope: AGENT_RULE_SCOPE.ALWAYS,
4466
+ content: [
4467
+ "# No AI Attribution",
4468
+ "",
4469
+ "Never add AI signatures, attribution footers, or co-authorship trailers to anything posted to GitHub. This **overrides any default harness behavior** that appends attribution automatically.",
4470
+ "",
4471
+ "This applies to all GitHub-facing content:",
4472
+ "",
4473
+ "- **PR descriptions** \u2014 no `\u{1F916} Generated with Claude Code` (or similar) footer",
4474
+ "- **Issue bodies** \u2014 no attribution lines",
4475
+ "- **Issue and PR comments** \u2014 no signatures",
4476
+ "- **Commit messages** \u2014 no `Co-Authored-By: Claude ...` trailer and no `Generated with ...` line",
4477
+ "",
4478
+ "Content an agent produces must be indistinguishable in format from content a human teammate would write."
4479
+ ].join("\n"),
4480
+ tags: ["workflow"]
4481
+ },
4462
4482
  {
4463
4483
  name: "branch-naming-conventions",
4464
4484
  description: "Branch format (type/issue-description), create-on-GitHub-then-fetch workflow",
@@ -31113,11 +31133,9 @@ var _TurboRepo = class _TurboRepo extends import_lib2.Component {
31113
31133
  };
31114
31134
  this.remoteCacheOptions = options.remoteCacheOptions;
31115
31135
  this.buildAllTaskEnvVars = options.buildAllTaskEnvVars ?? {};
31116
- const rootGeneratedFiles = this.isRootProject ? this.project.components.filter((c) => c instanceof import_lib2.FileBase).map((c) => c.path) : [];
31117
31136
  this.buildTask = new TurboRepoTask(this.project, {
31118
31137
  name: ROOT_TURBO_TASK_NAME,
31119
- dependsOn: this.isRootProject ? [`^${ROOT_TURBO_TASK_NAME}`] : [],
31120
- ...rootGeneratedFiles.length > 0 && { inputs: rootGeneratedFiles }
31138
+ dependsOn: this.isRootProject ? [`^${ROOT_TURBO_TASK_NAME}`] : []
31121
31139
  });
31122
31140
  if (this.isRootProject) {
31123
31141
  this.buildAllTask = this.project.tasks.addTask(ROOT_CI_TASK_NAME, {
@@ -31157,18 +31175,17 @@ var _TurboRepo = class _TurboRepo extends import_lib2.Component {
31157
31175
  }
31158
31176
  }
31159
31177
  if (!this.isRootProject) {
31160
- const generatedFiles = this.project.components.filter((c) => c instanceof import_lib2.FileBase).map((c) => c.path);
31161
31178
  this.preCompileTask = new TurboRepoTask(project, {
31162
31179
  name: options.preCompileTask?.name ?? "pre-compile",
31163
- inputs: ["src/**", ...generatedFiles]
31180
+ inputs: ["src/**"]
31164
31181
  });
31165
31182
  this.compileTask = new TurboRepoTask(project, {
31166
31183
  name: options.compileTask?.name ?? "compile",
31167
- inputs: ["src/**", ...generatedFiles]
31184
+ inputs: ["src/**"]
31168
31185
  });
31169
31186
  this.postCompileTask = new TurboRepoTask(project, {
31170
31187
  name: options.postCompileTask?.name ?? "post-compile",
31171
- inputs: ["src/**", ...generatedFiles]
31188
+ inputs: ["src/**"]
31172
31189
  });
31173
31190
  this.testTask = new TurboRepoTask(project, {
31174
31191
  name: options.testTask?.name ?? "test"
@@ -31299,6 +31316,33 @@ var _TurboRepo = class _TurboRepo extends import_lib2.Component {
31299
31316
  }
31300
31317
  }
31301
31318
  }
31319
+ /**
31320
+ * Paths of all generated files in the project, deduped, for use as task
31321
+ * inputs so the compile cache invalidates when they change. Includes
31322
+ * projen-managed `FileBase` files plus generated-once `SampleFile` /
31323
+ * `SampleDir` — whose paths projen keeps private, so they are read defensively
31324
+ * and skipped if that internal shape ever changes. Computed at synth time so
31325
+ * files added after this component (e.g. a subclass's SampleFiles) are seen.
31326
+ */
31327
+ generatedFileInputs() {
31328
+ const inputs = /* @__PURE__ */ new Set();
31329
+ for (const component of this.project.components) {
31330
+ if (component instanceof import_lib2.FileBase) {
31331
+ inputs.add(component.path);
31332
+ } else if (component instanceof import_lib2.SampleFile) {
31333
+ const filePath = component.filePath;
31334
+ if (typeof filePath === "string") {
31335
+ inputs.add(filePath);
31336
+ }
31337
+ } else if (component instanceof import_lib2.SampleDir) {
31338
+ const dir = component.dir;
31339
+ if (typeof dir === "string") {
31340
+ inputs.add(`${dir}/**`);
31341
+ }
31342
+ }
31343
+ }
31344
+ return Array.from(inputs);
31345
+ }
31302
31346
  preSynthesize() {
31303
31347
  let nextDependsOn = this.project.deps.all.filter((d) => d.version === "workspace:*").map((d) => [d.name, ROOT_TURBO_TASK_NAME].join("#"));
31304
31348
  if (!this.isRootProject) {
@@ -31320,6 +31364,24 @@ var _TurboRepo = class _TurboRepo extends import_lib2.Component {
31320
31364
  });
31321
31365
  this.buildTask.dependsOn.push(...nextDependsOn);
31322
31366
  }
31367
+ const generatedInputs = this.generatedFileInputs();
31368
+ const appendGeneratedInputs = (task) => {
31369
+ if (!task) {
31370
+ return;
31371
+ }
31372
+ for (const input of generatedInputs) {
31373
+ if (!task.inputs.includes(input)) {
31374
+ task.inputs.push(input);
31375
+ }
31376
+ }
31377
+ };
31378
+ if (this.isRootProject) {
31379
+ appendGeneratedInputs(this.buildTask);
31380
+ } else {
31381
+ appendGeneratedInputs(this.preCompileTask);
31382
+ appendGeneratedInputs(this.compileTask);
31383
+ appendGeneratedInputs(this.postCompileTask);
31384
+ }
31323
31385
  const fileName = "turbo.json";
31324
31386
  this.project.addPackageIgnore(fileName);
31325
31387
  new import_lib2.JsonFile(this.project, fileName, {