prismatica 0.2.0 → 0.4.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.
- package/README.md +20 -8
- package/dist/assurance/mainpush.js +383 -8
- package/dist/assurance/mainpush.js.map +1 -1
- package/dist/assurance/proofinputs.js +62 -34
- package/dist/assurance/proofinputs.js.map +1 -1
- package/dist/atlas/labels.js +2 -2
- package/dist/atlas/labels.js.map +1 -1
- package/dist/atlas/next.js +120 -18
- package/dist/atlas/next.js.map +1 -1
- package/dist/board/html.js +37 -9
- package/dist/board/html.js.map +1 -1
- package/dist/board/model.js +58 -14
- package/dist/board/model.js.map +1 -1
- package/dist/cli.js +70 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/delta.js +84 -1
- package/dist/commands/delta.js.map +1 -1
- package/dist/commands/doctor.js +55 -11
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/frame.js +13 -1
- package/dist/commands/frame.js.map +1 -1
- package/dist/commands/guide.js +17 -5
- package/dist/commands/guide.js.map +1 -1
- package/dist/commands/next.js +196 -26
- package/dist/commands/next.js.map +1 -1
- package/dist/commands/release.js +950 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/commands/ship.js +150 -15
- package/dist/commands/ship.js.map +1 -1
- package/dist/commands/start.js +5 -2
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/update.js +435 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/detect.js +40 -10
- package/dist/detect.js.map +1 -1
- package/dist/executor.js +15 -0
- package/dist/executor.js.map +1 -1
- package/dist/git.js +27 -0
- package/dist/git.js.map +1 -1
- package/dist/guide.js +254 -33
- package/dist/guide.js.map +1 -1
- package/dist/paths.js +7 -0
- package/dist/paths.js.map +1 -1
- package/dist/planning/pack.js +12 -7
- package/dist/planning/pack.js.map +1 -1
- package/dist/planning/schema.js +17 -1
- package/dist/planning/schema.js.map +1 -1
- package/dist/prepush.js +52 -0
- package/dist/prepush.js.map +1 -1
- package/dist/records/store.js +17 -1
- package/dist/records/store.js.map +1 -1
- package/dist/records/types.js +122 -7
- package/dist/records/types.js.map +1 -1
- package/dist/releases.js +287 -0
- package/dist/releases.js.map +1 -0
- package/dist/render.js +23 -0
- package/dist/render.js.map +1 -1
- package/dist/title.js +69 -0
- package/dist/title.js.map +1 -0
- package/package.json +5 -1
- package/dist/agent-runner.js +0 -656
- package/dist/agent-runner.js.map +0 -1
- package/dist/atlas/packs.js +0 -169
- package/dist/atlas/packs.js.map +0 -1
package/dist/releases.js
ADDED
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure release-lifecycle logic: no filesystem, no network, no git, no npm.
|
|
3
|
+
* Every fact this module needs is handed in already resolved by the caller
|
|
4
|
+
* (`commands/release.ts`, which owns every git/gh/npm call); every answer
|
|
5
|
+
* here is data, never an action. That split is what makes "re-derive state,
|
|
6
|
+
* never a stored step counter" checkable in isolation — the whole release
|
|
7
|
+
* state machine is a pure function of the facts of the moment.
|
|
8
|
+
*/
|
|
9
|
+
const SEMVER_PATTERN = /^(\d+)\.(\d+)\.(\d+)$/;
|
|
10
|
+
export function parseSemver(version) {
|
|
11
|
+
const match = SEMVER_PATTERN.exec(version.trim());
|
|
12
|
+
if (!match) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
return { major: Number(match[1]), minor: Number(match[2]), patch: Number(match[3]) };
|
|
16
|
+
}
|
|
17
|
+
/** -1, 0, 1. Throws on either input not being a plain X.Y.Z semver. */
|
|
18
|
+
export function compareSemver(a, b) {
|
|
19
|
+
const pa = parseSemver(a);
|
|
20
|
+
const pb = parseSemver(b);
|
|
21
|
+
if (!pa || !pb) {
|
|
22
|
+
throw new Error(`not a plain X.Y.Z semver: "${!pa ? a : b}"`);
|
|
23
|
+
}
|
|
24
|
+
if (pa.major !== pb.major)
|
|
25
|
+
return pa.major < pb.major ? -1 : 1;
|
|
26
|
+
if (pa.minor !== pb.minor)
|
|
27
|
+
return pa.minor < pb.minor ? -1 : 1;
|
|
28
|
+
if (pa.patch !== pb.patch)
|
|
29
|
+
return pa.patch < pb.patch ? -1 : 1;
|
|
30
|
+
return 0;
|
|
31
|
+
}
|
|
32
|
+
export function bumpVersion(current, kind) {
|
|
33
|
+
const parsed = parseSemver(current);
|
|
34
|
+
if (!parsed) {
|
|
35
|
+
throw new Error(`current version "${current}" is not a plain X.Y.Z semver`);
|
|
36
|
+
}
|
|
37
|
+
if (kind === 'major') {
|
|
38
|
+
return `${parsed.major + 1}.0.0`;
|
|
39
|
+
}
|
|
40
|
+
if (kind === 'minor') {
|
|
41
|
+
return `${parsed.major}.${parsed.minor + 1}.0`;
|
|
42
|
+
}
|
|
43
|
+
return `${parsed.major}.${parsed.minor}.${parsed.patch + 1}`;
|
|
44
|
+
}
|
|
45
|
+
/** What `release prepare <patch|minor|major>` or `release prepare --version X.Y.Z` targets. */
|
|
46
|
+
export function resolveTargetVersion(current, target) {
|
|
47
|
+
if (target.kind === 'explicit') {
|
|
48
|
+
if (!parseSemver(target.version)) {
|
|
49
|
+
throw new Error(`"${target.version}" is not a plain X.Y.Z semver`);
|
|
50
|
+
}
|
|
51
|
+
return target.version;
|
|
52
|
+
}
|
|
53
|
+
return bumpVersion(current, target.kind);
|
|
54
|
+
}
|
|
55
|
+
// ── The semantic pure-version-bump diff classifier ───────────────────────────
|
|
56
|
+
//
|
|
57
|
+
// "Pure" is a claim about MEANING, not a field count: the parsed JSON must be
|
|
58
|
+
// identical except the exact fields `npm version` touches, and no other
|
|
59
|
+
// non-record file may have changed. Prismatica's own governance records
|
|
60
|
+
// (contract, report, evidence, ledger) legitimately ride the release branch —
|
|
61
|
+
// callers exclude them the same way `git.EXCLUDE_RECORDS` already does before
|
|
62
|
+
// calling this, so `changedNonRecordFiles` never contains a `.prismatica/` path.
|
|
63
|
+
const VERSION_BUMP_FILES = ['package.json', 'package-lock.json'];
|
|
64
|
+
function isPlainObject(value) {
|
|
65
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Deep-equal, except any path that exactly matches one of `except` (each a
|
|
69
|
+
* segment array — `''` is a legal segment, matching `package-lock.json`'s
|
|
70
|
+
* `packages[""]` root entry).
|
|
71
|
+
*/
|
|
72
|
+
function deepEqualExceptPaths(a, b, except, path = []) {
|
|
73
|
+
if (except.some((p) => p.length === path.length && p.every((seg, i) => seg === path[i]))) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
if (a === b) {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
if (Array.isArray(a) || Array.isArray(b)) {
|
|
80
|
+
if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
return a.every((item, i) => deepEqualExceptPaths(item, b[i], except, [...path, String(i)]));
|
|
84
|
+
}
|
|
85
|
+
if (isPlainObject(a) || isPlainObject(b)) {
|
|
86
|
+
if (!isPlainObject(a) || !isPlainObject(b)) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
const keys = new Set([...Object.keys(a), ...Object.keys(b)]);
|
|
90
|
+
for (const key of keys) {
|
|
91
|
+
if (!deepEqualExceptPaths(a[key], b[key], except, [...path, key])) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
function readPath(value, path) {
|
|
100
|
+
let current = value;
|
|
101
|
+
for (const segment of path) {
|
|
102
|
+
if (!isPlainObject(current)) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
current = current[segment];
|
|
106
|
+
}
|
|
107
|
+
return current;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Is this merged commit's NON-RECORD diff semantically the pure version
|
|
111
|
+
* transformation `npm version --no-git-tag-version` performs — never a field
|
|
112
|
+
* count, never "these two files changed and nothing else". Every non-version
|
|
113
|
+
* field in both files must be byte-identical to what it was before.
|
|
114
|
+
*/
|
|
115
|
+
export function classifyVersionBumpDiff(input) {
|
|
116
|
+
const extra = input.changedNonRecordFiles.filter((file) => !VERSION_BUMP_FILES.includes(file));
|
|
117
|
+
if (extra.length > 0) {
|
|
118
|
+
return { pure: false, reason: `non-record file(s) beyond the version bump: ${extra.join(', ')}` };
|
|
119
|
+
}
|
|
120
|
+
if (!input.changedNonRecordFiles.includes('package.json')) {
|
|
121
|
+
return { pure: false, reason: 'package.json did not change' };
|
|
122
|
+
}
|
|
123
|
+
if (!isPlainObject(input.oldPackageJson) || !isPlainObject(input.newPackageJson)) {
|
|
124
|
+
return { pure: false, reason: 'package.json is not a JSON object' };
|
|
125
|
+
}
|
|
126
|
+
if (input.newPackageJson.version !== input.expectedVersion) {
|
|
127
|
+
return {
|
|
128
|
+
pure: false,
|
|
129
|
+
reason: `package.json.version is "${String(input.newPackageJson.version)}", expected "${input.expectedVersion}"`,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
if (!deepEqualExceptPaths(input.oldPackageJson, input.newPackageJson, [['version']])) {
|
|
133
|
+
return { pure: false, reason: 'package.json changed fields beyond .version' };
|
|
134
|
+
}
|
|
135
|
+
if (input.changedNonRecordFiles.includes('package-lock.json')) {
|
|
136
|
+
if (!isPlainObject(input.oldLock) || !isPlainObject(input.newLock)) {
|
|
137
|
+
return { pure: false, reason: 'package-lock.json is not a JSON object' };
|
|
138
|
+
}
|
|
139
|
+
if (input.newLock.version !== input.expectedVersion) {
|
|
140
|
+
return {
|
|
141
|
+
pure: false,
|
|
142
|
+
reason: `package-lock.json.version is "${String(input.newLock.version)}", expected "${input.expectedVersion}"`,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
const rootVersion = readPath(input.newLock, ['packages', '', 'version']);
|
|
146
|
+
if (rootVersion !== input.expectedVersion) {
|
|
147
|
+
return {
|
|
148
|
+
pure: false,
|
|
149
|
+
reason: `package-lock.json .packages[""].version is "${String(rootVersion)}", expected "${input.expectedVersion}"`,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
if (!deepEqualExceptPaths(input.oldLock, input.newLock, [['version'], ['packages', '', 'version']])) {
|
|
153
|
+
return {
|
|
154
|
+
pure: false,
|
|
155
|
+
reason: 'package-lock.json changed fields beyond .version and .packages[""].version',
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return { pure: true };
|
|
160
|
+
}
|
|
161
|
+
export function classifyPreflight(facts) {
|
|
162
|
+
if (!facts.mainClean || !facts.mainCurrent) {
|
|
163
|
+
return {
|
|
164
|
+
ok: false,
|
|
165
|
+
reason: 'dirty-or-behind',
|
|
166
|
+
detail: 'main must be clean and current (not behind its remote) before a release',
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
if (!facts.registryReachable) {
|
|
170
|
+
return { ok: false, reason: 'unreachable-registry', detail: 'the npm registry is unreachable' };
|
|
171
|
+
}
|
|
172
|
+
if (facts.publicVersions === null || facts.distTags === null || facts.stagedCandidates === null) {
|
|
173
|
+
return {
|
|
174
|
+
ok: false,
|
|
175
|
+
reason: 'query-uncertain',
|
|
176
|
+
detail: 'could not read the registry or the staged candidates — failing closed',
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
if (facts.unfinishedReleaseInFlight) {
|
|
180
|
+
return {
|
|
181
|
+
ok: false,
|
|
182
|
+
reason: 'unfinished-release',
|
|
183
|
+
detail: 'an earlier release is still in flight — finish it with `release publish`, or close it with `release prepare --supersede`',
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
if (facts.targetTagExists) {
|
|
187
|
+
return { ok: false, reason: 'tag-exists', detail: `tag v${facts.targetVersion} already exists` };
|
|
188
|
+
}
|
|
189
|
+
if (compareSemver(facts.targetVersion, facts.mainVersion) <= 0) {
|
|
190
|
+
return {
|
|
191
|
+
ok: false,
|
|
192
|
+
reason: 'target-not-newer-than-main',
|
|
193
|
+
detail: `${facts.targetVersion} is not newer than main's current ${facts.mainVersion}`,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
if (facts.publicVersions.includes(facts.targetVersion)) {
|
|
197
|
+
return { ok: false, reason: 'target-public', detail: `${facts.targetVersion} is already published` };
|
|
198
|
+
}
|
|
199
|
+
const staged = facts.stagedCandidates.find((candidate) => candidate.version === facts.targetVersion);
|
|
200
|
+
if (staged) {
|
|
201
|
+
return {
|
|
202
|
+
ok: false,
|
|
203
|
+
reason: 'target-staged',
|
|
204
|
+
detail: `${facts.targetVersion} is already staged (${staged.id})`,
|
|
205
|
+
stagedCandidate: staged,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
const newestPublic = facts.publicVersions.reduce((max, version) => {
|
|
209
|
+
if (!parseSemver(version)) {
|
|
210
|
+
return max;
|
|
211
|
+
}
|
|
212
|
+
return max === null || compareSemver(version, max) > 0 ? version : max;
|
|
213
|
+
}, null);
|
|
214
|
+
if (newestPublic && compareSemver(newestPublic, facts.mainVersion) > 0) {
|
|
215
|
+
return {
|
|
216
|
+
ok: false,
|
|
217
|
+
reason: 'registry-newer-than-main',
|
|
218
|
+
detail: `published ${newestPublic} is newer than main's ${facts.mainVersion}`,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
const latest = facts.distTags.latest;
|
|
222
|
+
return { ok: true, rollbackInEffect: latest !== undefined && latest !== facts.mainVersion };
|
|
223
|
+
}
|
|
224
|
+
export function classifySupersede(facts) {
|
|
225
|
+
if (facts.publicVersions === null || facts.stagedCandidates === null) {
|
|
226
|
+
return {
|
|
227
|
+
ok: false,
|
|
228
|
+
reason: 'query-uncertain',
|
|
229
|
+
detail: 'could not read the registry or the staged candidates — failing closed',
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
const staged = facts.stagedCandidates.find((candidate) => candidate.version === facts.targetVersion);
|
|
233
|
+
if (staged) {
|
|
234
|
+
return {
|
|
235
|
+
ok: false,
|
|
236
|
+
reason: 'target-staged',
|
|
237
|
+
detail: `${facts.targetVersion} is staged as ${staged.id} — continue that release, or \`npm stage reject ${staged.id}\` (owner-interactive, 2FA) then rerun`,
|
|
238
|
+
stagedCandidate: staged,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
if (facts.publicVersions.includes(facts.targetVersion)) {
|
|
242
|
+
return {
|
|
243
|
+
ok: false,
|
|
244
|
+
reason: 'target-public',
|
|
245
|
+
detail: `${facts.targetVersion} is already published — run \`prismatica release publish\` to record it, not supersede`,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
return { ok: true };
|
|
249
|
+
}
|
|
250
|
+
export function deriveReleaseNextAction(facts) {
|
|
251
|
+
if (facts.recordExists) {
|
|
252
|
+
return { action: 'already-recorded' };
|
|
253
|
+
}
|
|
254
|
+
if (facts.publicVersions === null || facts.distTags === null || facts.stagedCandidates === null) {
|
|
255
|
+
return {
|
|
256
|
+
action: 'query-uncertain',
|
|
257
|
+
detail: 'could not read the registry or the staged candidates — failing closed',
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
// The staged entry disappears the instant `stage approve` succeeds — public
|
|
261
|
+
// presence is the one durable fact a rerun can still see after that, so it
|
|
262
|
+
// is checked BEFORE tag/staging state, which a rerun in this exact window
|
|
263
|
+
// can no longer read at all.
|
|
264
|
+
if (facts.publicVersions.includes(facts.version)) {
|
|
265
|
+
return { action: 'reconstruct-record-from-public' };
|
|
266
|
+
}
|
|
267
|
+
if (!facts.tagExists) {
|
|
268
|
+
return { action: 'create-tag-and-dispatch' };
|
|
269
|
+
}
|
|
270
|
+
const staged = facts.stagedCandidates.find((candidate) => candidate.version === facts.version);
|
|
271
|
+
if (!staged) {
|
|
272
|
+
// Tagged with no staged candidate yet: either never dispatched, or an
|
|
273
|
+
// earlier dispatch ran and produced nothing stageable (a defective
|
|
274
|
+
// workflow). Re-dispatching main's current definition against the
|
|
275
|
+
// untouched, immutable tag is the one recovery for both.
|
|
276
|
+
return { action: 'dispatch-workflow' };
|
|
277
|
+
}
|
|
278
|
+
if (staged.tag !== facts.intendedTag) {
|
|
279
|
+
return {
|
|
280
|
+
action: 'refuse-wrong-stage',
|
|
281
|
+
detail: `the staged candidate for ${facts.version} is tagged ${staged.tag ?? '(unreadable)'}, not ${facts.intendedTag}`,
|
|
282
|
+
stagedCandidate: staged,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
return { action: 'await-approval', stagedCandidate: staged };
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=releases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"releases.js","sourceRoot":"","sources":["../src/releases.ts"],"names":[],"mappings":"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"}
|
package/dist/render.js
CHANGED
|
@@ -272,4 +272,27 @@ smoke journey passed, and the rollback route was tested. Rollback is a new recor
|
|
|
272
272
|
never an erased one.
|
|
273
273
|
`;
|
|
274
274
|
}
|
|
275
|
+
export function renderReleaseBody(release) {
|
|
276
|
+
const routes = release.recoveryRoutes.length === 0
|
|
277
|
+
? '_none — nothing left to do_'
|
|
278
|
+
: bulletList(release.recoveryRoutes, 'none');
|
|
279
|
+
const published = release.outcome === 'published'
|
|
280
|
+
? `- **Integrity (sha512 SRI):** ${release.integrity ?? '_unknown_'}
|
|
281
|
+
- **Dist-tag:** ${release.distTag ?? '_unknown_'}
|
|
282
|
+
`
|
|
283
|
+
: '';
|
|
284
|
+
return `# Release ${release.version} — ${release.outcome}
|
|
285
|
+
|
|
286
|
+
- **Contract:** ${release.contractId}
|
|
287
|
+
${release.commit ? `- **Commit:** ${release.commit}\n` : ''}${release.tag ? `- **Tag:** ${release.tag}\n` : ''}${release.pr ? `- **PR:** ${release.pr}\n` : ''}- **At:** ${release.at}
|
|
288
|
+
${published}
|
|
289
|
+
This release is a write-once record: ${release.outcome === 'published'
|
|
290
|
+
? 'the npm registry itself confirmed this exact version, artifact and dist-tag before this record was written.'
|
|
291
|
+
: 'the registry confirmed this version was never published or staged before this record closed the attempt.'}
|
|
292
|
+
|
|
293
|
+
## Recovery routes
|
|
294
|
+
|
|
295
|
+
${routes}
|
|
296
|
+
`;
|
|
297
|
+
}
|
|
275
298
|
//# sourceMappingURL=render.js.map
|
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
package/dist/title.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one canonical definition of what a Prismatica change TITLE is: a
|
|
3
|
+
* concise, single-line, owner-facing identity — never the detailed plan
|
|
4
|
+
* summary. Every surface that creates or shows a title derives from the two
|
|
5
|
+
* primitives here; nothing else may invent its own number, regex or
|
|
6
|
+
* truncation.
|
|
7
|
+
*
|
|
8
|
+
* `titleProblem` is the STRICT gate for a NEW title (Start's schema,
|
|
9
|
+
* `frame --title`): it refuses. `clampTitle` is the DEFENSIVE fallback for a
|
|
10
|
+
* LEGACY or outbound title (a historical record, a generated commit subject,
|
|
11
|
+
* a PR title): it shortens instead of refusing, because a record already on
|
|
12
|
+
* disk must stay usable forever. Neither ever tightens a record schema —
|
|
13
|
+
* `ContractSchema.title` and `IntentSchema.title` stay `min(1)` with no
|
|
14
|
+
* maximum, so every title already written keeps parsing.
|
|
15
|
+
*/
|
|
16
|
+
/** The hard maximum for a NEWLY created title — well inside GitHub's 256-character issue/PR title limit. */
|
|
17
|
+
export const CHANGE_TITLE_MAX = 120;
|
|
18
|
+
/**
|
|
19
|
+
* A conforming title: non-blank, one line, no leading or trailing whitespace.
|
|
20
|
+
* Anchored at both ends (`^`/`$`) so a JSON Schema validator that treats
|
|
21
|
+
* `pattern` as an unanchored search still behaves correctly — `.` excludes
|
|
22
|
+
* line terminators in JavaScript, so an embedded newline cannot be spanned by
|
|
23
|
+
* the middle `.*` and the anchored match fails closed.
|
|
24
|
+
*
|
|
25
|
+
* Length is deliberately NOT expressed here — that is `CHANGE_TITLE_MAX`,
|
|
26
|
+
* applied separately (as `.max()` in the schema, as a plain length check in
|
|
27
|
+
* `titleProblem`), so the two constraints stay independently readable.
|
|
28
|
+
*/
|
|
29
|
+
export const TITLE_PATTERN = /^\S(?:.*\S)?$/;
|
|
30
|
+
/**
|
|
31
|
+
* Refuses a title for NEW creation (Start's schema, `frame --title`).
|
|
32
|
+
* Returns the reason, or `null` when the title already conforms.
|
|
33
|
+
*/
|
|
34
|
+
export function titleProblem(raw) {
|
|
35
|
+
if (raw.length > CHANGE_TITLE_MAX) {
|
|
36
|
+
return `a title must be at most ${CHANGE_TITLE_MAX} characters (this one is ${raw.length})`;
|
|
37
|
+
}
|
|
38
|
+
if (TITLE_PATTERN.test(raw)) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
if (raw.trim() === '') {
|
|
42
|
+
return 'a title cannot be empty or blank';
|
|
43
|
+
}
|
|
44
|
+
return 'a title must be a single line, with no leading or trailing whitespace';
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Shortens a LEGACY or outbound title instead of refusing it — records
|
|
48
|
+
* already on disk may carry anything up to and including a multi-thousand
|
|
49
|
+
* character plan summary. Collapses whitespace/newlines to one line, returns
|
|
50
|
+
* an already-conforming title byte-identical, and otherwise cuts
|
|
51
|
+
* deterministically to at most `CHANGE_TITLE_MAX`, preferring a word
|
|
52
|
+
* boundary with an ellipsis. Never invents or rewrites a word.
|
|
53
|
+
*/
|
|
54
|
+
export function clampTitle(raw) {
|
|
55
|
+
if (titleProblem(raw) === null) {
|
|
56
|
+
return raw;
|
|
57
|
+
}
|
|
58
|
+
const collapsed = raw.replace(/\s+/g, ' ').trim();
|
|
59
|
+
if (collapsed.length <= CHANGE_TITLE_MAX) {
|
|
60
|
+
return collapsed;
|
|
61
|
+
}
|
|
62
|
+
const ELLIPSIS = '…';
|
|
63
|
+
const limit = CHANGE_TITLE_MAX - ELLIPSIS.length;
|
|
64
|
+
const truncated = collapsed.slice(0, limit);
|
|
65
|
+
const lastSpace = truncated.lastIndexOf(' ');
|
|
66
|
+
const atWordBoundary = lastSpace > 0 ? truncated.slice(0, lastSpace) : truncated;
|
|
67
|
+
return `${atWordBoundary}${ELLIPSIS}`;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=title.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"title.js","sourceRoot":"","sources":["../src/title.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4GAA4G;AAC5G,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,IAAI,GAAG,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,OAAO,2BAA2B,gBAAgB,4BAA4B,GAAG,CAAC,MAAM,GAAG,CAAC;IAC9F,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtB,OAAO,kCAAkC,CAAC;IAC5C,CAAC;IACD,OAAO,uEAAuE,CAAC;AACjF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,IAAI,SAAS,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC;IACrB,MAAM,KAAK,GAAG,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC;IACjD,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjF,OAAO,GAAG,cAAc,GAAG,QAAQ,EAAE,CAAC;AACxC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prismatica",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Deterministic change assurance for software that AI agents write. The agent builds; Prismatica inspects; nothing ships until the intent, the proof, and the owner agree.",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/ethan-ghoreishi/prismatica-cli.git"
|
|
8
|
+
},
|
|
5
9
|
"type": "module",
|
|
6
10
|
"license": "MIT",
|
|
7
11
|
"engines": {
|