@bradygaster/squad-sdk 0.7.0 → 0.8.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.
- package/README.md +296 -296
- package/dist/adapter/client.d.ts +243 -0
- package/dist/adapter/client.d.ts.map +1 -0
- package/dist/adapter/client.js +567 -0
- package/dist/adapter/client.js.map +1 -0
- package/dist/adapter/errors.d.ts +260 -0
- package/dist/adapter/errors.d.ts.map +1 -0
- package/dist/adapter/errors.js +362 -0
- package/dist/adapter/errors.js.map +1 -0
- package/dist/adapter/types.d.ts +779 -0
- package/dist/adapter/types.d.ts.map +1 -0
- package/dist/adapter/types.js +11 -0
- package/dist/adapter/types.js.map +1 -0
- package/dist/agents/charter-compiler.d.ts +102 -0
- package/dist/agents/charter-compiler.d.ts.map +1 -0
- package/dist/agents/charter-compiler.js +157 -0
- package/dist/agents/charter-compiler.js.map +1 -0
- package/dist/agents/history-shadow.d.ts +80 -0
- package/dist/agents/history-shadow.d.ts.map +1 -0
- package/dist/agents/history-shadow.js +239 -0
- package/dist/agents/history-shadow.js.map +1 -0
- package/dist/agents/index.d.ts +71 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +183 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/lifecycle.d.ts +138 -0
- package/dist/agents/lifecycle.d.ts.map +1 -0
- package/dist/agents/lifecycle.js +284 -0
- package/dist/agents/lifecycle.js.map +1 -0
- package/dist/agents/model-selector.d.ts +80 -0
- package/dist/agents/model-selector.d.ts.map +1 -0
- package/dist/agents/model-selector.js +171 -0
- package/dist/agents/model-selector.js.map +1 -0
- package/dist/agents/onboarding.d.ts +65 -0
- package/dist/agents/onboarding.d.ts.map +1 -0
- package/dist/agents/onboarding.js +373 -0
- package/dist/agents/onboarding.js.map +1 -0
- package/dist/build/bundle.d.ts +32 -0
- package/dist/build/bundle.d.ts.map +1 -0
- package/dist/build/bundle.js +97 -0
- package/dist/build/bundle.js.map +1 -0
- package/dist/build/ci-pipeline.d.ts +51 -0
- package/dist/build/ci-pipeline.d.ts.map +1 -0
- package/dist/build/ci-pipeline.js +180 -0
- package/dist/build/ci-pipeline.js.map +1 -0
- package/dist/build/github-dist.d.ts +37 -0
- package/dist/build/github-dist.d.ts.map +1 -0
- package/dist/build/github-dist.js +117 -0
- package/dist/build/github-dist.js.map +1 -0
- package/dist/build/index.d.ts +11 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +11 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/install-migration.d.ts +28 -0
- package/dist/build/install-migration.d.ts.map +1 -0
- package/dist/build/install-migration.js +103 -0
- package/dist/build/install-migration.js.map +1 -0
- package/dist/build/npm-package.d.ts +54 -0
- package/dist/build/npm-package.d.ts.map +1 -0
- package/dist/build/npm-package.js +128 -0
- package/dist/build/npm-package.js.map +1 -0
- package/dist/build/release.d.ts +108 -0
- package/dist/build/release.d.ts.map +1 -0
- package/dist/build/release.js +295 -0
- package/dist/build/release.js.map +1 -0
- package/dist/build/versioning.d.ts +38 -0
- package/dist/build/versioning.d.ts.map +1 -0
- package/dist/build/versioning.js +113 -0
- package/dist/build/versioning.js.map +1 -0
- package/dist/casting/casting-engine.d.ts +60 -0
- package/dist/casting/casting-engine.d.ts.map +1 -0
- package/dist/casting/casting-engine.js +223 -0
- package/dist/casting/casting-engine.js.map +1 -0
- package/dist/casting/casting-history.d.ts +54 -0
- package/dist/casting/casting-history.d.ts.map +1 -0
- package/dist/casting/casting-history.js +63 -0
- package/dist/casting/casting-history.js.map +1 -0
- package/dist/casting/index.d.ts +46 -0
- package/dist/casting/index.d.ts.map +1 -0
- package/dist/casting/index.js +45 -0
- package/dist/casting/index.js.map +1 -0
- package/dist/client/event-bus.d.ts +29 -0
- package/dist/client/event-bus.d.ts.map +1 -0
- package/dist/client/event-bus.js +52 -0
- package/dist/client/event-bus.js.map +1 -0
- package/dist/client/index.d.ts +100 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +170 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/session-pool.d.ts +66 -0
- package/dist/client/session-pool.d.ts.map +1 -0
- package/dist/client/session-pool.js +145 -0
- package/dist/client/session-pool.js.map +1 -0
- package/dist/config/agent-doc.d.ts +43 -0
- package/dist/config/agent-doc.d.ts.map +1 -0
- package/dist/config/agent-doc.js +158 -0
- package/dist/config/agent-doc.js.map +1 -0
- package/dist/config/agent-source.d.ts +95 -0
- package/dist/config/agent-source.d.ts.map +1 -0
- package/dist/config/agent-source.js +274 -0
- package/dist/config/agent-source.js.map +1 -0
- package/dist/config/doc-sync.d.ts +66 -0
- package/dist/config/doc-sync.d.ts.map +1 -0
- package/dist/config/doc-sync.js +270 -0
- package/dist/config/doc-sync.js.map +1 -0
- package/dist/config/feature-audit.d.ts +49 -0
- package/dist/config/feature-audit.d.ts.map +1 -0
- package/dist/config/feature-audit.js +148 -0
- package/dist/config/feature-audit.js.map +1 -0
- package/dist/config/index.d.ts +15 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +15 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/init.d.ts +61 -0
- package/dist/config/init.d.ts.map +1 -0
- package/dist/config/init.js +376 -0
- package/dist/config/init.js.map +1 -0
- package/dist/config/legacy-fallback.d.ts +83 -0
- package/dist/config/legacy-fallback.d.ts.map +1 -0
- package/dist/config/legacy-fallback.js +212 -0
- package/dist/config/legacy-fallback.js.map +1 -0
- package/dist/config/markdown-migration.d.ts +157 -0
- package/dist/config/markdown-migration.d.ts.map +1 -0
- package/dist/config/markdown-migration.js +434 -0
- package/dist/config/markdown-migration.js.map +1 -0
- package/dist/config/migration.d.ts +123 -0
- package/dist/config/migration.d.ts.map +1 -0
- package/dist/config/migration.js +273 -0
- package/dist/config/migration.js.map +1 -0
- package/dist/config/migrations/index.d.ts +36 -0
- package/dist/config/migrations/index.d.ts.map +1 -0
- package/dist/config/migrations/index.js +216 -0
- package/dist/config/migrations/index.js.map +1 -0
- package/dist/config/models.d.ts +134 -0
- package/dist/config/models.d.ts.map +1 -0
- package/dist/config/models.js +354 -0
- package/dist/config/models.js.map +1 -0
- package/dist/config/routing.d.ts +118 -0
- package/dist/config/routing.d.ts.map +1 -0
- package/dist/config/routing.js +247 -0
- package/dist/config/routing.js.map +1 -0
- package/dist/config/schema.d.ts +72 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +63 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/coordinator/coordinator.d.ts +82 -0
- package/dist/coordinator/coordinator.d.ts.map +1 -0
- package/dist/coordinator/coordinator.js +192 -0
- package/dist/coordinator/coordinator.js.map +1 -0
- package/dist/coordinator/direct-response.d.ts +83 -0
- package/dist/coordinator/direct-response.d.ts.map +1 -0
- package/dist/coordinator/direct-response.js +187 -0
- package/dist/coordinator/direct-response.js.map +1 -0
- package/dist/coordinator/fan-out.d.ts +83 -0
- package/dist/coordinator/fan-out.d.ts.map +1 -0
- package/dist/coordinator/fan-out.js +161 -0
- package/dist/coordinator/fan-out.js.map +1 -0
- package/dist/coordinator/index.d.ts +62 -0
- package/dist/coordinator/index.d.ts.map +1 -0
- package/dist/coordinator/index.js +171 -0
- package/dist/coordinator/index.js.map +1 -0
- package/dist/coordinator/response-tiers.d.ts +49 -0
- package/dist/coordinator/response-tiers.d.ts.map +1 -0
- package/dist/coordinator/response-tiers.js +149 -0
- package/dist/coordinator/response-tiers.js.map +1 -0
- package/dist/hooks/index.d.ts +103 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +279 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.d.ts +33 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -3
- package/dist/index.js.map +1 -1
- package/dist/marketplace/backend.d.ts +35 -0
- package/dist/marketplace/backend.d.ts.map +1 -0
- package/dist/marketplace/backend.js +99 -0
- package/dist/marketplace/backend.js.map +1 -0
- package/dist/marketplace/browser.d.ts +33 -0
- package/dist/marketplace/browser.d.ts.map +1 -0
- package/dist/marketplace/browser.js +97 -0
- package/dist/marketplace/browser.js.map +1 -0
- package/dist/marketplace/extension-adapter.d.ts +51 -0
- package/dist/marketplace/extension-adapter.d.ts.map +1 -0
- package/dist/marketplace/extension-adapter.js +81 -0
- package/dist/marketplace/extension-adapter.js.map +1 -0
- package/dist/marketplace/index.d.ts +51 -0
- package/dist/marketplace/index.d.ts.map +1 -0
- package/dist/marketplace/index.js +108 -0
- package/dist/marketplace/index.js.map +1 -0
- package/dist/marketplace/packaging.d.ts +25 -0
- package/dist/marketplace/packaging.d.ts.map +1 -0
- package/dist/marketplace/packaging.js +117 -0
- package/dist/marketplace/packaging.js.map +1 -0
- package/dist/marketplace/schema.d.ts +50 -0
- package/dist/marketplace/schema.d.ts.map +1 -0
- package/dist/marketplace/schema.js +120 -0
- package/dist/marketplace/schema.js.map +1 -0
- package/dist/marketplace/security.d.ts +26 -0
- package/dist/marketplace/security.d.ts.map +1 -0
- package/dist/marketplace/security.js +199 -0
- package/dist/marketplace/security.js.map +1 -0
- package/dist/parsers.d.ts +15 -0
- package/dist/parsers.d.ts.map +1 -0
- package/dist/parsers.js +15 -0
- package/dist/parsers.js.map +1 -0
- package/dist/ralph/index.d.ts +58 -0
- package/dist/ralph/index.d.ts.map +1 -0
- package/dist/ralph/index.js +128 -0
- package/dist/ralph/index.js.map +1 -0
- package/dist/resolution.d.ts +47 -0
- package/dist/resolution.d.ts.map +1 -0
- package/dist/resolution.js +106 -0
- package/dist/resolution.js.map +1 -0
- package/dist/runtime/benchmarks.d.ts +121 -0
- package/dist/runtime/benchmarks.d.ts.map +1 -0
- package/dist/runtime/benchmarks.js +251 -0
- package/dist/runtime/benchmarks.js.map +1 -0
- package/dist/runtime/config.d.ts +314 -0
- package/dist/runtime/config.d.ts.map +1 -0
- package/dist/runtime/config.js +467 -0
- package/dist/runtime/config.js.map +1 -0
- package/dist/runtime/constants.d.ts +35 -0
- package/dist/runtime/constants.d.ts.map +1 -0
- package/dist/runtime/constants.js +58 -0
- package/dist/runtime/constants.js.map +1 -0
- package/dist/runtime/cost-tracker.d.ts +73 -0
- package/dist/runtime/cost-tracker.d.ts.map +1 -0
- package/dist/runtime/cost-tracker.js +157 -0
- package/dist/runtime/cost-tracker.js.map +1 -0
- package/dist/runtime/event-bus-otel-bridge.d.ts +19 -0
- package/dist/runtime/event-bus-otel-bridge.d.ts.map +1 -0
- package/dist/runtime/event-bus-otel-bridge.js +61 -0
- package/dist/runtime/event-bus-otel-bridge.js.map +1 -0
- package/dist/runtime/event-bus-ws-bridge.d.ts +35 -0
- package/dist/runtime/event-bus-ws-bridge.d.ts.map +1 -0
- package/dist/runtime/event-bus-ws-bridge.js +55 -0
- package/dist/runtime/event-bus-ws-bridge.js.map +1 -0
- package/dist/runtime/event-bus.d.ts +190 -0
- package/dist/runtime/event-bus.d.ts.map +1 -0
- package/dist/runtime/event-bus.js +218 -0
- package/dist/runtime/event-bus.js.map +1 -0
- package/dist/runtime/event-payloads.d.ts +108 -0
- package/dist/runtime/event-payloads.d.ts.map +1 -0
- package/dist/runtime/event-payloads.js +28 -0
- package/dist/runtime/event-payloads.js.map +1 -0
- package/dist/runtime/health.d.ts +66 -0
- package/dist/runtime/health.d.ts.map +1 -0
- package/dist/runtime/health.js +112 -0
- package/dist/runtime/health.js.map +1 -0
- package/dist/runtime/i18n.d.ts +54 -0
- package/dist/runtime/i18n.d.ts.map +1 -0
- package/dist/runtime/i18n.js +126 -0
- package/dist/runtime/i18n.js.map +1 -0
- package/dist/runtime/offline.d.ts +64 -0
- package/dist/runtime/offline.d.ts.map +1 -0
- package/dist/runtime/offline.js +108 -0
- package/dist/runtime/offline.js.map +1 -0
- package/dist/runtime/otel-bridge.d.ts +52 -0
- package/dist/runtime/otel-bridge.d.ts.map +1 -0
- package/dist/runtime/otel-bridge.js +132 -0
- package/dist/runtime/otel-bridge.js.map +1 -0
- package/dist/runtime/otel-init.d.ts +72 -0
- package/dist/runtime/otel-init.d.ts.map +1 -0
- package/dist/runtime/otel-init.js +68 -0
- package/dist/runtime/otel-init.js.map +1 -0
- package/dist/runtime/otel-metrics.d.ts +42 -0
- package/dist/runtime/otel-metrics.d.ts.map +1 -0
- package/dist/runtime/otel-metrics.js +196 -0
- package/dist/runtime/otel-metrics.js.map +1 -0
- package/dist/runtime/otel.d.ts +53 -0
- package/dist/runtime/otel.d.ts.map +1 -0
- package/dist/runtime/otel.js +127 -0
- package/dist/runtime/otel.js.map +1 -0
- package/dist/runtime/squad-observer.d.ts +75 -0
- package/dist/runtime/squad-observer.d.ts.map +1 -0
- package/dist/runtime/squad-observer.js +190 -0
- package/dist/runtime/squad-observer.js.map +1 -0
- package/dist/runtime/streaming.d.ts +106 -0
- package/dist/runtime/streaming.d.ts.map +1 -0
- package/dist/runtime/streaming.js +192 -0
- package/dist/runtime/streaming.js.map +1 -0
- package/dist/runtime/telemetry.d.ts +82 -0
- package/dist/runtime/telemetry.d.ts.map +1 -0
- package/dist/runtime/telemetry.js +120 -0
- package/dist/runtime/telemetry.js.map +1 -0
- package/dist/sharing/agent-repo.d.ts +33 -0
- package/dist/sharing/agent-repo.d.ts.map +1 -0
- package/dist/sharing/agent-repo.js +79 -0
- package/dist/sharing/agent-repo.js.map +1 -0
- package/dist/sharing/cache.d.ts +36 -0
- package/dist/sharing/cache.d.ts.map +1 -0
- package/dist/sharing/cache.js +85 -0
- package/dist/sharing/cache.js.map +1 -0
- package/dist/sharing/conflicts.d.ts +32 -0
- package/dist/sharing/conflicts.d.ts.map +1 -0
- package/dist/sharing/conflicts.js +121 -0
- package/dist/sharing/conflicts.js.map +1 -0
- package/dist/sharing/export.d.ts +50 -0
- package/dist/sharing/export.d.ts.map +1 -0
- package/dist/sharing/export.js +156 -0
- package/dist/sharing/export.js.map +1 -0
- package/dist/sharing/history-split.d.ts +34 -0
- package/dist/sharing/history-split.d.ts.map +1 -0
- package/dist/sharing/history-split.js +101 -0
- package/dist/sharing/history-split.js.map +1 -0
- package/dist/sharing/import.d.ts +37 -0
- package/dist/sharing/import.d.ts.map +1 -0
- package/dist/sharing/import.js +138 -0
- package/dist/sharing/import.js.map +1 -0
- package/dist/sharing/index.d.ts +11 -0
- package/dist/sharing/index.d.ts.map +1 -0
- package/dist/sharing/index.js +11 -0
- package/dist/sharing/index.js.map +1 -0
- package/dist/sharing/versioning.d.ts +32 -0
- package/dist/sharing/versioning.d.ts.map +1 -0
- package/dist/sharing/versioning.js +64 -0
- package/dist/sharing/versioning.js.map +1 -0
- package/dist/skills/index.d.ts +49 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +85 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/skill-loader.d.ts +56 -0
- package/dist/skills/skill-loader.d.ts.map +1 -0
- package/dist/skills/skill-loader.js +106 -0
- package/dist/skills/skill-loader.js.map +1 -0
- package/dist/skills/skill-source.d.ts +63 -0
- package/dist/skills/skill-source.d.ts.map +1 -0
- package/dist/skills/skill-source.js +199 -0
- package/dist/skills/skill-source.js.map +1 -0
- package/dist/tools/index.d.ts +95 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +475 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types.d.ts +43 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/upstream/index.d.ts +8 -0
- package/dist/upstream/index.d.ts.map +1 -0
- package/dist/upstream/index.js +7 -0
- package/dist/upstream/index.js.map +1 -0
- package/dist/upstream/resolver.d.ts +37 -0
- package/dist/upstream/resolver.d.ts.map +1 -0
- package/dist/upstream/resolver.js +234 -0
- package/dist/upstream/resolver.js.map +1 -0
- package/dist/upstream/types.d.ts +55 -0
- package/dist/upstream/types.d.ts.map +1 -0
- package/dist/upstream/types.js +11 -0
- package/dist/upstream/types.js.map +1 -0
- package/dist/utils/normalize-eol.d.ts +6 -0
- package/dist/utils/normalize-eol.d.ts.map +1 -0
- package/dist/utils/normalize-eol.js +8 -0
- package/dist/utils/normalize-eol.js.map +1 -0
- package/package.json +197 -63
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M4-2: npm bundling & registry publication
|
|
3
|
+
* Generates package.json content and validates npm publication readiness.
|
|
4
|
+
*/
|
|
5
|
+
const DEFAULT_FILES = [
|
|
6
|
+
'dist/',
|
|
7
|
+
'README.md',
|
|
8
|
+
'LICENSE',
|
|
9
|
+
'CHANGELOG.md',
|
|
10
|
+
];
|
|
11
|
+
const DEFAULT_EXPORTS = {
|
|
12
|
+
'.': {
|
|
13
|
+
import: './dist/index.js',
|
|
14
|
+
types: './dist/index.d.ts',
|
|
15
|
+
},
|
|
16
|
+
'./config': {
|
|
17
|
+
import: './dist/config/index.js',
|
|
18
|
+
types: './dist/config/index.d.ts',
|
|
19
|
+
},
|
|
20
|
+
'./agents': {
|
|
21
|
+
import: './dist/agents/onboarding.js',
|
|
22
|
+
types: './dist/agents/onboarding.d.ts',
|
|
23
|
+
},
|
|
24
|
+
'./skills': {
|
|
25
|
+
import: './dist/skills/index.js',
|
|
26
|
+
types: './dist/skills/index.d.ts',
|
|
27
|
+
},
|
|
28
|
+
'./runtime': {
|
|
29
|
+
import: './dist/runtime/config.js',
|
|
30
|
+
types: './dist/runtime/config.d.ts',
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Generate package.json content suitable for npm publication.
|
|
35
|
+
*/
|
|
36
|
+
export function generatePackageJson(config) {
|
|
37
|
+
const exports = {};
|
|
38
|
+
for (const [key, value] of Object.entries(config.exports)) {
|
|
39
|
+
if (typeof value === 'string') {
|
|
40
|
+
exports[key] = { import: value, types: value.replace(/\.js$/, '.d.ts') };
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
exports[key] = { ...value };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
name: config.name,
|
|
48
|
+
version: config.version,
|
|
49
|
+
description: config.description,
|
|
50
|
+
type: 'module',
|
|
51
|
+
main: './dist/index.js',
|
|
52
|
+
types: './dist/index.d.ts',
|
|
53
|
+
exports,
|
|
54
|
+
...(config.bin && Object.keys(config.bin).length > 0 ? { bin: { ...config.bin } } : {}),
|
|
55
|
+
files: [...DEFAULT_FILES],
|
|
56
|
+
...(config.peerDependencies && Object.keys(config.peerDependencies).length > 0
|
|
57
|
+
? { peerDependencies: { ...config.peerDependencies } }
|
|
58
|
+
: {}),
|
|
59
|
+
engines: config.engines ? { ...config.engines } : { node: '>=20.0.0' },
|
|
60
|
+
license: 'MIT',
|
|
61
|
+
repository: { type: 'git', url: 'https://github.com/bradygaster/squad.git' },
|
|
62
|
+
keywords: ['copilot', 'multi-agent', 'squad', 'sdk'],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Validate a package.json object for npm publication readiness.
|
|
67
|
+
*/
|
|
68
|
+
export function validatePackageJson(pkg) {
|
|
69
|
+
const errors = [];
|
|
70
|
+
const warnings = [];
|
|
71
|
+
if (!pkg.name || typeof pkg.name !== 'string') {
|
|
72
|
+
errors.push('Missing or invalid "name" field');
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
if (!/^(@[a-z0-9-]+\/)?[a-z0-9._-]+$/.test(pkg.name)) {
|
|
76
|
+
errors.push(`Invalid package name: ${pkg.name}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (!pkg.version || typeof pkg.version !== 'string') {
|
|
80
|
+
errors.push('Missing or invalid "version" field');
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
if (!/^\d+\.\d+\.\d+/.test(pkg.version)) {
|
|
84
|
+
errors.push(`Invalid semver version: ${pkg.version}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (!pkg.description || typeof pkg.description !== 'string') {
|
|
88
|
+
warnings.push('Missing "description" field');
|
|
89
|
+
}
|
|
90
|
+
if (!pkg.license || typeof pkg.license !== 'string') {
|
|
91
|
+
warnings.push('Missing "license" field');
|
|
92
|
+
}
|
|
93
|
+
if (!pkg.exports || typeof pkg.exports !== 'object') {
|
|
94
|
+
errors.push('Missing "exports" map — required for ESM packages');
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
const exports = pkg.exports;
|
|
98
|
+
if (!exports['.']) {
|
|
99
|
+
errors.push('Exports map missing "." entry point');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (pkg.type !== 'module') {
|
|
103
|
+
warnings.push('"type" should be "module" for ESM packages');
|
|
104
|
+
}
|
|
105
|
+
if (!pkg.files || !Array.isArray(pkg.files) || pkg.files.length === 0) {
|
|
106
|
+
warnings.push('Missing "files" field — all files will be published');
|
|
107
|
+
}
|
|
108
|
+
if (!pkg.engines || typeof pkg.engines !== 'object') {
|
|
109
|
+
warnings.push('Missing "engines" field — specify Node.js version requirement');
|
|
110
|
+
}
|
|
111
|
+
if (!pkg.repository || typeof pkg.repository !== 'object') {
|
|
112
|
+
warnings.push('Missing "repository" field');
|
|
113
|
+
}
|
|
114
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Return the files array for package.json publication.
|
|
118
|
+
*/
|
|
119
|
+
export function getPublishFiles() {
|
|
120
|
+
return [...DEFAULT_FILES];
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Return the default ESM exports map for the SDK.
|
|
124
|
+
*/
|
|
125
|
+
export function getDefaultExports() {
|
|
126
|
+
return JSON.parse(JSON.stringify(DEFAULT_EXPORTS));
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=npm-package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-package.js","sourceRoot":"","sources":["../../src/build/npm-package.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M6-13: Release candidate build & validation
|
|
3
|
+
* Handles release manifest creation, validation, and release notes generation.
|
|
4
|
+
*
|
|
5
|
+
* @module build/release
|
|
6
|
+
*/
|
|
7
|
+
import type { CommitInfo } from './versioning.js';
|
|
8
|
+
/** Release channel. */
|
|
9
|
+
export type ReleaseChannel = 'stable' | 'rc' | 'beta' | 'alpha';
|
|
10
|
+
/**
|
|
11
|
+
* Configuration for creating a release.
|
|
12
|
+
*/
|
|
13
|
+
export interface ReleaseConfig {
|
|
14
|
+
/** Semver version string (e.g. "1.0.0", "1.0.0-rc.1") */
|
|
15
|
+
version: string;
|
|
16
|
+
/** Release channel */
|
|
17
|
+
channel: ReleaseChannel;
|
|
18
|
+
/** Whether this is a prerelease */
|
|
19
|
+
prerelease: boolean;
|
|
20
|
+
/** Git tag name (e.g. "v1.0.0-rc.1") */
|
|
21
|
+
tag: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* An artifact included in a release.
|
|
25
|
+
*/
|
|
26
|
+
export interface ReleaseArtifact {
|
|
27
|
+
/** Display name */
|
|
28
|
+
name: string;
|
|
29
|
+
/** File path */
|
|
30
|
+
path: string;
|
|
31
|
+
/** File size in bytes */
|
|
32
|
+
size: number;
|
|
33
|
+
/** SHA-256 hash */
|
|
34
|
+
sha256: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Release manifest describing a complete release.
|
|
38
|
+
*/
|
|
39
|
+
export interface ReleaseManifest {
|
|
40
|
+
/** Semver version */
|
|
41
|
+
version: string;
|
|
42
|
+
/** Release channel */
|
|
43
|
+
channel: ReleaseChannel;
|
|
44
|
+
/** Build artifacts */
|
|
45
|
+
artifacts: ReleaseArtifact[];
|
|
46
|
+
/** ISO timestamp of the release */
|
|
47
|
+
timestamp: string;
|
|
48
|
+
/** Changelog markdown for this release */
|
|
49
|
+
changelog: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A validation error found in a release manifest.
|
|
53
|
+
*/
|
|
54
|
+
export interface ReleaseValidationError {
|
|
55
|
+
/** Field that failed validation */
|
|
56
|
+
field: string;
|
|
57
|
+
/** Error message */
|
|
58
|
+
message: string;
|
|
59
|
+
/** Severity */
|
|
60
|
+
severity: 'error' | 'warning';
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* A checklist item for the release process.
|
|
64
|
+
*/
|
|
65
|
+
export interface ReleaseChecklistItem {
|
|
66
|
+
/** Human-readable name */
|
|
67
|
+
name: string;
|
|
68
|
+
/** Function that checks this item (returns true if passing) */
|
|
69
|
+
check: () => boolean;
|
|
70
|
+
/** Whether this item is required for release */
|
|
71
|
+
required: boolean;
|
|
72
|
+
/** Current status */
|
|
73
|
+
status: 'pass' | 'fail' | 'skip';
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Compute the SHA-256 hash of a buffer or string.
|
|
77
|
+
*/
|
|
78
|
+
export declare function computeSha256(data: Buffer | string): string;
|
|
79
|
+
/**
|
|
80
|
+
* Build a ReleaseArtifact from a file path.
|
|
81
|
+
* Returns null if the file does not exist.
|
|
82
|
+
*/
|
|
83
|
+
export declare function buildArtifact(name: string, filePath: string): ReleaseArtifact | null;
|
|
84
|
+
/**
|
|
85
|
+
* Create a release manifest from a ReleaseConfig.
|
|
86
|
+
*
|
|
87
|
+
* @param config - Release configuration
|
|
88
|
+
* @param artifactPaths - Optional map of artifact name → file path
|
|
89
|
+
* @returns Release manifest
|
|
90
|
+
*/
|
|
91
|
+
export declare function createRelease(config: ReleaseConfig, artifactPaths?: Record<string, string>): ReleaseManifest;
|
|
92
|
+
/**
|
|
93
|
+
* Validate a release manifest for correctness.
|
|
94
|
+
*
|
|
95
|
+
* @param manifest - Release manifest to validate
|
|
96
|
+
* @returns Array of validation errors (empty if valid)
|
|
97
|
+
*/
|
|
98
|
+
export declare function validateRelease(manifest: ReleaseManifest): ReleaseValidationError[];
|
|
99
|
+
/**
|
|
100
|
+
* Generate release notes markdown from a manifest and commit list.
|
|
101
|
+
*/
|
|
102
|
+
export declare function generateReleaseNotes(manifest: ReleaseManifest, commits: CommitInfo[]): string;
|
|
103
|
+
/**
|
|
104
|
+
* Get the release checklist with default items.
|
|
105
|
+
* Each item's check function can be evaluated to determine pass/fail.
|
|
106
|
+
*/
|
|
107
|
+
export declare function getReleaseChecklist(manifest?: ReleaseManifest): ReleaseChecklistItem[];
|
|
108
|
+
//# sourceMappingURL=release.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../src/build/release.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAOlD,uBAAuB;AACvB,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,mCAAmC;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,sBAAsB;IACtB,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,KAAK,EAAE,MAAM,OAAO,CAAC;IACrB,gDAAgD;IAChD,QAAQ,EAAE,OAAO,CAAC;IAClB,qBAAqB;IACrB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAClC;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAYpF;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,eAAe,CAmBjB;AAQD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,eAAe,GAAG,sBAAsB,EAAE,CA2EnF;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,UAAU,EAAE,GACpB,MAAM,CAqER;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,oBAAoB,EAAE,CAyEtF"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M6-13: Release candidate build & validation
|
|
3
|
+
* Handles release manifest creation, validation, and release notes generation.
|
|
4
|
+
*
|
|
5
|
+
* @module build/release
|
|
6
|
+
*/
|
|
7
|
+
import { createHash } from 'node:crypto';
|
|
8
|
+
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
9
|
+
import { parseConventionalCommit } from './versioning.js';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Release creation
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Compute the SHA-256 hash of a buffer or string.
|
|
15
|
+
*/
|
|
16
|
+
export function computeSha256(data) {
|
|
17
|
+
return createHash('sha256').update(data).digest('hex');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Build a ReleaseArtifact from a file path.
|
|
21
|
+
* Returns null if the file does not exist.
|
|
22
|
+
*/
|
|
23
|
+
export function buildArtifact(name, filePath) {
|
|
24
|
+
if (!existsSync(filePath))
|
|
25
|
+
return null;
|
|
26
|
+
const content = readFileSync(filePath);
|
|
27
|
+
const stat = statSync(filePath);
|
|
28
|
+
return {
|
|
29
|
+
name,
|
|
30
|
+
path: filePath,
|
|
31
|
+
size: stat.size,
|
|
32
|
+
sha256: computeSha256(content),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create a release manifest from a ReleaseConfig.
|
|
37
|
+
*
|
|
38
|
+
* @param config - Release configuration
|
|
39
|
+
* @param artifactPaths - Optional map of artifact name → file path
|
|
40
|
+
* @returns Release manifest
|
|
41
|
+
*/
|
|
42
|
+
export function createRelease(config, artifactPaths) {
|
|
43
|
+
const artifacts = [];
|
|
44
|
+
if (artifactPaths) {
|
|
45
|
+
for (const [name, filePath] of Object.entries(artifactPaths)) {
|
|
46
|
+
const artifact = buildArtifact(name, filePath);
|
|
47
|
+
if (artifact) {
|
|
48
|
+
artifacts.push(artifact);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
version: config.version,
|
|
54
|
+
channel: config.channel,
|
|
55
|
+
artifacts,
|
|
56
|
+
timestamp: new Date().toISOString(),
|
|
57
|
+
changelog: '',
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// ============================================================================
|
|
61
|
+
// Validation
|
|
62
|
+
// ============================================================================
|
|
63
|
+
const SEMVER_RE = /^\d+\.\d+\.\d+(?:-[a-zA-Z0-9]+(?:\.[a-zA-Z0-9]+)*)?$/;
|
|
64
|
+
/**
|
|
65
|
+
* Validate a release manifest for correctness.
|
|
66
|
+
*
|
|
67
|
+
* @param manifest - Release manifest to validate
|
|
68
|
+
* @returns Array of validation errors (empty if valid)
|
|
69
|
+
*/
|
|
70
|
+
export function validateRelease(manifest) {
|
|
71
|
+
const errors = [];
|
|
72
|
+
// Version
|
|
73
|
+
if (!manifest.version) {
|
|
74
|
+
errors.push({ field: 'version', message: 'Version is required', severity: 'error' });
|
|
75
|
+
}
|
|
76
|
+
else if (!SEMVER_RE.test(manifest.version)) {
|
|
77
|
+
errors.push({ field: 'version', message: `Invalid semver version: ${manifest.version}`, severity: 'error' });
|
|
78
|
+
}
|
|
79
|
+
// Channel
|
|
80
|
+
const validChannels = ['stable', 'rc', 'beta', 'alpha'];
|
|
81
|
+
if (!manifest.channel) {
|
|
82
|
+
errors.push({ field: 'channel', message: 'Channel is required', severity: 'error' });
|
|
83
|
+
}
|
|
84
|
+
else if (!validChannels.includes(manifest.channel)) {
|
|
85
|
+
errors.push({ field: 'channel', message: `Invalid channel: ${manifest.channel}`, severity: 'error' });
|
|
86
|
+
}
|
|
87
|
+
// Channel / version consistency
|
|
88
|
+
if (manifest.channel === 'stable' && manifest.version.includes('-')) {
|
|
89
|
+
errors.push({
|
|
90
|
+
field: 'version',
|
|
91
|
+
message: 'Stable releases must not have prerelease suffixes',
|
|
92
|
+
severity: 'error',
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
if (manifest.channel !== 'stable' && !manifest.version.includes('-')) {
|
|
96
|
+
errors.push({
|
|
97
|
+
field: 'version',
|
|
98
|
+
message: `Non-stable channel "${manifest.channel}" should have a prerelease suffix`,
|
|
99
|
+
severity: 'warning',
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
// Timestamp
|
|
103
|
+
if (!manifest.timestamp) {
|
|
104
|
+
errors.push({ field: 'timestamp', message: 'Timestamp is required', severity: 'error' });
|
|
105
|
+
}
|
|
106
|
+
else if (isNaN(Date.parse(manifest.timestamp))) {
|
|
107
|
+
errors.push({ field: 'timestamp', message: 'Timestamp is not a valid ISO date', severity: 'error' });
|
|
108
|
+
}
|
|
109
|
+
// Artifacts
|
|
110
|
+
if (!Array.isArray(manifest.artifacts)) {
|
|
111
|
+
errors.push({ field: 'artifacts', message: 'Artifacts must be an array', severity: 'error' });
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
for (let i = 0; i < manifest.artifacts.length; i++) {
|
|
115
|
+
const a = manifest.artifacts[i];
|
|
116
|
+
if (!a.name) {
|
|
117
|
+
errors.push({ field: `artifacts[${i}].name`, message: 'Artifact name is required', severity: 'error' });
|
|
118
|
+
}
|
|
119
|
+
if (!a.path) {
|
|
120
|
+
errors.push({ field: `artifacts[${i}].path`, message: 'Artifact path is required', severity: 'error' });
|
|
121
|
+
}
|
|
122
|
+
if (typeof a.size !== 'number' || a.size < 0) {
|
|
123
|
+
errors.push({ field: `artifacts[${i}].size`, message: 'Artifact size must be a non-negative number', severity: 'error' });
|
|
124
|
+
}
|
|
125
|
+
if (!a.sha256 || !/^[a-f0-9]{64}$/.test(a.sha256)) {
|
|
126
|
+
errors.push({ field: `artifacts[${i}].sha256`, message: 'Artifact sha256 must be a valid 64-char hex string', severity: 'error' });
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Duplicate names
|
|
130
|
+
const names = manifest.artifacts.map((a) => a.name);
|
|
131
|
+
const dupes = names.filter((n, i) => names.indexOf(n) !== i);
|
|
132
|
+
if (dupes.length > 0) {
|
|
133
|
+
errors.push({ field: 'artifacts', message: `Duplicate artifact names: ${[...new Set(dupes)].join(', ')}`, severity: 'warning' });
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Changelog (warning only)
|
|
137
|
+
if (!manifest.changelog) {
|
|
138
|
+
errors.push({ field: 'changelog', message: 'Changelog is empty', severity: 'warning' });
|
|
139
|
+
}
|
|
140
|
+
return errors;
|
|
141
|
+
}
|
|
142
|
+
// ============================================================================
|
|
143
|
+
// Release notes generation
|
|
144
|
+
// ============================================================================
|
|
145
|
+
/**
|
|
146
|
+
* Generate release notes markdown from a manifest and commit list.
|
|
147
|
+
*/
|
|
148
|
+
export function generateReleaseNotes(manifest, commits) {
|
|
149
|
+
const lines = [];
|
|
150
|
+
const date = manifest.timestamp ? manifest.timestamp.slice(0, 10) : new Date().toISOString().slice(0, 10);
|
|
151
|
+
lines.push(`# ${manifest.version} (${date})`);
|
|
152
|
+
lines.push('');
|
|
153
|
+
if (manifest.channel !== 'stable') {
|
|
154
|
+
lines.push(`> **${manifest.channel.toUpperCase()}** release — not recommended for production use.`);
|
|
155
|
+
lines.push('');
|
|
156
|
+
}
|
|
157
|
+
// Group commits by type
|
|
158
|
+
const groups = {};
|
|
159
|
+
const breaking = [];
|
|
160
|
+
for (const commit of commits) {
|
|
161
|
+
const parsed = parseConventionalCommit(commit.message);
|
|
162
|
+
if (parsed.breaking) {
|
|
163
|
+
breaking.push(`- ${parsed.description} (${commit.sha.slice(0, 7)})`);
|
|
164
|
+
}
|
|
165
|
+
const key = parsed.type;
|
|
166
|
+
if (!groups[key])
|
|
167
|
+
groups[key] = [];
|
|
168
|
+
groups[key].push({ description: parsed.description, sha: commit.sha });
|
|
169
|
+
}
|
|
170
|
+
if (breaking.length > 0) {
|
|
171
|
+
lines.push('## ⚠ Breaking Changes');
|
|
172
|
+
lines.push('');
|
|
173
|
+
lines.push(...breaking);
|
|
174
|
+
lines.push('');
|
|
175
|
+
}
|
|
176
|
+
const headings = {
|
|
177
|
+
feat: '## Features',
|
|
178
|
+
fix: '## Bug Fixes',
|
|
179
|
+
perf: '## Performance',
|
|
180
|
+
refactor: '## Refactoring',
|
|
181
|
+
docs: '## Documentation',
|
|
182
|
+
chore: '## Chores',
|
|
183
|
+
test: '## Tests',
|
|
184
|
+
ci: '## CI',
|
|
185
|
+
};
|
|
186
|
+
for (const [type, heading] of Object.entries(headings)) {
|
|
187
|
+
const items = groups[type];
|
|
188
|
+
if (!items || items.length === 0)
|
|
189
|
+
continue;
|
|
190
|
+
lines.push(heading);
|
|
191
|
+
lines.push('');
|
|
192
|
+
for (const item of items) {
|
|
193
|
+
lines.push(`- ${item.description} (${item.sha.slice(0, 7)})`);
|
|
194
|
+
}
|
|
195
|
+
lines.push('');
|
|
196
|
+
}
|
|
197
|
+
// Artifacts section
|
|
198
|
+
if (manifest.artifacts.length > 0) {
|
|
199
|
+
lines.push('## Artifacts');
|
|
200
|
+
lines.push('');
|
|
201
|
+
lines.push('| Name | Size | SHA-256 |');
|
|
202
|
+
lines.push('|------|------|---------|');
|
|
203
|
+
for (const a of manifest.artifacts) {
|
|
204
|
+
const sizeKb = (a.size / 1024).toFixed(1);
|
|
205
|
+
lines.push(`| ${a.name} | ${sizeKb} KB | \`${a.sha256.slice(0, 12)}…\` |`);
|
|
206
|
+
}
|
|
207
|
+
lines.push('');
|
|
208
|
+
}
|
|
209
|
+
return lines.join('\n').trimEnd() + '\n';
|
|
210
|
+
}
|
|
211
|
+
// ============================================================================
|
|
212
|
+
// Release checklist
|
|
213
|
+
// ============================================================================
|
|
214
|
+
/**
|
|
215
|
+
* Get the release checklist with default items.
|
|
216
|
+
* Each item's check function can be evaluated to determine pass/fail.
|
|
217
|
+
*/
|
|
218
|
+
export function getReleaseChecklist(manifest) {
|
|
219
|
+
const items = [
|
|
220
|
+
{
|
|
221
|
+
name: 'Version is valid semver',
|
|
222
|
+
check: () => manifest ? SEMVER_RE.test(manifest.version) : false,
|
|
223
|
+
required: true,
|
|
224
|
+
status: 'skip',
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
name: 'Channel is set',
|
|
228
|
+
check: () => manifest ? !!manifest.channel : false,
|
|
229
|
+
required: true,
|
|
230
|
+
status: 'skip',
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
name: 'Timestamp is present',
|
|
234
|
+
check: () => manifest ? !!manifest.timestamp && !isNaN(Date.parse(manifest.timestamp)) : false,
|
|
235
|
+
required: true,
|
|
236
|
+
status: 'skip',
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
name: 'At least one artifact',
|
|
240
|
+
check: () => manifest ? manifest.artifacts.length > 0 : false,
|
|
241
|
+
required: false,
|
|
242
|
+
status: 'skip',
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
name: 'Changelog is non-empty',
|
|
246
|
+
check: () => manifest ? !!manifest.changelog : false,
|
|
247
|
+
required: false,
|
|
248
|
+
status: 'skip',
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
name: 'All artifact hashes are valid',
|
|
252
|
+
check: () => {
|
|
253
|
+
if (!manifest)
|
|
254
|
+
return false;
|
|
255
|
+
return manifest.artifacts.every((a) => /^[a-f0-9]{64}$/.test(a.sha256));
|
|
256
|
+
},
|
|
257
|
+
required: true,
|
|
258
|
+
status: 'skip',
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
name: 'No duplicate artifact names',
|
|
262
|
+
check: () => {
|
|
263
|
+
if (!manifest)
|
|
264
|
+
return false;
|
|
265
|
+
const names = manifest.artifacts.map((a) => a.name);
|
|
266
|
+
return new Set(names).size === names.length;
|
|
267
|
+
},
|
|
268
|
+
required: true,
|
|
269
|
+
status: 'skip',
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
name: 'Version matches channel',
|
|
273
|
+
check: () => {
|
|
274
|
+
if (!manifest)
|
|
275
|
+
return false;
|
|
276
|
+
if (manifest.channel === 'stable')
|
|
277
|
+
return !manifest.version.includes('-');
|
|
278
|
+
return manifest.version.includes('-');
|
|
279
|
+
},
|
|
280
|
+
required: false,
|
|
281
|
+
status: 'skip',
|
|
282
|
+
},
|
|
283
|
+
];
|
|
284
|
+
// Evaluate checks
|
|
285
|
+
for (const item of items) {
|
|
286
|
+
try {
|
|
287
|
+
item.status = item.check() ? 'pass' : 'fail';
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
item.status = 'fail';
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return items;
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/build/release.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M4-10: Version stamping & CHANGELOG generation
|
|
3
|
+
* Conventional commits parsing, version bumping, and changelog output.
|
|
4
|
+
*/
|
|
5
|
+
export interface CommitInfo {
|
|
6
|
+
sha: string;
|
|
7
|
+
message: string;
|
|
8
|
+
author: string;
|
|
9
|
+
date: string;
|
|
10
|
+
type: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ConventionalCommit {
|
|
13
|
+
type: string;
|
|
14
|
+
scope: string | null;
|
|
15
|
+
description: string;
|
|
16
|
+
breaking: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Parse a conventional commit message into structured parts.
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseConventionalCommit(message: string): ConventionalCommit;
|
|
22
|
+
/**
|
|
23
|
+
* Bump a semver version string by the given increment type.
|
|
24
|
+
*/
|
|
25
|
+
export declare function bumpVersion(current: string, type: 'major' | 'minor' | 'patch' | 'prerelease'): string;
|
|
26
|
+
/**
|
|
27
|
+
* Stamp a version string into the specified file contents.
|
|
28
|
+
* Returns an array of { file, content } with the version replaced.
|
|
29
|
+
*/
|
|
30
|
+
export declare function stampVersion(version: string, files: string[]): {
|
|
31
|
+
file: string;
|
|
32
|
+
content: string;
|
|
33
|
+
}[];
|
|
34
|
+
/**
|
|
35
|
+
* Generate a CHANGELOG entry from a list of conventional commits.
|
|
36
|
+
*/
|
|
37
|
+
export declare function generateChangelog(commits: CommitInfo[], currentVersion: string): string;
|
|
38
|
+
//# sourceMappingURL=versioning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versioning.d.ts","sourceRoot":"","sources":["../../src/build/versioning.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAkB3E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,MAAM,CA4BrG;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAKlG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAmDvF"}
|