@happyvertical/smrt-core 0.40.17 → 0.40.19

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,8 +1,8 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "timestamp": 1784547093428,
3
+ "timestamp": 1784615517759,
4
4
  "packageName": "@happyvertical/smrt-core",
5
- "packageVersion": "0.40.17",
5
+ "packageVersion": "0.40.19",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-core:SmrtClass": {
8
8
  "name": "smrtclass",
@@ -1,5 +1,5 @@
1
1
  import { balanced } from "../../../../../balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js";
2
- //#region ../../node_modules/.pnpm/brace-expansion@5.0.5/node_modules/brace-expansion/dist/esm/index.js
2
+ //#region ../../node_modules/.pnpm/brace-expansion@5.0.7/node_modules/brace-expansion/dist/esm/index.js
3
3
  var escSlash = "\0SLASH" + Math.random() + "\0";
4
4
  var escOpen = "\0OPEN" + Math.random() + "\0";
5
5
  var escClose = "\0CLOSE" + Math.random() + "\0";
@@ -67,15 +67,18 @@ function gte(i, y) {
67
67
  function expand_(str, max, isTop) {
68
68
  /** @type {string[]} */
69
69
  const expansions = [];
70
- const m = balanced("{", "}", str);
71
- if (!m) return [str];
72
- const pre = m.pre;
73
- const post = m.post.length ? expand_(m.post, max, false) : [""];
74
- if (/\$$/.test(m.pre)) for (let k = 0; k < post.length && k < max; k++) {
75
- const expansion = pre + "{" + m.body + "}" + post[k];
76
- expansions.push(expansion);
77
- }
78
- else {
70
+ for (;;) {
71
+ const m = balanced("{", "}", str);
72
+ if (!m) return [str];
73
+ const pre = m.pre;
74
+ if (/\$$/.test(m.pre)) {
75
+ const post = m.post.length ? expand_(m.post, max, false) : [""];
76
+ for (let k = 0; k < post.length && k < max; k++) {
77
+ const expansion = pre + "{" + m.body + "}" + post[k];
78
+ expansions.push(expansion);
79
+ }
80
+ return expansions;
81
+ }
79
82
  const isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
80
83
  const isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
81
84
  const isSequence = isNumericSequence || isAlphaSequence;
@@ -83,10 +86,12 @@ function expand_(str, max, isTop) {
83
86
  if (!isSequence && !isOptions) {
84
87
  if (m.post.match(/,(?!,).*\}/)) {
85
88
  str = m.pre + "{" + m.body + escClose + m.post;
86
- return expand_(str, max, true);
89
+ isTop = true;
90
+ continue;
87
91
  }
88
92
  return [str];
89
93
  }
94
+ const post = m.post.length ? expand_(m.post, max, false) : [""];
90
95
  let n;
91
96
  if (isSequence) n = m.body.split(/\.\./);
92
97
  else {
@@ -110,7 +115,7 @@ function expand_(str, max, isTop) {
110
115
  }
111
116
  const pad = n.some(isPadded);
112
117
  N = [];
113
- for (let i = x; test(i, y); i += incr) {
118
+ for (let i = x; test(i, y) && N.length < max; i += incr) {
114
119
  let c;
115
120
  if (isAlphaSequence) {
116
121
  c = String.fromCharCode(i);
@@ -136,8 +141,8 @@ function expand_(str, max, isTop) {
136
141
  const expansion = pre + N[j] + post[k];
137
142
  if (!isTop || isSequence || expansion) expansions.push(expansion);
138
143
  }
144
+ return expansions;
139
145
  }
140
- return expansions;
141
146
  }
142
147
  //#endregion
143
148
  export { EXPANSION_MAX, expand };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../../../../../../node_modules/.pnpm/brace-expansion@5.0.7/node_modules/brace-expansion/dist/esm/index.js"],"sourcesContent":["import { balanced } from 'balanced-match';\nconst escSlash = '\\0SLASH' + Math.random() + '\\0';\nconst escOpen = '\\0OPEN' + Math.random() + '\\0';\nconst escClose = '\\0CLOSE' + Math.random() + '\\0';\nconst escComma = '\\0COMMA' + Math.random() + '\\0';\nconst escPeriod = '\\0PERIOD' + Math.random() + '\\0';\nconst escSlashPattern = new RegExp(escSlash, 'g');\nconst escOpenPattern = new RegExp(escOpen, 'g');\nconst escClosePattern = new RegExp(escClose, 'g');\nconst escCommaPattern = new RegExp(escComma, 'g');\nconst escPeriodPattern = new RegExp(escPeriod, 'g');\nconst slashPattern = /\\\\\\\\/g;\nconst openPattern = /\\\\{/g;\nconst closePattern = /\\\\}/g;\nconst commaPattern = /\\\\,/g;\nconst periodPattern = /\\\\\\./g;\nexport const EXPANSION_MAX = 100_000;\nfunction numeric(str) {\n return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);\n}\nfunction escapeBraces(str) {\n return str\n .replace(slashPattern, escSlash)\n .replace(openPattern, escOpen)\n .replace(closePattern, escClose)\n .replace(commaPattern, escComma)\n .replace(periodPattern, escPeriod);\n}\nfunction unescapeBraces(str) {\n return str\n .replace(escSlashPattern, '\\\\')\n .replace(escOpenPattern, '{')\n .replace(escClosePattern, '}')\n .replace(escCommaPattern, ',')\n .replace(escPeriodPattern, '.');\n}\n/**\n * Basically just str.split(\",\"), but handling cases\n * where we have nested braced sections, which should be\n * treated as individual members, like {a,{b,c},d}\n */\nfunction parseCommaParts(str) {\n if (!str) {\n return [''];\n }\n const parts = [];\n const m = balanced('{', '}', str);\n if (!m) {\n return str.split(',');\n }\n const { pre, body, post } = m;\n const p = pre.split(',');\n p[p.length - 1] += '{' + body + '}';\n const postParts = parseCommaParts(post);\n if (post.length) {\n ;\n p[p.length - 1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n parts.push.apply(parts, p);\n return parts;\n}\nexport function expand(str, options = {}) {\n if (!str) {\n return [];\n }\n const { max = EXPANSION_MAX } = options;\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.slice(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.slice(2);\n }\n return expand_(escapeBraces(str), max, true).map(unescapeBraces);\n}\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\nfunction expand_(str, max, isTop) {\n /** @type {string[]} */\n const expansions = [];\n // The `{a},b}` rewrite below restarts expansion on a rewritten string with\n // the same `max` and `isTop = true`. Loop instead of recursing so a long run\n // of non-expanding `{}` groups can't exhaust the call stack.\n for (;;) {\n const m = balanced('{', '}', str);\n if (!m)\n return [str];\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n const pre = m.pre;\n if (/\\$$/.test(m.pre)) {\n const post = m.post.length ? expand_(m.post, max, false) : [''];\n for (let k = 0; k < post.length && k < max; k++) {\n const expansion = pre + '{' + m.body + '}' + post[k];\n expansions.push(expansion);\n }\n return expansions;\n }\n const isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n const isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n const isSequence = isNumericSequence || isAlphaSequence;\n const isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,(?!,).*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n isTop = true;\n continue;\n }\n return [str];\n }\n // Only expand post once we know this brace set actually expands. Computing\n // it before the early returns above expanded post a second time on every\n // non-expanding `{}`, which is what made inputs like `a{},{},{}...` blow up\n // exponentially.\n const post = m.post.length ? expand_(m.post, max, false) : [''];\n let n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n }\n else {\n n = parseCommaParts(m.body);\n if (n.length === 1 && n[0] !== undefined) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand_(n[0], max, false).map(embrace);\n //XXX is this necessary? Can't seem to hit it in tests.\n /* c8 ignore start */\n if (n.length === 1) {\n return post.map(p => m.pre + n[0] + p);\n }\n /* c8 ignore stop */\n }\n }\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n let N;\n if (isSequence && n[0] !== undefined && n[1] !== undefined) {\n const x = numeric(n[0]);\n const y = numeric(n[1]);\n const width = Math.max(n[0].length, n[1].length);\n let incr = n.length === 3 && n[2] !== undefined ?\n Math.max(Math.abs(numeric(n[2])), 1)\n : 1;\n let test = lte;\n const reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n const pad = n.some(isPadded);\n N = [];\n for (let i = x; test(i, y) && N.length < max; i += incr) {\n let c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\') {\n c = '';\n }\n }\n else {\n c = String(i);\n if (pad) {\n const need = width - c.length;\n if (need > 0) {\n const z = new Array(need + 1).join('0');\n if (i < 0) {\n c = '-' + z + c.slice(1);\n }\n else {\n c = z + c;\n }\n }\n }\n }\n N.push(c);\n }\n }\n else {\n N = [];\n for (let j = 0; j < n.length; j++) {\n N.push.apply(N, expand_(n[j], max, false));\n }\n }\n for (let j = 0; j < N.length; j++) {\n for (let k = 0; k < post.length && expansions.length < max; k++) {\n const expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion) {\n expansions.push(expansion);\n }\n }\n }\n return expansions;\n }\n}\n//# sourceMappingURL=index.js.map"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { expand } from "../../../../../brace-expansion@5.0.5/node_modules/brace-expansion/dist/esm/index.js";
1
+ import { expand } from "../../../../../brace-expansion@5.0.7/node_modules/brace-expansion/dist/esm/index.js";
2
2
  import { assertValidPattern } from "./assert-valid-pattern.js";
3
3
  import { unescape } from "./unescape.js";
4
4
  import { AST } from "./ast.js";
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generatedAt": "2026-07-20T11:31:31.536Z",
3
+ "generatedAt": "2026-07-21T06:31:55.794Z",
4
4
  "packageName": "@happyvertical/smrt-core",
5
- "packageVersion": "0.40.17",
5
+ "packageVersion": "0.40.19",
6
6
  "sourceManifestPath": "dist/manifest.json",
7
7
  "agentDocPath": "AGENTS.md",
8
8
  "sourceHashes": {
9
- "manifest": "de0914ca628f09c8fc39f09052b067671cad630252bdce59667a4c033fae184f",
10
- "packageJson": "034b517ed2bd5e87256306835ba94831f398afd2821099ceafeded9cbcd32527",
9
+ "manifest": "f5b2ceeb08e9fb464e4a9cf44bccdd725248b5b78d9eff24a5c36918d8d3cb85",
10
+ "packageJson": "fb8015a07d2093bc4a4e926b11b7e603d8f43bd9e321e1c694e703e9d0c65d19",
11
11
  "agents": "51e716c002ba5e152e5b8f63c8eae21edff8ffb99467b19cb12006c524d3921f"
12
12
  },
13
13
  "exports": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-core",
3
- "version": "0.40.17",
3
+ "version": "0.40.19",
4
4
  "description": "Core AI agent framework with standardized collections, object-relational mapping, and code generators",
5
5
  "author": "HappyVertical",
6
6
  "type": "module",
@@ -164,9 +164,9 @@
164
164
  "tsx": "^4.23.0",
165
165
  "typescript": "5.9.3",
166
166
  "yaml": "^2.9.0",
167
- "@happyvertical/smrt-config": "0.40.17",
168
- "@happyvertical/smrt-scanner": "0.40.17",
169
- "@happyvertical/smrt-types": "0.40.17"
167
+ "@happyvertical/smrt-config": "0.40.19",
168
+ "@happyvertical/smrt-scanner": "0.40.19",
169
+ "@happyvertical/smrt-types": "0.40.19"
170
170
  },
171
171
  "peerDependencies": {
172
172
  "@huggingface/transformers": ">=3.0.0 <4.0.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../../../../../../node_modules/.pnpm/brace-expansion@5.0.5/node_modules/brace-expansion/dist/esm/index.js"],"sourcesContent":["import { balanced } from 'balanced-match';\nconst escSlash = '\\0SLASH' + Math.random() + '\\0';\nconst escOpen = '\\0OPEN' + Math.random() + '\\0';\nconst escClose = '\\0CLOSE' + Math.random() + '\\0';\nconst escComma = '\\0COMMA' + Math.random() + '\\0';\nconst escPeriod = '\\0PERIOD' + Math.random() + '\\0';\nconst escSlashPattern = new RegExp(escSlash, 'g');\nconst escOpenPattern = new RegExp(escOpen, 'g');\nconst escClosePattern = new RegExp(escClose, 'g');\nconst escCommaPattern = new RegExp(escComma, 'g');\nconst escPeriodPattern = new RegExp(escPeriod, 'g');\nconst slashPattern = /\\\\\\\\/g;\nconst openPattern = /\\\\{/g;\nconst closePattern = /\\\\}/g;\nconst commaPattern = /\\\\,/g;\nconst periodPattern = /\\\\\\./g;\nexport const EXPANSION_MAX = 100_000;\nfunction numeric(str) {\n return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);\n}\nfunction escapeBraces(str) {\n return str\n .replace(slashPattern, escSlash)\n .replace(openPattern, escOpen)\n .replace(closePattern, escClose)\n .replace(commaPattern, escComma)\n .replace(periodPattern, escPeriod);\n}\nfunction unescapeBraces(str) {\n return str\n .replace(escSlashPattern, '\\\\')\n .replace(escOpenPattern, '{')\n .replace(escClosePattern, '}')\n .replace(escCommaPattern, ',')\n .replace(escPeriodPattern, '.');\n}\n/**\n * Basically just str.split(\",\"), but handling cases\n * where we have nested braced sections, which should be\n * treated as individual members, like {a,{b,c},d}\n */\nfunction parseCommaParts(str) {\n if (!str) {\n return [''];\n }\n const parts = [];\n const m = balanced('{', '}', str);\n if (!m) {\n return str.split(',');\n }\n const { pre, body, post } = m;\n const p = pre.split(',');\n p[p.length - 1] += '{' + body + '}';\n const postParts = parseCommaParts(post);\n if (post.length) {\n ;\n p[p.length - 1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n parts.push.apply(parts, p);\n return parts;\n}\nexport function expand(str, options = {}) {\n if (!str) {\n return [];\n }\n const { max = EXPANSION_MAX } = options;\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.slice(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.slice(2);\n }\n return expand_(escapeBraces(str), max, true).map(unescapeBraces);\n}\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\nfunction expand_(str, max, isTop) {\n /** @type {string[]} */\n const expansions = [];\n const m = balanced('{', '}', str);\n if (!m)\n return [str];\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n const pre = m.pre;\n const post = m.post.length ? expand_(m.post, max, false) : [''];\n if (/\\$$/.test(m.pre)) {\n for (let k = 0; k < post.length && k < max; k++) {\n const expansion = pre + '{' + m.body + '}' + post[k];\n expansions.push(expansion);\n }\n }\n else {\n const isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n const isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n const isSequence = isNumericSequence || isAlphaSequence;\n const isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,(?!,).*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand_(str, max, true);\n }\n return [str];\n }\n let n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n }\n else {\n n = parseCommaParts(m.body);\n if (n.length === 1 && n[0] !== undefined) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand_(n[0], max, false).map(embrace);\n //XXX is this necessary? Can't seem to hit it in tests.\n /* c8 ignore start */\n if (n.length === 1) {\n return post.map(p => m.pre + n[0] + p);\n }\n /* c8 ignore stop */\n }\n }\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n let N;\n if (isSequence && n[0] !== undefined && n[1] !== undefined) {\n const x = numeric(n[0]);\n const y = numeric(n[1]);\n const width = Math.max(n[0].length, n[1].length);\n let incr = n.length === 3 && n[2] !== undefined ?\n Math.max(Math.abs(numeric(n[2])), 1)\n : 1;\n let test = lte;\n const reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n const pad = n.some(isPadded);\n N = [];\n for (let i = x; test(i, y); i += incr) {\n let c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\') {\n c = '';\n }\n }\n else {\n c = String(i);\n if (pad) {\n const need = width - c.length;\n if (need > 0) {\n const z = new Array(need + 1).join('0');\n if (i < 0) {\n c = '-' + z + c.slice(1);\n }\n else {\n c = z + c;\n }\n }\n }\n }\n N.push(c);\n }\n }\n else {\n N = [];\n for (let j = 0; j < n.length; j++) {\n N.push.apply(N, expand_(n[j], max, false));\n }\n }\n for (let j = 0; j < N.length; j++) {\n for (let k = 0; k < post.length && expansions.length < max; k++) {\n const expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion) {\n expansions.push(expansion);\n }\n }\n }\n }\n return expansions;\n}\n//# sourceMappingURL=index.js.map"],"x_google_ignoreList":[0],"mappings":"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"}