@voltro/plan 0.86.0 → 0.88.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/CHANGELOG.md +5484 -0
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/dist/canonical.js +1 -2
- package/dist/closure.js +1 -2
- package/dist/diagnostics.js +1 -2
- package/dist/envelope.js +1 -2
- package/dist/evidence.js +9 -4
- package/dist/ids.js +2 -3
- package/dist/impact.js +1 -2
- package/dist/lint.js +1 -2
- package/dist/manifest.js +1 -2
- package/dist/next.js +1 -2
- package/dist/schema.js +1 -2
- package/dist/state.js +1 -2
- package/dist/status.js +1 -2
- package/package.json +2 -2
package/THIRD-PARTY-NOTICES.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Third-Party Notices — @voltro/plan
|
|
2
2
|
|
|
3
|
-
This package uses the
|
|
3
|
+
This package uses the third-party software listed below. Each is the
|
|
4
4
|
property of its respective copyright holders and is used under the terms of
|
|
5
5
|
its license. This file is provided for attribution; it grants no rights in
|
|
6
6
|
@voltro/plan itself, which is proprietary (see LICENSE).
|
package/dist/canonical.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/canonical.ts
|
|
2
2
|
var e = (e) => JSON.stringify(t(e)), t = (e) => {
|
|
3
3
|
if (Array.isArray(e)) return e.map(t);
|
|
4
4
|
if (typeof e == "object" && e) {
|
|
@@ -114,5 +114,4 @@ var e = (e) => JSON.stringify(t(e)), t = (e) => {
|
|
|
114
114
|
}
|
|
115
115
|
return [...o].map((e) => e.toString(16).padStart(8, "0")).join("");
|
|
116
116
|
}, i = (t) => `sha256:${r(e(t))}`;
|
|
117
|
-
//#endregion
|
|
118
117
|
export { e as canonicalJson, i as fingerprint, r as sha256Hex };
|
package/dist/closure.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { fingerprint as e } from "./canonical.js";
|
|
2
2
|
import { Schema as t } from "effect";
|
|
3
|
-
|
|
3
|
+
// src/closure.ts
|
|
4
4
|
var n = "voltro-plan-closure/v1", r = t.String.pipe(t.check(t.isMinLength(1))), i = t.String.pipe(t.check(t.isPattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$/))), a = t.String.pipe(t.check(t.isPattern(/^sha256:[a-f0-9]{64}$/))), o = (e) => {
|
|
5
5
|
let o = e.grammar, s = (e) => t.String.pipe(t.check(t.isPattern(e))), c = t.Struct({
|
|
6
6
|
id: s(o.closureRun),
|
|
@@ -112,5 +112,4 @@ var n = "voltro-plan-closure/v1", r = t.String.pipe(t.check(t.isMinLength(1))),
|
|
|
112
112
|
certificate: y
|
|
113
113
|
};
|
|
114
114
|
};
|
|
115
|
-
//#endregion
|
|
116
115
|
export { n as CLOSURE_SCHEMA_VERSION, o as closureFileSchema, c as closureState, d as decideClosure, s as planRevision };
|
package/dist/diagnostics.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
// src/diagnostics.ts
|
|
2
2
|
var e = {
|
|
3
3
|
security: 0,
|
|
4
4
|
error: 1,
|
|
5
5
|
warning: 2
|
|
6
6
|
}, t = (e, t) => (e ?? "") < (t ?? "") ? -1 : +((e ?? "") > (t ?? "")), n = (n) => [...n].sort((n, r) => e[n.severity] - e[r.severity] || t(n.locator.plan, r.locator.plan) || t(n.locator.workItem, r.locator.workItem) || t(n.ruleId, r.ruleId) || t(n.locator.file, r.locator.file) || t(n.locator.path, r.locator.path) || t(n.message, r.message)), r = (e, t = !1) => e.some((e) => e.severity !== "warning" || t);
|
|
7
|
-
//#endregion
|
|
8
7
|
export { r as blocks, n as sortDiagnostics };
|
package/dist/envelope.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/envelope.ts
|
|
2
2
|
var e = "voltro-plan-command/v1", t = (t) => ({
|
|
3
3
|
schemaVersion: e,
|
|
4
4
|
...t
|
|
@@ -12,5 +12,4 @@ var e = "voltro-plan-command/v1", t = (t) => ({
|
|
|
12
12
|
security: 6,
|
|
13
13
|
internal: 70
|
|
14
14
|
};
|
|
15
|
-
//#endregion
|
|
16
15
|
export { e as COMMAND_SCHEMA_VERSION, n as EXIT, t as envelope };
|
package/dist/evidence.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { canonicalJson as e } from "./canonical.js";
|
|
2
2
|
import { EVIDENCE_KINDS as t } from "./schema.js";
|
|
3
3
|
import { EXIT as n } from "./envelope.js";
|
|
4
|
-
|
|
4
|
+
// src/evidence.ts
|
|
5
5
|
var r = (e, t, n, r, i, a) => ({
|
|
6
6
|
outcome: "refused",
|
|
7
7
|
exit: a,
|
|
@@ -61,7 +61,13 @@ var r = (e, t, n, r, i, a) => ({
|
|
|
61
61
|
} : r("evidence/idempotency-conflict", "error", `the key "${s.idempotencyKey}" was used for other evidence (${t.id})`, "Use a new key for new evidence.", c.id, n.conflict);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
let d = `EVD-${c.id}-`, f =
|
|
64
|
+
let d = `EVD-${c.id}-`, f = 0n;
|
|
65
|
+
for (let e of a.evidence) {
|
|
66
|
+
if (!e.id.startsWith(d)) continue;
|
|
67
|
+
let t = BigInt(e.id.slice(d.length));
|
|
68
|
+
t > f && (f = t);
|
|
69
|
+
}
|
|
70
|
+
let p = String(f + 1n).padStart(3, "0");
|
|
65
71
|
return o.evidence.test(`${d}${p}`) ? {
|
|
66
72
|
outcome: "add",
|
|
67
73
|
evidence: {
|
|
@@ -70,7 +76,6 @@ var r = (e, t, n, r, i, a) => ({
|
|
|
70
76
|
observedAt: s.observedAt,
|
|
71
77
|
...s.idempotencyKey === void 0 ? {} : { idempotencyKey: s.idempotencyKey }
|
|
72
78
|
}
|
|
73
|
-
} : r("evidence/
|
|
79
|
+
} : r("evidence/identifier", "error", `${c.id} cannot form a valid evidence identifier`, "Check the program identifier grammar.", c.id, n.failed);
|
|
74
80
|
};
|
|
75
|
-
//#endregion
|
|
76
81
|
export { a as decideEvidence };
|
package/dist/ids.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/ids.ts
|
|
2
2
|
var e = /^[A-Z][A-Z0-9]{1,9}$/, t = (t) => {
|
|
3
3
|
if (!e.test(t)) throw Error(`plan id prefix "${t}" is not 2 to 10 capital letters or digits, starting with a letter`);
|
|
4
4
|
return {
|
|
@@ -8,7 +8,7 @@ var e = /^[A-Z][A-Z0-9]{1,9}$/, t = (t) => {
|
|
|
8
8
|
acceptance: RegExp(`^${t}-[0-9]{2}-[0-9]{3}-A[0-9]{2}$`),
|
|
9
9
|
requirement: RegExp(`^${t}-[0-9]{2}-[0-9]{3}-E[0-9]{2}$`),
|
|
10
10
|
source: RegExp(`^SRC-${t}-[0-9]{2}-[0-9]{3}-[0-9]{3}$`),
|
|
11
|
-
evidence: RegExp(`^EVD-${t}-[0-9]{2}-[0-9]{3}-[0-9]{3}$`),
|
|
11
|
+
evidence: RegExp(`^EVD-${t}-[0-9]{2}-[0-9]{3}-[0-9]{3,}$`),
|
|
12
12
|
finding: RegExp(`^FND-${t}-[0-9]{2}-[0-9]{3}-[0-9]{3}$`),
|
|
13
13
|
adr: RegExp(`^ADR-${t}-[0-9]{3}$`),
|
|
14
14
|
closureRun: RegExp(`^CLR-${t}-[0-9]{2}-[0-9]{3}$`),
|
|
@@ -21,5 +21,4 @@ var e = /^[A-Z][A-Z0-9]{1,9}$/, t = (t) => {
|
|
|
21
21
|
let n = RegExp(`(?:^|-)(${e.prefix}-[0-9]{2}-[0-9]{3})(?:-|$)`).exec(t);
|
|
22
22
|
return n === null ? null : n[1];
|
|
23
23
|
};
|
|
24
|
-
//#endregion
|
|
25
24
|
export { t as idGrammar, r as ownerItemOf, n as planNumberOf };
|
package/dist/impact.js
CHANGED
package/dist/lint.js
CHANGED
|
@@ -4,7 +4,7 @@ import { sortDiagnostics as a } from "./diagnostics.js";
|
|
|
4
4
|
import { DERIVED as o, TRANSITIONS as s, derivedStatus as c, indexEvidence as l, verificationGaps as u } from "./state.js";
|
|
5
5
|
import { closureFileSchema as d, closureState as f, planRevision as p } from "./closure.js";
|
|
6
6
|
import { Cause as m, Exit as h, Schema as g, SchemaIssue as _ } from "effect";
|
|
7
|
-
|
|
7
|
+
// src/lint.ts
|
|
8
8
|
var v = (e, t, n, r, i, a = []) => ({
|
|
9
9
|
ruleId: e,
|
|
10
10
|
severity: t,
|
|
@@ -269,5 +269,4 @@ var v = (e, t, n, r, i, a = []) => ({
|
|
|
269
269
|
diagnostics: a(y)
|
|
270
270
|
};
|
|
271
271
|
};
|
|
272
|
-
//#endregion
|
|
273
272
|
export { C as dependencyCycles, w as lintProgram };
|
package/dist/manifest.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema as e } from "effect";
|
|
2
|
-
|
|
2
|
+
// src/manifest.ts
|
|
3
3
|
var t = "voltro-plan-manifest/v1", n = e.String.pipe(e.check(e.isMinLength(1)), e.check(e.makeFilter((e) => !e.startsWith("/") && !/^[A-Za-z]:/.test(e) && !e.split("/").includes("..") || "a path stays inside the project root"))), r = e.Struct({
|
|
4
4
|
schemaVersion: e.Literal(t),
|
|
5
5
|
prefix: e.String.pipe(e.check(e.isPattern(/^[A-Z][A-Z0-9]{1,9}$/))),
|
|
@@ -12,5 +12,4 @@ var t = "voltro-plan-manifest/v1", n = e.String.pipe(e.check(e.isMinLength(1)),
|
|
|
12
12
|
adrDir: e.optional(n),
|
|
13
13
|
findings: e.optional(e.Array(n))
|
|
14
14
|
});
|
|
15
|
-
//#endregion
|
|
16
15
|
export { t as MANIFEST_SCHEMA_VERSION, r as Manifest };
|
package/dist/next.js
CHANGED
package/dist/schema.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema as e } from "effect";
|
|
2
|
-
|
|
2
|
+
// src/schema.ts
|
|
3
3
|
var t = e.String.pipe(e.check(e.isMinLength(1))), n = e.String.pipe(e.check(e.isPattern(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$/))), r = e.String.pipe(e.check(e.isPattern(/^sha256:[a-f0-9]{64}$/))), i = (t) => e.Array(t).pipe(e.check(e.makeFilter((e) => new Set(e).size === e.length || "items are listed twice"))), a = (t) => e.Array(t).pipe(e.check(e.isMinLength(1))), o = e.String.pipe(e.check(e.isPattern(/^[a-z0-9]+(?:[.:/-][a-z0-9]+)*$/))), s = [
|
|
4
4
|
"proposed",
|
|
5
5
|
"ready",
|
|
@@ -212,5 +212,4 @@ var t = e.String.pipe(e.check(e.isMinLength(1))), n = e.String.pipe(e.check(e.is
|
|
|
212
212
|
openedAt: n,
|
|
213
213
|
resolvedAt: e.optional(n)
|
|
214
214
|
});
|
|
215
|
-
//#endregion
|
|
216
215
|
export { l as EVIDENCE_KINDS, d as ITEM_KINDS, c as PLAN_STATUSES, u as PRIORITIES, s as WORK_ITEM_STATUSES, m as evidenceSchema, h as findingSchema, p as planInstanceSchema };
|
package/dist/state.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/state.ts
|
|
2
2
|
var e = {
|
|
3
3
|
proposed: ["ready", "blocked"],
|
|
4
4
|
ready: [
|
|
@@ -63,5 +63,4 @@ var e = {
|
|
|
63
63
|
}
|
|
64
64
|
return a;
|
|
65
65
|
}, a = (e, n) => n.length === 0 ? "verified" : t.has(e.status) ? "active" : e.status;
|
|
66
|
-
//#endregion
|
|
67
66
|
export { t as DERIVED, e as TRANSITIONS, a as derivedStatus, n as indexEvidence, i as verificationGaps };
|
package/dist/status.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { WORK_ITEM_STATUSES as e } from "./schema.js";
|
|
2
|
-
|
|
2
|
+
// src/status.ts
|
|
3
3
|
var t = () => Object.fromEntries(e.map((e) => [e, 0])), n = (e) => {
|
|
4
4
|
let n = t();
|
|
5
5
|
return {
|
|
@@ -31,5 +31,4 @@ var t = () => Object.fromEntries(e.map((e) => [e, 0])), n = (e) => {
|
|
|
31
31
|
items: e.items.size
|
|
32
32
|
};
|
|
33
33
|
};
|
|
34
|
-
//#endregion
|
|
35
34
|
export { n as programStatus };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voltro/plan",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.88.0",
|
|
4
4
|
"description": "The executable plan contract: ids, the v1 schema, lint, derived state, status and the next item — pure and browser-safe; the voltro plan CLI feeds it.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"voltro",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"effect": "4.0
|
|
37
|
+
"effect": "4.1.0"
|
|
38
38
|
},
|
|
39
39
|
"publishConfig": {
|
|
40
40
|
"access": "public"
|