@atlashub/smartstack-cli 2.7.0 → 2.7.2
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/index.js +70 -13
- package/dist/index.js.map +1 -1
- package/dist/mcp-entry.mjs +12 -10
- package/dist/mcp-entry.mjs.map +1 -1
- package/package.json +2 -2
- package/templates/agents/ba-writer.md +180 -11
- package/templates/skills/business-analyse/_shared.md +19 -5
- package/templates/skills/business-analyse/schemas/sections/specification-schema.json +43 -1
- package/templates/skills/business-analyse/schemas/shared/common-defs.json +96 -3
- package/templates/skills/business-analyse/steps/step-00-init.md +48 -0
- package/templates/skills/business-analyse/steps/step-01-cadrage.md +75 -7
- package/templates/skills/business-analyse/steps/step-02-decomposition.md +21 -10
- package/templates/skills/business-analyse/steps/step-03-specify.md +702 -93
- package/templates/skills/business-analyse/steps/step-04-consolidation.md +169 -4
- package/templates/skills/business-analyse/steps/step-05-handoff.md +24 -0
package/dist/index.js
CHANGED
|
@@ -117947,6 +117947,7 @@ var openPattern = /\\{/g;
|
|
|
117947
117947
|
var closePattern = /\\}/g;
|
|
117948
117948
|
var commaPattern = /\\,/g;
|
|
117949
117949
|
var periodPattern = /\\./g;
|
|
117950
|
+
var EXPANSION_MAX = 1e5;
|
|
117950
117951
|
function numeric(str) {
|
|
117951
117952
|
return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);
|
|
117952
117953
|
}
|
|
@@ -117977,14 +117978,15 @@ function parseCommaParts(str) {
|
|
|
117977
117978
|
parts.push.apply(parts, p);
|
|
117978
117979
|
return parts;
|
|
117979
117980
|
}
|
|
117980
|
-
function expand(str) {
|
|
117981
|
+
function expand(str, options = {}) {
|
|
117981
117982
|
if (!str) {
|
|
117982
117983
|
return [];
|
|
117983
117984
|
}
|
|
117985
|
+
const { max = EXPANSION_MAX } = options;
|
|
117984
117986
|
if (str.slice(0, 2) === "{}") {
|
|
117985
117987
|
str = "\\{\\}" + str.slice(2);
|
|
117986
117988
|
}
|
|
117987
|
-
return expand_(escapeBraces(str), true).map(unescapeBraces);
|
|
117989
|
+
return expand_(escapeBraces(str), max, true).map(unescapeBraces);
|
|
117988
117990
|
}
|
|
117989
117991
|
function embrace(str) {
|
|
117990
117992
|
return "{" + str + "}";
|
|
@@ -117998,15 +118000,15 @@ function lte(i, y) {
|
|
|
117998
118000
|
function gte(i, y) {
|
|
117999
118001
|
return i >= y;
|
|
118000
118002
|
}
|
|
118001
|
-
function expand_(str, isTop) {
|
|
118003
|
+
function expand_(str, max, isTop) {
|
|
118002
118004
|
const expansions = [];
|
|
118003
118005
|
const m = balanced("{", "}", str);
|
|
118004
118006
|
if (!m)
|
|
118005
118007
|
return [str];
|
|
118006
118008
|
const pre = m.pre;
|
|
118007
|
-
const post = m.post.length ? expand_(m.post, false) : [""];
|
|
118009
|
+
const post = m.post.length ? expand_(m.post, max, false) : [""];
|
|
118008
118010
|
if (/\$$/.test(m.pre)) {
|
|
118009
|
-
for (let k = 0; k < post.length; k++) {
|
|
118011
|
+
for (let k = 0; k < post.length && k < max; k++) {
|
|
118010
118012
|
const expansion = pre + "{" + m.body + "}" + post[k];
|
|
118011
118013
|
expansions.push(expansion);
|
|
118012
118014
|
}
|
|
@@ -118018,7 +118020,7 @@ function expand_(str, isTop) {
|
|
|
118018
118020
|
if (!isSequence && !isOptions) {
|
|
118019
118021
|
if (m.post.match(/,(?!,).*\}/)) {
|
|
118020
118022
|
str = m.pre + "{" + m.body + escClose + m.post;
|
|
118021
|
-
return expand_(str);
|
|
118023
|
+
return expand_(str, max, true);
|
|
118022
118024
|
}
|
|
118023
118025
|
return [str];
|
|
118024
118026
|
}
|
|
@@ -118028,7 +118030,7 @@ function expand_(str, isTop) {
|
|
|
118028
118030
|
} else {
|
|
118029
118031
|
n = parseCommaParts(m.body);
|
|
118030
118032
|
if (n.length === 1 && n[0] !== void 0) {
|
|
118031
|
-
n = expand_(n[0], false).map(embrace);
|
|
118033
|
+
n = expand_(n[0], max, false).map(embrace);
|
|
118032
118034
|
if (n.length === 1) {
|
|
118033
118035
|
return post.map((p) => m.pre + n[0] + p);
|
|
118034
118036
|
}
|
|
@@ -118074,11 +118076,11 @@ function expand_(str, isTop) {
|
|
|
118074
118076
|
} else {
|
|
118075
118077
|
N = [];
|
|
118076
118078
|
for (let j = 0; j < n.length; j++) {
|
|
118077
|
-
N.push.apply(N, expand_(n[j], false));
|
|
118079
|
+
N.push.apply(N, expand_(n[j], max, false));
|
|
118078
118080
|
}
|
|
118079
118081
|
}
|
|
118080
118082
|
for (let j = 0; j < N.length; j++) {
|
|
118081
|
-
for (let k = 0; k < post.length; k++) {
|
|
118083
|
+
for (let k = 0; k < post.length && expansions.length < max; k++) {
|
|
118082
118084
|
const expansion = pre + N[j] + post[k];
|
|
118083
118085
|
if (!isTop || isSequence || expansion) {
|
|
118084
118086
|
expansions.push(expansion);
|
|
@@ -125907,7 +125909,7 @@ function executeSqlCmd(server, database, query, sqlAuth) {
|
|
|
125907
125909
|
const sqlServer = server === "(local)" ? "." : server;
|
|
125908
125910
|
const authFlag = sqlAuth ? `-U "${sqlAuth.user}" -P "${sqlAuth.password}"` : "-E";
|
|
125909
125911
|
const cmd = `sqlcmd -S "${sqlServer}" -d "${database}" ${authFlag} -I -C -Q "${query.replace(/"/g, '\\"')}" -h -1 -W`;
|
|
125910
|
-
return (0, import_child_process8.execSync)(cmd, { encoding: "utf-8" }).trim();
|
|
125912
|
+
return (0, import_child_process8.execSync)(cmd, { encoding: "utf-8", timeout: 15e3 }).trim();
|
|
125911
125913
|
}
|
|
125912
125914
|
function isLoginFailure(error) {
|
|
125913
125915
|
const msg = error instanceof Error ? error.message : String(error);
|
|
@@ -126120,8 +126122,9 @@ adminCommand.command("reset").description("Reset the localAdmin account password
|
|
|
126120
126122
|
if (nativeDriver) {
|
|
126121
126123
|
try {
|
|
126122
126124
|
spinner.text = "Connecting with Windows Authentication...";
|
|
126125
|
+
const nativeServer = connInfo.server === "(local)" ? "localhost" : connInfo.server;
|
|
126123
126126
|
const nativeConfig = {
|
|
126124
|
-
server:
|
|
126127
|
+
server: nativeServer,
|
|
126125
126128
|
database: connInfo.database,
|
|
126126
126129
|
options: {
|
|
126127
126130
|
trustedConnection: true,
|
|
@@ -126130,7 +126133,12 @@ adminCommand.command("reset").description("Reset the localAdmin account password
|
|
|
126130
126133
|
connectionTimeout: 15e3,
|
|
126131
126134
|
requestTimeout: 15e3
|
|
126132
126135
|
};
|
|
126133
|
-
await
|
|
126136
|
+
await Promise.race([
|
|
126137
|
+
nativeDriver.connect(nativeConfig),
|
|
126138
|
+
new Promise(
|
|
126139
|
+
(_3, reject) => setTimeout(() => reject(new Error("Connection timeout (15s)")), 15e3)
|
|
126140
|
+
)
|
|
126141
|
+
]);
|
|
126134
126142
|
nativeConnected = true;
|
|
126135
126143
|
await resetViaMssql(nativeDriver);
|
|
126136
126144
|
} catch (nativeError) {
|
|
@@ -126502,7 +126510,56 @@ function extractPrd(moduleFeature, featureJsonPath, namespace) {
|
|
|
126502
126510
|
entity: r.entity,
|
|
126503
126511
|
permission: r.permission,
|
|
126504
126512
|
columns: r.columns,
|
|
126505
|
-
|
|
126513
|
+
columnDefs: r.columnDefs?.map((c) => ({
|
|
126514
|
+
field: c.field,
|
|
126515
|
+
format: c.format,
|
|
126516
|
+
sortable: c.sortable,
|
|
126517
|
+
filterable: c.filterable,
|
|
126518
|
+
clickAction: c.clickAction,
|
|
126519
|
+
colorMap: c.colorMap,
|
|
126520
|
+
aggregation: c.aggregation
|
|
126521
|
+
})),
|
|
126522
|
+
actions: r.actions,
|
|
126523
|
+
rowActions: r.rowActions?.map((a) => ({
|
|
126524
|
+
action: a.action,
|
|
126525
|
+
permission: a.permission,
|
|
126526
|
+
showWhen: a.showWhen,
|
|
126527
|
+
confirm: typeof a.confirm === "boolean" ? a.confirm : !!a.confirm
|
|
126528
|
+
})),
|
|
126529
|
+
defaultSort: r.defaultSort,
|
|
126530
|
+
fields: r.fields?.map((f) => ({
|
|
126531
|
+
name: f.name,
|
|
126532
|
+
component: f.component,
|
|
126533
|
+
source: f.source,
|
|
126534
|
+
required: f.required,
|
|
126535
|
+
validation: f.validation,
|
|
126536
|
+
visibleWhen: f.visibleWhen,
|
|
126537
|
+
computedValue: f.computedValue,
|
|
126538
|
+
readOnly: f.readOnly
|
|
126539
|
+
})),
|
|
126540
|
+
formLayout: r.formLayout ? {
|
|
126541
|
+
type: r.formLayout.type,
|
|
126542
|
+
tabs: r.formLayout.tabs?.map((t) => ({ code: t.code, fields: t.fields }))
|
|
126543
|
+
} : void 0
|
|
126544
|
+
}))
|
|
126545
|
+
})),
|
|
126546
|
+
lifeCycles: (specification?.lifeCycles ?? []).map((lc) => ({
|
|
126547
|
+
entity: lc.entity,
|
|
126548
|
+
field: lc.field,
|
|
126549
|
+
initialState: lc.initialState,
|
|
126550
|
+
states: lc.states.map((s) => ({
|
|
126551
|
+
id: s.id,
|
|
126552
|
+
color: s.color,
|
|
126553
|
+
allowedTransitions: s.allowedTransitions,
|
|
126554
|
+
isTerminal: s.isTerminal
|
|
126555
|
+
})),
|
|
126556
|
+
transitions: lc.transitions?.map((t) => ({
|
|
126557
|
+
from: t.from,
|
|
126558
|
+
to: t.to,
|
|
126559
|
+
action: t.action,
|
|
126560
|
+
permission: t.permission,
|
|
126561
|
+
guards: t.guards,
|
|
126562
|
+
confirm: t.confirm
|
|
126506
126563
|
}))
|
|
126507
126564
|
}))
|
|
126508
126565
|
},
|