musubix2 0.5.50 → 0.5.51

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.
@@ -1 +1 @@
1
- {"generator":"musubix2","version":"0.5.50","timestamp":"2026-07-10T06:43:13.120Z"}
1
+ {"generator":"musubix2","version":"0.5.51","timestamp":"2026-07-10T07:05:35.431Z"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0",
3
- "generatedAt": "2026-07-10T06:43:13.156Z",
3
+ "generatedAt": "2026-07-10T07:05:35.462Z",
4
4
  "entries": [
5
5
  {
6
6
  "platform": "copilot",
package/dist/cli.js CHANGED
@@ -2559,6 +2559,9 @@ function operationParts(text, fallbackTitle) {
2559
2559
  const negated = Boolean(shall?.[1]);
2560
2560
  const phrase = (shall?.[2] ?? fallbackTitle ?? "").trim();
2561
2561
  const words = phrase.split(/[\s,、]+/).map((w) => w.replace(/[^A-Za-z0-9]/g, "")).filter((w) => w.length > 0 && !OPERATION_STOPWORDS.has(w.toLowerCase())).slice(0, 4);
2562
+ while (words.length > 1 && (TRAILING_FILLER.has(words[words.length - 1].toLowerCase()) || /^\d+$/.test(words[words.length - 1]))) {
2563
+ words.pop();
2564
+ }
2562
2565
  return { negated, words };
2563
2566
  }
2564
2567
  function camelJoin(parts) {
@@ -2599,7 +2602,7 @@ function createDesignGenerator() {
2599
2602
  function createSOLIDValidator() {
2600
2603
  return new SOLIDValidator();
2601
2604
  }
2602
- var OPERATION_STOPWORDS, BOOLEAN_VERBS, VALUE_VERBS, LIST_VERBS, DesignGenerator, SOLIDValidator;
2605
+ var OPERATION_STOPWORDS, BOOLEAN_VERBS, VALUE_VERBS, LIST_VERBS, TRAILING_FILLER, DesignGenerator, SOLIDValidator;
2603
2606
  var init_design = __esm({
2604
2607
  "../core/dist/design/index.js"() {
2605
2608
  "use strict";
@@ -2669,6 +2672,34 @@ var init_design = __esm({
2669
2672
  "render"
2670
2673
  ]);
2671
2674
  LIST_VERBS = /* @__PURE__ */ new Set(["list", "query", "search", "collect", "enumerate"]);
2675
+ TRAILING_FILLER = /* @__PURE__ */ new Set([
2676
+ "every",
2677
+ "by",
2678
+ "before",
2679
+ "after",
2680
+ "with",
2681
+ "of",
2682
+ "to",
2683
+ "in",
2684
+ "on",
2685
+ "for",
2686
+ "from",
2687
+ "into",
2688
+ "than",
2689
+ "as",
2690
+ "at",
2691
+ "per",
2692
+ "via",
2693
+ "using",
2694
+ "about",
2695
+ "over",
2696
+ "under",
2697
+ "one",
2698
+ "two",
2699
+ "three",
2700
+ "four",
2701
+ "five"
2702
+ ]);
2672
2703
  DesignGenerator = class {
2673
2704
  counter = 0;
2674
2705
  generate(requirements) {
@@ -12423,7 +12454,11 @@ var init_dist14 = __esm({
12423
12454
  break;
12424
12455
  }
12425
12456
  case "unwanted":
12426
- assertions = [`(assert (not ${actionVar}))`];
12457
+ if (requirement.condition) {
12458
+ assertions = [`(assert (=> ${sanitizeName(requirement.condition)} ${actionVar}))`];
12459
+ } else {
12460
+ assertions = [`(assert (not ${actionVar}))`];
12461
+ }
12427
12462
  break;
12428
12463
  case "optional": {
12429
12464
  const featureVar = requirement.trigger ? sanitizeName(requirement.trigger) : "feature_enabled";
package/dist/index.js CHANGED
@@ -2559,6 +2559,9 @@ function operationParts(text, fallbackTitle) {
2559
2559
  const negated = Boolean(shall?.[1]);
2560
2560
  const phrase = (shall?.[2] ?? fallbackTitle ?? "").trim();
2561
2561
  const words = phrase.split(/[\s,、]+/).map((w) => w.replace(/[^A-Za-z0-9]/g, "")).filter((w) => w.length > 0 && !OPERATION_STOPWORDS.has(w.toLowerCase())).slice(0, 4);
2562
+ while (words.length > 1 && (TRAILING_FILLER.has(words[words.length - 1].toLowerCase()) || /^\d+$/.test(words[words.length - 1]))) {
2563
+ words.pop();
2564
+ }
2562
2565
  return { negated, words };
2563
2566
  }
2564
2567
  function camelJoin(parts) {
@@ -2599,7 +2602,7 @@ function createDesignGenerator() {
2599
2602
  function createSOLIDValidator() {
2600
2603
  return new SOLIDValidator();
2601
2604
  }
2602
- var OPERATION_STOPWORDS, BOOLEAN_VERBS, VALUE_VERBS, LIST_VERBS, DesignGenerator, SOLIDValidator;
2605
+ var OPERATION_STOPWORDS, BOOLEAN_VERBS, VALUE_VERBS, LIST_VERBS, TRAILING_FILLER, DesignGenerator, SOLIDValidator;
2603
2606
  var init_design = __esm({
2604
2607
  "../core/dist/design/index.js"() {
2605
2608
  "use strict";
@@ -2669,6 +2672,34 @@ var init_design = __esm({
2669
2672
  "render"
2670
2673
  ]);
2671
2674
  LIST_VERBS = /* @__PURE__ */ new Set(["list", "query", "search", "collect", "enumerate"]);
2675
+ TRAILING_FILLER = /* @__PURE__ */ new Set([
2676
+ "every",
2677
+ "by",
2678
+ "before",
2679
+ "after",
2680
+ "with",
2681
+ "of",
2682
+ "to",
2683
+ "in",
2684
+ "on",
2685
+ "for",
2686
+ "from",
2687
+ "into",
2688
+ "than",
2689
+ "as",
2690
+ "at",
2691
+ "per",
2692
+ "via",
2693
+ "using",
2694
+ "about",
2695
+ "over",
2696
+ "under",
2697
+ "one",
2698
+ "two",
2699
+ "three",
2700
+ "four",
2701
+ "five"
2702
+ ]);
2672
2703
  DesignGenerator = class {
2673
2704
  counter = 0;
2674
2705
  generate(requirements) {
@@ -12423,7 +12454,11 @@ var init_dist14 = __esm({
12423
12454
  break;
12424
12455
  }
12425
12456
  case "unwanted":
12426
- assertions = [`(assert (not ${actionVar}))`];
12457
+ if (requirement.condition) {
12458
+ assertions = [`(assert (=> ${sanitizeName(requirement.condition)} ${actionVar}))`];
12459
+ } else {
12460
+ assertions = [`(assert (not ${actionVar}))`];
12461
+ }
12427
12462
  break;
12428
12463
  case "optional": {
12429
12464
  const featureVar = requirement.trigger ? sanitizeName(requirement.trigger) : "feature_enabled";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "musubix2",
3
- "version": "0.5.50",
3
+ "version": "0.5.51",
4
4
  "description": "MUSUBIX2 — Specification Driven Development System",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",