@dbx-tools/projen 0.6.225 → 0.6.227
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/README.md +12 -3
- package/index.ts +1 -1
- package/package.json +4 -4
- package/src/pnpm-workspace.ts +2 -2
- package/src/project-js.ts +3 -0
- package/src/release.ts +5 -0
- package/tasks/release-pr.ts +10 -0
- package/tasks/release-summary.ts +34 -7
package/README.md
CHANGED
|
@@ -57,9 +57,13 @@ Repository policy stays in the consuming `.projenrc.ts`:
|
|
|
57
57
|
artifact upload, and deployment without naming a docs script or output tree.
|
|
58
58
|
- `releasePythonRoot` passes the actual Python package root to local release
|
|
59
59
|
preparation. Omit it when the workspace has no standard Python packages.
|
|
60
|
-
- `
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
- `releaseValidationTasks` names repository tasks that must pass in the release
|
|
61
|
+
worktree before Cargo tests, compilation, local publication, or approval.
|
|
62
|
+
Use it for repository-specific guards that also run in release CI.
|
|
63
|
+
- `releaseSummary` controls versioned release notes. It defaults to Cursor,
|
|
64
|
+
Codex, Claude fallback order and writes a deterministic Git summary when every
|
|
65
|
+
configured provider is unavailable; pass `false` to disable or provide a
|
|
66
|
+
`providers` array to choose the order/subset.
|
|
63
67
|
- `pullRequestTitlePolicy` configures semantic title types and scope policy.
|
|
64
68
|
Omit it or pass `false` to disable the title job.
|
|
65
69
|
- `workflowCacheIgnorePaths` excludes generated output trees that may contain
|
|
@@ -286,6 +290,11 @@ Built-in tag mixins set runtime defaults for `shared`, `node`, `cli`, `server`,
|
|
|
286
290
|
`ui`, and `openapi`. Repo-specific mixins layer package-specific dependencies,
|
|
287
291
|
scripts, and generated files on top.
|
|
288
292
|
|
|
293
|
+
AppKit 0.81's `appkitServerConfig()` is the preferred tsdown preset for a
|
|
294
|
+
consumer app using conventional compiled `server/agents/*/agent.ts` entries. It
|
|
295
|
+
does not replace this engine's package discovery, Bun browser build, source-run
|
|
296
|
+
server, publication, or Databricks deployment staging.
|
|
297
|
+
|
|
289
298
|
A tag layers over a shared compiler floor every package gets at construction:
|
|
290
299
|
ES2022 plus the web-platform globals available in every runtime, and deliberately
|
|
291
300
|
no DOM lib and no Node types, so agnostic code stays isomorphic. The tags are what
|
package/index.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/projen";
|
|
6
|
-
export const PACKAGE_VERSION = "0.6.
|
|
6
|
+
export const PACKAGE_VERSION = "0.6.227";
|
|
7
7
|
export * as barrels from "./src/barrels.ts";
|
|
8
8
|
export * as bunApp from "./src/bun-app.ts";
|
|
9
9
|
export * as bunWorkflow from "./src/bun-workflow.ts";
|
package/package.json
CHANGED
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@clack/prompts": "^1.7.0",
|
|
28
|
-
"@dbx-tools/core": "0.6.
|
|
29
|
-
"@dbx-tools/path": "0.6.
|
|
30
|
-
"@dbx-tools/shared-core": "0.6.
|
|
28
|
+
"@dbx-tools/core": "0.6.227",
|
|
29
|
+
"@dbx-tools/path": "0.6.227",
|
|
30
|
+
"@dbx-tools/shared-core": "0.6.227",
|
|
31
31
|
"commander": "^15.0.0",
|
|
32
32
|
"concurrently": "^10.0.3",
|
|
33
33
|
"constructs": "^10.6.0",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
},
|
|
48
48
|
"main": "index.ts",
|
|
49
49
|
"license": "Apache-2.0",
|
|
50
|
-
"version": "0.6.
|
|
50
|
+
"version": "0.6.227",
|
|
51
51
|
"types": "index.ts",
|
|
52
52
|
"type": "module",
|
|
53
53
|
"exports": {
|
package/src/pnpm-workspace.ts
CHANGED
|
@@ -87,8 +87,8 @@ const DEFAULT_CATALOG: Catalog = {
|
|
|
87
87
|
tsoa: "^6.6.0",
|
|
88
88
|
concurrently: "^10.0.3",
|
|
89
89
|
pnpm: "^11.0.6",
|
|
90
|
-
"@databricks/appkit": "
|
|
91
|
-
"@databricks/appkit-ui": "
|
|
90
|
+
"@databricks/appkit": "0.81.0",
|
|
91
|
+
"@databricks/appkit-ui": "0.81.0",
|
|
92
92
|
"@databricks/sdk-experimental": "^0.17.0",
|
|
93
93
|
};
|
|
94
94
|
|
package/src/project-js.ts
CHANGED
|
@@ -621,6 +621,8 @@ export type DBXToolsJavaScriptProjectOptions = CommonProjectOptions &
|
|
|
621
621
|
readonly releaseDocs?: ReleaseDocsOptions;
|
|
622
622
|
/** Python package root passed to local release preparation when configured. */
|
|
623
623
|
readonly releasePythonRoot?: string;
|
|
624
|
+
/** Repository task names run during local release preparation before publication. */
|
|
625
|
+
readonly releaseValidationTasks?: readonly string[];
|
|
624
626
|
/** Optional AI-generated release summary. Defaults to enabled. */
|
|
625
627
|
readonly releaseSummary?: boolean | ReleaseSummaryOptions;
|
|
626
628
|
/** Set to `false` to omit normal npm workspace publication. */
|
|
@@ -1542,6 +1544,7 @@ function initProject(
|
|
|
1542
1544
|
nodeRelease: options.nodeRelease,
|
|
1543
1545
|
docs: options.releaseDocs,
|
|
1544
1546
|
pythonRoot: options.releasePythonRoot,
|
|
1547
|
+
validationTasks: options.releaseValidationTasks,
|
|
1545
1548
|
summary: options.releaseSummary,
|
|
1546
1549
|
});
|
|
1547
1550
|
}
|
package/src/release.ts
CHANGED
|
@@ -53,6 +53,8 @@ export interface DBXToolsReleaseOptions {
|
|
|
53
53
|
readonly docs?: ReleaseDocsOptions;
|
|
54
54
|
/** Python package root passed to local release preparation. */
|
|
55
55
|
readonly pythonRoot?: string;
|
|
56
|
+
/** Repository task names run in the release worktree before expensive validation and publication. */
|
|
57
|
+
readonly validationTasks?: readonly string[];
|
|
56
58
|
/**
|
|
57
59
|
* Generate a versioned release summary locally. Defaults to enabled with the
|
|
58
60
|
* standard Cursor, Codex, Claude fallback order.
|
|
@@ -371,6 +373,9 @@ export class DBXToolsRelease extends Component {
|
|
|
371
373
|
...(options.pythonRoot
|
|
372
374
|
? [`--python-root ${JSON.stringify(options.pythonRoot)}`]
|
|
373
375
|
: []),
|
|
376
|
+
...(options.validationTasks ?? []).map(
|
|
377
|
+
(task) => `--validate-task ${JSON.stringify(task)}`,
|
|
378
|
+
),
|
|
374
379
|
...summaryArgs,
|
|
375
380
|
].join(" "),
|
|
376
381
|
),
|
package/tasks/release-pr.ts
CHANGED
|
@@ -163,6 +163,12 @@ program
|
|
|
163
163
|
.option("--local-registry <value>", "local npm registry: auto, false, or an explicit URL", "auto")
|
|
164
164
|
.option("--local-pypi <value>", "local PyPI index: auto, false, or an explicit URL", "auto")
|
|
165
165
|
.option("--python-root <path>", "Python workspace package root")
|
|
166
|
+
.option(
|
|
167
|
+
"--validate-task <task>",
|
|
168
|
+
"repository task to run before release validation; repeatable",
|
|
169
|
+
(task: string, tasks: string[]) => [...tasks, task],
|
|
170
|
+
[],
|
|
171
|
+
)
|
|
166
172
|
.option("--no-release-summary", "skip optional AI release summary generation")
|
|
167
173
|
.option(
|
|
168
174
|
"--release-summary-providers <providers>",
|
|
@@ -181,6 +187,7 @@ program
|
|
|
181
187
|
localRegistry: string;
|
|
182
188
|
localPypi: string;
|
|
183
189
|
pythonRoot?: string;
|
|
190
|
+
validateTask: string[];
|
|
184
191
|
releaseSummary: boolean;
|
|
185
192
|
releaseSummaryProviders?: string;
|
|
186
193
|
localCargo: boolean;
|
|
@@ -270,6 +277,9 @@ program
|
|
|
270
277
|
runIgnoringStdout(releaseRoot, "cargo", ["metadata", "--format-version", "1"]);
|
|
271
278
|
}
|
|
272
279
|
run(releaseRoot, process.execPath, [versionCheckScript]);
|
|
280
|
+
for (const task of opts.validateTask) {
|
|
281
|
+
run(releaseRoot, process.execPath, ["run", task]);
|
|
282
|
+
}
|
|
273
283
|
if (existsSync(join(releaseRoot, "Cargo.toml"))) {
|
|
274
284
|
run(releaseRoot, "cargo", [
|
|
275
285
|
"test",
|
package/tasks/release-summary.ts
CHANGED
|
@@ -215,7 +215,35 @@ function summaryPrompt(
|
|
|
215
215
|
].join("\n");
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
-
/**
|
|
218
|
+
/** Deterministic fallback when every configured AI provider is unavailable. */
|
|
219
|
+
function gitSummary(version: string, commits: string, changedFiles: string): string {
|
|
220
|
+
const subjects = commits
|
|
221
|
+
.split("\n")
|
|
222
|
+
.map((line) => line.trim())
|
|
223
|
+
.filter(Boolean)
|
|
224
|
+
.filter((line, index, lines) => lines.indexOf(line) === index)
|
|
225
|
+
.slice(0, 20);
|
|
226
|
+
const files = changedFiles
|
|
227
|
+
.split("\n")
|
|
228
|
+
.map((line) => line.trim().split(/\s+/).at(-1))
|
|
229
|
+
.filter((value): value is string => Boolean(value));
|
|
230
|
+
const areas = files
|
|
231
|
+
.map((file) => {
|
|
232
|
+
if (file.startsWith("packages/")) return file.split("/").slice(0, 4).join("/");
|
|
233
|
+
return file.split("/")[0] ?? file;
|
|
234
|
+
})
|
|
235
|
+
.filter((area, index, all) => all.indexOf(area) === index)
|
|
236
|
+
.slice(0, 12);
|
|
237
|
+
const bullets = subjects.length ? subjects : areas.map((area) => `Updated ${area}`);
|
|
238
|
+
return [
|
|
239
|
+
`dbx-tools ${version} contains the reviewed changes listed below.`,
|
|
240
|
+
"",
|
|
241
|
+
"## Changes",
|
|
242
|
+
...(bullets.length ? bullets.map((item) => `- ${item}`) : ["- Release metadata updated."]),
|
|
243
|
+
].join("\n");
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/** Generate one immutable versioned summary with an AI or Git fallback. */
|
|
219
247
|
export async function generateReleaseSummary(options: {
|
|
220
248
|
readonly root: string;
|
|
221
249
|
readonly version: string;
|
|
@@ -258,13 +286,12 @@ export async function generateReleaseSummary(options: {
|
|
|
258
286
|
options.runner,
|
|
259
287
|
options.providers,
|
|
260
288
|
);
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
}
|
|
265
|
-
const content = `# Release ${options.version}\n\n${result.summary.trim()}\n`;
|
|
289
|
+
const summary = result?.summary ?? gitSummary(options.version, commits, changedFiles);
|
|
290
|
+
const provider = result?.provider ?? "git";
|
|
291
|
+
if (!result) logger.info("AI providers unavailable; using Git release summary");
|
|
292
|
+
const content = `# Release ${options.version}\n\n${summary.trim()}\n`;
|
|
266
293
|
mkdirSync(dirname(output), { recursive: true });
|
|
267
294
|
writeFileSync(output, content);
|
|
268
|
-
logger.info("generated", { provider
|
|
295
|
+
logger.info("generated", { provider, path: output });
|
|
269
296
|
return content;
|
|
270
297
|
}
|