focused-spec 0.1.0 → 0.1.1
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/dist/config.js +4 -2
- package/dist/config.js.map +1 -1
- package/dist/model.d.ts +1 -0
- package/dist/parser.js +5 -0
- package/dist/parser.js.map +1 -1
- package/dist/validate.js +16 -0
- package/dist/validate.js.map +1 -1
- package/package.json +1 -2
- package/install.sh +0 -27
package/dist/config.js
CHANGED
|
@@ -3,6 +3,8 @@ import { isAbsolute, resolve } from 'node:path';
|
|
|
3
3
|
import { parse } from 'yaml';
|
|
4
4
|
const RUNNER_ID = /^[a-z0-9]+(?:[.-][a-z0-9]+)*$/u;
|
|
5
5
|
const PARENT_SEGMENT = /(?:^|[\\/])\.\.(?:[\\/]|$)/u;
|
|
6
|
+
// The host timer adds a one-second grace period; Node timers cannot exceed 2^31 - 1 ms.
|
|
7
|
+
const MAX_RUNNER_TIMEOUT_MS = 2_147_483_647 - 1_000;
|
|
6
8
|
function object(value) {
|
|
7
9
|
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
8
10
|
? value
|
|
@@ -32,8 +34,8 @@ function parseRunner(id, value, path, violations) {
|
|
|
32
34
|
violations.push({ path, message: `runner ${id} cwd must be a non-empty relative path` });
|
|
33
35
|
return undefined;
|
|
34
36
|
}
|
|
35
|
-
if (record.timeoutMs !== undefined && (!Number.isInteger(record.timeoutMs) || record.timeoutMs <= 0)) {
|
|
36
|
-
violations.push({ path, message: `runner ${id} timeoutMs must be
|
|
37
|
+
if (record.timeoutMs !== undefined && (!Number.isInteger(record.timeoutMs) || record.timeoutMs <= 0 || record.timeoutMs > MAX_RUNNER_TIMEOUT_MS)) {
|
|
38
|
+
violations.push({ path, message: `runner ${id} timeoutMs must be an integer from 1 to ${MAX_RUNNER_TIMEOUT_MS}` });
|
|
37
39
|
return undefined;
|
|
38
40
|
}
|
|
39
41
|
if (record.options !== undefined && !isJsonValue(record.options)) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAI5B,MAAM,SAAS,GAAG,gCAAgC,CAAA;AAClD,MAAM,cAAc,GAAG,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/model.d.ts
CHANGED
package/dist/parser.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const ID = /^- \*\*ID\*\*: `([^`]+)`$/u;
|
|
2
2
|
const EVIDENCE = /^- \*\*EVIDENCE\*\*: `([^`]+)`$/u;
|
|
3
|
+
const EVIDENCE_ROW = /^\s*-\s*\*\*EVIDENCE\*\*/u;
|
|
3
4
|
const WHEN = /^- \*\*WHEN\*\*/u;
|
|
4
5
|
const THEN = /^- \*\*THEN\*\*/u;
|
|
5
6
|
const REQUIREMENT = /^### Requirement: (.+)$/u;
|
|
@@ -27,10 +28,13 @@ export function parseFocusedSpecDocument(path, source) {
|
|
|
27
28
|
if (scenarioMatch?.[1] === undefined)
|
|
28
29
|
continue;
|
|
29
30
|
const body = [];
|
|
31
|
+
const malformedEvidenceLines = [];
|
|
30
32
|
for (let cursor = index + 1; cursor < lines.length; cursor += 1) {
|
|
31
33
|
const candidate = lines[cursor] ?? '';
|
|
32
34
|
if (SCENARIO.test(candidate) || REQUIREMENT.test(candidate) || candidate.startsWith('## '))
|
|
33
35
|
break;
|
|
36
|
+
if (EVIDENCE_ROW.test(candidate) && !EVIDENCE.test(candidate))
|
|
37
|
+
malformedEvidenceLines.push(cursor + 1);
|
|
34
38
|
body.push(candidate);
|
|
35
39
|
}
|
|
36
40
|
scenarios.push({
|
|
@@ -41,6 +45,7 @@ export function parseFocusedSpecDocument(path, source) {
|
|
|
41
45
|
operation,
|
|
42
46
|
ids: body.flatMap(value => ID.exec(value)?.[1] ?? []),
|
|
43
47
|
evidence: body.flatMap(value => EVIDENCE.exec(value)?.[1] ?? []),
|
|
48
|
+
malformedEvidenceLines,
|
|
44
49
|
whenCount: body.filter(value => WHEN.test(value)).length,
|
|
45
50
|
thenCount: body.filter(value => THEN.test(value)).length,
|
|
46
51
|
});
|
package/dist/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAEA,MAAM,EAAE,GAAG,4BAA4B,CAAA;AACvC,MAAM,QAAQ,GAAG,kCAAkC,CAAA;AACnD,MAAM,IAAI,GAAG,kBAAkB,CAAA;AAC/B,MAAM,IAAI,GAAG,kBAAkB,CAAA;AAC/B,MAAM,WAAW,GAAG,0BAA0B,CAAA;AAC9C,MAAM,QAAQ,GAAG,wBAAwB,CAAA;AACzC,MAAM,kBAAkB,GAAG,8BAA8B,CAAA;AACzD,MAAM,SAAS,GAAG,qDAAqD,CAAA;AAEvE,MAAM,CAAC,MAAM,SAAS,GAAG,gCAAgC,CAAA;AAEzD,MAAM,UAAU,wBAAwB,CAAC,IAAY,EAAE,MAAc;IACnE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,SAAS,GAAwC,EAAE,CAAA;IACzD,MAAM,yBAAyB,GAAa,EAAE,CAAA;IAC9C,IAAI,SAAS,GAAkB,SAAS,CAAA;IACxC,IAAI,WAA+B,CAAA;IAEnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QAC/B,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,SAAS,GAAG,cAAc,CAAC,CAAC,CAAkB,CAAA;QACrF,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,gBAAgB,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAC1E,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,yBAAyB,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAE5E,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,SAAQ;QAC9C,MAAM,IAAI,GAAa,EAAE,CAAA;QACzB,KAAK,IAAI,MAAM,GAAG,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;YAChE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YACrC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,MAAK;YACjG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACtB,CAAC;QACD,SAAS,CAAC,IAAI,CAAC;YACb,IAAI;YACJ,IAAI,EAAE,KAAK,GAAG,CAAC;YACf,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;YACtB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YACrD,SAAS;YACT,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrD,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;YACxD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;SACzD,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IAC1D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAA;IAChE,CAAC;IACD,OAAO;QACL,GAAG;QACH,OAAO;QACP,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;QACnC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;KACrC,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/validate.js
CHANGED
|
@@ -31,6 +31,9 @@ export function validateDocuments(documents, config, options) {
|
|
|
31
31
|
}
|
|
32
32
|
if (scenario.evidence.length === 0)
|
|
33
33
|
violations.push(diagnostic(scenario, 'expected at least one EVIDENCE row'));
|
|
34
|
+
for (const line of scenario.malformedEvidenceLines) {
|
|
35
|
+
violations.push({ ...diagnostic(scenario, 'malformed EVIDENCE row; expected - **EVIDENCE**: `<runner-id>::<selector>`'), line });
|
|
36
|
+
}
|
|
34
37
|
if (scenario.whenCount !== 1)
|
|
35
38
|
violations.push(diagnostic(scenario, `expected exactly one WHEN row, found ${scenario.whenCount}`));
|
|
36
39
|
if (scenario.thenCount !== 1)
|
|
@@ -84,9 +87,22 @@ export async function validateFocusedSpecs(projectRoot, config, options = {}) {
|
|
|
84
87
|
};
|
|
85
88
|
}
|
|
86
89
|
const resolutionDocuments = [...currentDocuments];
|
|
90
|
+
const activeIdentifiers = new Map();
|
|
87
91
|
if (config.specifications.source === 'openspec') {
|
|
88
92
|
for (const documents of (await loadActiveChanges(projectRoot, config)).values()) {
|
|
89
93
|
const active = validateDocuments(documents, config, { allowPlanned: true });
|
|
94
|
+
for (const document of documents) {
|
|
95
|
+
for (const scenario of document.scenarios) {
|
|
96
|
+
const id = scenario.ids[0];
|
|
97
|
+
if (id === undefined || scenario.ids.length !== 1 || current.identifiers.has(id))
|
|
98
|
+
continue;
|
|
99
|
+
const previous = activeIdentifiers.get(id);
|
|
100
|
+
if (previous === undefined)
|
|
101
|
+
activeIdentifiers.set(id, scenario);
|
|
102
|
+
else
|
|
103
|
+
violations.push(diagnostic(scenario, `duplicate stable ID; first owned by ${previous.path}:${previous.line}`));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
90
106
|
violations.push(...active.violations, ...collisionViolations(current.identifiers, documents));
|
|
91
107
|
resolutionDocuments.push(...documents);
|
|
92
108
|
}
|
package/dist/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAEpH,SAAS,UAAU,CAAC,QAAkB,EAAE,OAAe;IACrD,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,OAAO;KACR,CAAA;AACH,CAAC;AAOD,MAAM,UAAU,iBAAiB,CAC/B,SAAkC,EAClC,MAAyB,EACzB,OAA2C;IAE3C,MAAM,UAAU,GAAgB,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAA;IAE/C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,yBAAyB,EAAE,CAAC;YACtD,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC,CAAA;QAC3G,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC1C,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,sCAAsC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YACpG,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAW,CAAA;gBACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC,CAAA;gBACzF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACpC,IAAI,QAAQ,KAAK,SAAS;oBAAE,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;;oBACpD,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,uCAAuC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YACrH,CAAC;YACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC,CAAA;YAC/G,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,sBAAsB,EAAE,CAAC;gBACnD,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,QAAQ,EAAE,4EAA4E,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;YAClI,CAAC;YACD,IAAI,QAAQ,CAAC,SAAS,KAAK,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,wCAAwC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;YACjI,IAAI,QAAQ,CAAC,SAAS,KAAK,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,wCAAwC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;YAEjI,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;gBAC7C,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;oBACzB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,oBAAoB,GAAG,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;oBACpF,SAAQ;gBACV,CAAC;gBACD,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;oBAC/C,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,yCAAyC,GAAG,yHAAyH,CAAC,CAAC,CAAA;gBAC9M,CAAC;gBACD,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;oBACrD,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,2BAA2B,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;gBACxF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAA;AACpC,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAsC,EAAE,SAAkC;IACrG,MAAM,UAAU,GAAgB,EAAE,CAAA;IAClC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAC1B,MAAM,KAAK,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC5D,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,UAAU,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS;gBAAE,SAAQ;YAC1G,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,iDAAiD,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACpH,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAaD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAAmB,EACnB,MAAyB,EACzB,UAA6B,EAAE;IAE/B,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IACtE,MAAM,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IACxE,MAAM,OAAO,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA;IACpF,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAEtC,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;QAC1F,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,gDAAgD,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;QAC9H,CAAC;QACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QAC5F,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAA;QACnG,OAAO;YACL,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC;YACnC,eAAe,EAAE,eAAe;YAChC,mBAAmB,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,eAAe,CAAC;SAC/D,CAAA;IACH,CAAC;IAED,MAAM,mBAAmB,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAA;IACjD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAoB,CAAA;IACrD,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAChD,KAAK,MAAM,SAAS,IAAI,CAAC,MAAM,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAChF,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;oBAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;oBAC1B,IAAI,EAAE,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;wBAAE,SAAQ;oBAC1F,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBAC1C,IAAI,QAAQ,KAAK,SAAS;wBAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;;wBAC1D,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,uCAAuC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBACrH,CAAC;YACH,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAA;YAC7F,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAA;AACxG,CAAC;AAED,SAAS,WAAW,CAAC,UAAgC;IACnD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAA;IAC1C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,IAAI,EAAE,IAAI,SAAS,CAAC,UAAU,IAAI,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE,CAAA;QAC1G,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAC3B,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChD,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "focused-spec",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Executable evidence for focused behavioral specifications",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
"files": [
|
|
18
18
|
"dist",
|
|
19
19
|
"skills",
|
|
20
|
-
"install.sh",
|
|
21
20
|
"README.md",
|
|
22
21
|
"LICENSE"
|
|
23
22
|
],
|
package/install.sh
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
PACKAGE_NAME="${FOCUSED_SPEC_PACKAGE:-focused-spec}"
|
|
5
|
-
NPM_BIN="${NPM_BIN:-npm}"
|
|
6
|
-
|
|
7
|
-
if ! command -v node >/dev/null 2>&1; then
|
|
8
|
-
printf '%s\n' 'focused-spec requires Node.js 24 or newer; node was not found.' >&2
|
|
9
|
-
exit 1
|
|
10
|
-
fi
|
|
11
|
-
|
|
12
|
-
node_major="$(node -p 'Number(process.versions.node.split(".")[0])')"
|
|
13
|
-
if [[ "$node_major" -lt 24 ]]; then
|
|
14
|
-
printf 'focused-spec requires Node.js 24 or newer; found %s.\n' "$(node --version)" >&2
|
|
15
|
-
exit 1
|
|
16
|
-
fi
|
|
17
|
-
|
|
18
|
-
if ! command -v "$NPM_BIN" >/dev/null 2>&1; then
|
|
19
|
-
printf 'npm executable not found: %s\n' "$NPM_BIN" >&2
|
|
20
|
-
exit 1
|
|
21
|
-
fi
|
|
22
|
-
|
|
23
|
-
printf 'Installing %s as a development dependency...\n' "$PACKAGE_NAME"
|
|
24
|
-
"$NPM_BIN" install --save-dev "$PACKAGE_NAME"
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
printf '%s\n' 'focused-spec CLI installation complete.'
|