ostacky 0.9.4 → 0.9.6
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/README.md +27 -25
- package/assets/agents/ostacky.md +3 -3
- package/assets/commands/install-stack.md +2 -2
- package/assets/mcp/ostacky-controller/index.js +80 -19
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/{auth-CVhIKulL.d.mts → auth--n_Yzytt.d.cts} +14 -9
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/{auth-CVhIKulL.d.mts.map → auth--n_Yzytt.d.cts.map} +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/{auth-CfDMXiII.cjs → auth-4-zilcqg.cjs} +3 -2
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/auth-4-zilcqg.cjs.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/{auth-CUe6YdwF.mjs → auth-CGP0BDVq.mjs} +3 -2
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/auth-CGP0BDVq.mjs.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/{auth-B2Q9_Vxp.d.cts → auth-YUQV3RRv.d.mts} +14 -9
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/{auth-B2Q9_Vxp.d.cts.map → auth-YUQV3RRv.d.mts.map} +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/index.cjs +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/index.d.cts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/index.d.mts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/index.mjs +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/internal.cjs +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/internal.d.cts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/internal.d.mts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/internal.mjs +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/package.json +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/README.md +3 -3
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{ajvProvider-CplOkyLC.mjs → ajvProvider-CEoC__sr.mjs} +483 -38
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/ajvProvider-CEoC__sr.mjs.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{ajvProvider-BdSo9BII.d.mts → ajvProvider-CgI-5L6O.d.mts} +25 -8
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{ajvProvider-BdSo9BII.d.mts.map → ajvProvider-CgI-5L6O.d.mts.map} +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{ajvProvider-B_4czhCS.d.cts → ajvProvider-FOQRM7up.d.cts} +24 -7
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{ajvProvider-B_4czhCS.d.cts.map → ajvProvider-FOQRM7up.d.cts.map} +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{ajvProvider-Brn-Q2J_.cjs → ajvProvider-ZaoO9afR.cjs} +483 -38
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/ajvProvider-ZaoO9afR.cjs.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{cfWorkerProvider-ojcZaap3.cjs → cfWorkerProvider-BwbPzsdI.cjs} +25 -15
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-BwbPzsdI.cjs.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{cfWorkerProvider-BYRW5af5.d.mts → cfWorkerProvider-C03CSigr.d.mts} +21 -6
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-C03CSigr.d.mts.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{cfWorkerProvider-D9GAttn8.d.cts → cfWorkerProvider-doTkZbTr.d.cts} +20 -5
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-doTkZbTr.d.cts.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{cfWorkerProvider-Bd-iTHAF.mjs → cfWorkerProvider-p3WaZPqB.mjs} +26 -15
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-p3WaZPqB.mjs.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{createMcpHandler-DzBzpE4_.d.cts → createMcpHandler-BLVe3qmU.d.cts} +137 -32
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-BLVe3qmU.d.cts.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{createMcpHandler-CEckaSEs.d.mts → createMcpHandler-Bt6U_Fqb.d.mts} +138 -33
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-Bt6U_Fqb.d.mts.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/dialects-D8eXzoGv.cjs +46 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/dialects-D8eXzoGv.cjs.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/dialects-DoSzNhcb.mjs +34 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/dialects-DoSzNhcb.mjs.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.cjs +209 -257
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.cjs.map +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.d.cts +45 -3
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.d.cts.map +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.d.mts +46 -4
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.d.mts.map +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.mjs +201 -252
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/index.mjs.map +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{mcp-DM1iHYFo.cjs → mcp-DUcCQSTW.cjs} +458 -35
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/mcp-DUcCQSTW.cjs.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{mcp-IJurDZVN.mjs → mcp-Dw2OlZ1f.mjs} +389 -32
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/mcp-Dw2OlZ1f.mjs.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.cjs +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.d.cts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.d.mts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.mjs +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsNode.cjs +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsNode.d.cts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsNode.d.mts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsNode.mjs +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.cjs +2 -2
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.d.cts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.d.mts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.mjs +2 -2
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{src-BX_fm-dB.cjs → src-CgFsfg3E.cjs} +161 -48
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/src-CgFsfg3E.cjs.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{src-D86MbS1I.mjs → src-D-y6h4N7.mjs} +161 -48
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/src-D-y6h4N7.mjs.map +1 -0
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.cjs +30 -3
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.cjs.map +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.d.cts +9 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.d.cts.map +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.d.mts +9 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.d.mts.map +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.mjs +30 -3
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/stdio.mjs.map +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{types-mS0yxCL0.d.mts → types-DUs7mGBv.d.mts} +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/{types-mS0yxCL0.d.mts.map → types-DUs7mGBv.d.mts.map} +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/ajv.cjs +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/ajv.d.cts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/ajv.d.mts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/ajv.mjs +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/cfWorker.cjs +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/cfWorker.d.cts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/cfWorker.d.mts +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/validators/cfWorker.mjs +1 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/package.json +4 -4
- package/assets/mcp/ostacky-controller/package.json +1 -1
- package/assets/plugins/ostacky-controller/index.ts +43 -8
- package/dist/cli.js +130 -74
- package/manifest.json +29 -29
- package/package.json +7 -2
- package/assets/mcp/openspec/bun.lock +0 -20
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/auth-CUe6YdwF.mjs.map +0 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/core/dist/auth-CfDMXiII.cjs.map +0 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/ajvProvider-Brn-Q2J_.cjs.map +0 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/ajvProvider-CplOkyLC.mjs.map +0 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-BYRW5af5.d.mts.map +0 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-Bd-iTHAF.mjs.map +0 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-D9GAttn8.d.cts.map +0 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-ojcZaap3.cjs.map +0 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-CEckaSEs.d.mts.map +0 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-DzBzpE4_.d.cts.map +0 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/mcp-DM1iHYFo.cjs.map +0 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/mcp-IJurDZVN.mjs.map +0 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/src-BX_fm-dB.cjs.map +0 -1
- package/assets/mcp/ostacky-controller/node_modules/@modelcontextprotocol/server/dist/src-D86MbS1I.mjs.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -244,21 +244,24 @@ function findProjectRoot(startDir = process.cwd()) {
|
|
|
244
244
|
if (out && existsSync(out))
|
|
245
245
|
return resolve(out);
|
|
246
246
|
} catch {}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
247
|
+
return resolve(startDir);
|
|
248
|
+
}
|
|
249
|
+
function isGitRepo(dir = process.cwd()) {
|
|
250
|
+
try {
|
|
251
|
+
const out = execFileSync("git", ["rev-parse", "--is-inside-work-tree"], {
|
|
252
|
+
encoding: "utf-8",
|
|
253
|
+
cwd: dir,
|
|
254
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
255
|
+
}).trim();
|
|
256
|
+
return out === "true";
|
|
257
|
+
} catch {
|
|
258
|
+
return false;
|
|
256
259
|
}
|
|
257
260
|
}
|
|
261
|
+
function initGitRepo(dir) {
|
|
262
|
+
execFileSync("git", ["init"], { cwd: dir, stdio: "pipe" });
|
|
263
|
+
}
|
|
258
264
|
function getOpenCodeDirForScope(scope, cwd = process.cwd()) {
|
|
259
|
-
const existing = findOpenCodeDir(cwd);
|
|
260
|
-
if (existing)
|
|
261
|
-
return existing;
|
|
262
265
|
return join(findProjectRoot(cwd), ".opencode");
|
|
263
266
|
}
|
|
264
267
|
function ensureOpenCodePaths(opencodeDir) {
|
|
@@ -621,31 +624,31 @@ var init_fs = __esm(() => {
|
|
|
621
624
|
var manifest_default;
|
|
622
625
|
var init_manifest = __esm(() => {
|
|
623
626
|
manifest_default = {
|
|
624
|
-
version: "0.9.
|
|
627
|
+
version: "0.9.6",
|
|
625
628
|
repo: "JaimeHoracio/Ostacky",
|
|
626
|
-
tag: "v0.9.
|
|
629
|
+
tag: "v0.9.6",
|
|
627
630
|
agents: [
|
|
628
631
|
{
|
|
629
632
|
name: "ostacky",
|
|
630
633
|
file: "assets/agents/ostacky.md",
|
|
631
|
-
description: "Orquestador con recuperación automática (nunca se congela), ruteo por nivel de impacto, controller MCP con SDK oficial, edición segura con fallback inline, y delegación en OpenSpec + Superpowers. v0.9.
|
|
632
|
-
version: "0.9.
|
|
633
|
-
sha256: "
|
|
634
|
+
description: "Orquestador con recuperación automática (nunca se congela), ruteo por nivel de impacto, controller MCP con SDK oficial, edición segura con fallback inline, y delegación en OpenSpec + Superpowers. v0.9.6: prune de skills obsoletas, lastHandoff, getAvailableTransitions, consecutiveFailures real, mem_session_summary automático al cierre.",
|
|
635
|
+
version: "0.9.6",
|
|
636
|
+
sha256: "29e435104f6915905a85e15ca768a339c3e5b0898fc923ae147afb7c4f20a716"
|
|
634
637
|
}
|
|
635
638
|
],
|
|
636
639
|
commands: [
|
|
637
640
|
{
|
|
638
641
|
name: "install-stack",
|
|
639
642
|
file: "assets/commands/install-stack.md",
|
|
640
|
-
description: "Instala el stack tecnológico del proyecto (CodeGraph, skills, OpenSpec, Engram, controller plugin). v0.9.
|
|
641
|
-
version: "0.9.
|
|
642
|
-
sha256: "
|
|
643
|
+
description: "Instala el stack tecnológico del proyecto (CodeGraph, skills, OpenSpec, Engram, controller plugin). v0.9.6: controller plugin como alma hard-gate, Context7 removido del stack.",
|
|
644
|
+
version: "0.9.6",
|
|
645
|
+
sha256: "88da074ab02bef60bcaebd1fed9592ea13f95d245850ec9f2467cf69a7f2fc4c"
|
|
643
646
|
},
|
|
644
647
|
{
|
|
645
648
|
name: "opsx-sync",
|
|
646
649
|
file: "assets/commands/opsx-sync.md",
|
|
647
650
|
description: "Sincroniza delta specs del change activo sin inicializar CodeGraph si ya existe índice",
|
|
648
|
-
version: "0.9.
|
|
651
|
+
version: "0.9.6",
|
|
649
652
|
sha256: "fe0158478f2ca63b315037a85fc1632b77868532e319af6c7384285441767d64"
|
|
650
653
|
}
|
|
651
654
|
],
|
|
@@ -653,16 +656,16 @@ var init_manifest = __esm(() => {
|
|
|
653
656
|
{
|
|
654
657
|
name: "ostacky-controller",
|
|
655
658
|
file: "assets/mcp/ostacky-controller/",
|
|
656
|
-
description: "Máquina de estados persistida con @modelcontextprotocol/server SDK. v0.9.
|
|
657
|
-
version: "0.9.
|
|
658
|
-
sha256: "
|
|
659
|
+
description: "Máquina de estados persistida con @modelcontextprotocol/server SDK. v0.9.6: 22 tools (incluye set_handoff, get_handoff, clear_handoff, get_available_transitions funcional). Bugfixes: consecutiveFailures real, lastHandoff state, defaultChoice persistido. Robustez: degraded mode automático tras 3 fallos, persistence condicional para Nivel 0, prune de skills obsoletas.",
|
|
660
|
+
version: "0.9.6",
|
|
661
|
+
sha256: "6669c464c47a285a21f3eea6456487c92b725a40e7938ade5ecfff97e2537427"
|
|
659
662
|
},
|
|
660
663
|
{
|
|
661
664
|
name: "openspec",
|
|
662
665
|
file: "assets/mcp/openspec/",
|
|
663
666
|
description: "MCP server local para OpenSpec - proposal, apply, archive, sync de cambios",
|
|
664
|
-
version: "0.9.
|
|
665
|
-
sha256: "
|
|
667
|
+
version: "0.9.6",
|
|
668
|
+
sha256: "bdb283fe8ec2dfcba2ec4f38191f4039e58cd7ae12e44e66310783b42c827638"
|
|
666
669
|
}
|
|
667
670
|
],
|
|
668
671
|
skills: [
|
|
@@ -670,105 +673,105 @@ var init_manifest = __esm(() => {
|
|
|
670
673
|
name: "brainstorming",
|
|
671
674
|
file: "assets/skills/brainstorming/SKILL.md",
|
|
672
675
|
description: "Skill unificado de pensamiento con dos modos: creative-design (producción de diseño → transición a implementación directa o openspec-propose) y open-exploration (exploración libre)",
|
|
673
|
-
version: "0.9.
|
|
676
|
+
version: "0.9.6",
|
|
674
677
|
sha256: "f1013a86a8f27914d85a716e23c7fd32db1786d93615e8b0834b13d184308549"
|
|
675
678
|
},
|
|
676
679
|
{
|
|
677
680
|
name: "execution-mode-evaluation",
|
|
678
681
|
file: "assets/skills/execution-mode-evaluation/SKILL.md",
|
|
679
682
|
description: "Skill de análisis de modo de ejecución — output reconciliado con controller snapshot contract (recommendation field)",
|
|
680
|
-
version: "0.9.
|
|
683
|
+
version: "0.9.6",
|
|
681
684
|
sha256: "2158a6864c0912e868a9d720db7fd79441e6cc298e3320833d2527c9727c852e"
|
|
682
685
|
},
|
|
683
686
|
{
|
|
684
687
|
name: "tdd",
|
|
685
688
|
file: "assets/skills/tdd/SKILL.md",
|
|
686
689
|
description: "Skill de test-driven development (Superpowers)",
|
|
687
|
-
version: "0.9.
|
|
690
|
+
version: "0.9.6",
|
|
688
691
|
sha256: "f0ebfbbc43a8868d31a3fd2df37ae7f60fe8add09c6475862395a68269e5ff7f"
|
|
689
692
|
},
|
|
690
693
|
{
|
|
691
694
|
name: "subagent-driven-development",
|
|
692
695
|
file: "assets/skills/subagent-driven-development/SKILL.md",
|
|
693
696
|
description: "Skill de ejecución con subagentes (Superpowers) — ejecuta solo después de confirmación del coordinador Ostacky",
|
|
694
|
-
version: "0.9.
|
|
697
|
+
version: "0.9.6",
|
|
695
698
|
sha256: "1a42d714a9a13faf05f0bf7b580e8d837c2e77a5633839542ccce603023419e8"
|
|
696
699
|
},
|
|
697
700
|
{
|
|
698
701
|
name: "dispatching-parallel-agents",
|
|
699
702
|
file: "assets/skills/dispatching-parallel-agents/SKILL.md",
|
|
700
703
|
description: "Skill de dispatch paralelo de agentes (Superpowers)",
|
|
701
|
-
version: "0.9.
|
|
704
|
+
version: "0.9.6",
|
|
702
705
|
sha256: "7e7b712ef742d5631e302e6a71583e2bbbd33094da9281abfb84b43505fc3ef1"
|
|
703
706
|
},
|
|
704
707
|
{
|
|
705
708
|
name: "review",
|
|
706
709
|
file: "assets/skills/review/SKILL.md",
|
|
707
710
|
description: "Skill de revisión de código (Superpowers)",
|
|
708
|
-
version: "0.9.
|
|
711
|
+
version: "0.9.6",
|
|
709
712
|
sha256: "b19650ed4d1d4d9857a4dd5b7e08e91328a1a1fc9c45bcc2fb600fa9d0213279"
|
|
710
713
|
},
|
|
711
714
|
{
|
|
712
715
|
name: "receiving-code-review",
|
|
713
716
|
file: "assets/skills/receiving-code-review/SKILL.md",
|
|
714
717
|
description: "Skill de recibir y procesar feedback de code review",
|
|
715
|
-
version: "0.9.
|
|
718
|
+
version: "0.9.6",
|
|
716
719
|
sha256: "d761e884e71d8d3476ac734d287cae403a4024506a7d12e7361a448217c0a831"
|
|
717
720
|
},
|
|
718
721
|
{
|
|
719
722
|
name: "openspec-propose",
|
|
720
723
|
file: "assets/skills/openspec-propose/SKILL.md",
|
|
721
724
|
description: "Skill de generación de proposal (OpenSpec)",
|
|
722
|
-
version: "0.9.
|
|
725
|
+
version: "0.9.6",
|
|
723
726
|
sha256: "6a517f750f24c008208156a2d653e97ed30b1e53878aeac5ce394e573db0678f"
|
|
724
727
|
},
|
|
725
728
|
{
|
|
726
729
|
name: "openspec-apply-change",
|
|
727
730
|
file: "assets/skills/openspec-apply-change/SKILL.md",
|
|
728
731
|
description: "Skill de aplicación de change (OpenSpec)",
|
|
729
|
-
version: "0.9.
|
|
732
|
+
version: "0.9.6",
|
|
730
733
|
sha256: "dfc823bf89fc7505e91ab6dee9c1f004be38a410bd3d88fb67b211b1b6cbb1d0"
|
|
731
734
|
},
|
|
732
735
|
{
|
|
733
736
|
name: "openspec-archive-change",
|
|
734
737
|
file: "assets/skills/openspec-archive-change/SKILL.md",
|
|
735
738
|
description: "Skill de archivo de change (OpenSpec)",
|
|
736
|
-
version: "0.9.
|
|
739
|
+
version: "0.9.6",
|
|
737
740
|
sha256: "16e4b561de7747283663fed602e506abf502452c49a8d4b86d7a5539c40f0195"
|
|
738
741
|
},
|
|
739
742
|
{
|
|
740
743
|
name: "openspec-explore",
|
|
741
744
|
file: "assets/skills/openspec-explore/SKILL.md",
|
|
742
745
|
description: "Modo explore para OpenSpec — thinking partner para explorar ideas, investigar problemas y clarificar requisitos antes/durante un cambio",
|
|
743
|
-
version: "0.9.
|
|
746
|
+
version: "0.9.6",
|
|
744
747
|
sha256: "9eafc3a8c693b8d9916867ef764d49e5222da717fde501c957bb3f6c312d2415"
|
|
745
748
|
},
|
|
746
749
|
{
|
|
747
750
|
name: "using-git-worktrees",
|
|
748
751
|
file: "assets/skills/using-git-worktrees/SKILL.md",
|
|
749
752
|
description: "Skill de uso de git worktrees para aislamiento de trabajo",
|
|
750
|
-
version: "0.9.
|
|
753
|
+
version: "0.9.6",
|
|
751
754
|
sha256: "93341bc1b7c053618a8b6dc07e3615b77990d7b549a0201f5835d95fef67ce13"
|
|
752
755
|
},
|
|
753
756
|
{
|
|
754
757
|
name: "using-superpowers",
|
|
755
758
|
file: "assets/skills/using-superpowers/SKILL.md",
|
|
756
759
|
description: "Skill de orquestación de Superpowers skills",
|
|
757
|
-
version: "0.9.
|
|
760
|
+
version: "0.9.6",
|
|
758
761
|
sha256: "7e54536f96d2a379185a10bfc1e970850caa2561b6d8aca7080f0defea0381a4"
|
|
759
762
|
},
|
|
760
763
|
{
|
|
761
764
|
name: "writing-skills",
|
|
762
765
|
file: "assets/skills/writing-skills/SKILL.md",
|
|
763
766
|
description: "Skill de creación y edición de skills",
|
|
764
|
-
version: "0.9.
|
|
767
|
+
version: "0.9.6",
|
|
765
768
|
sha256: "3d76b906cee518a2b809febb70db95697a35b9f368986bb504b4120c3bfb437a"
|
|
766
769
|
},
|
|
767
770
|
{
|
|
768
771
|
name: "graceful-degradation",
|
|
769
772
|
file: "assets/skills/graceful-degradation/SKILL.md",
|
|
770
773
|
description: "Skill de degradación graceful cuando múltiples tools están indisponibles",
|
|
771
|
-
version: "0.9.
|
|
774
|
+
version: "0.9.6",
|
|
772
775
|
sha256: "363449bd9e6f800a0a3168667cf78f767fb105d86e4a4adadcc649d418139303"
|
|
773
776
|
}
|
|
774
777
|
]
|
|
@@ -1118,10 +1121,10 @@ var init_config = __esm(() => {
|
|
|
1118
1121
|
|
|
1119
1122
|
// src/stack.ts
|
|
1120
1123
|
import { chmodSync, copyFileSync as copyFileSync3, existsSync as existsSync6, mkdirSync as mkdirSync4, rmSync as rmSync4, unlinkSync as unlinkSync3 } from "fs";
|
|
1121
|
-
import { basename as basename2, dirname as dirname5, join as join7, resolve as
|
|
1124
|
+
import { basename as basename2, dirname as dirname5, join as join7, resolve as resolve3 } from "path";
|
|
1122
1125
|
import { execFileSync as execFileSync3 } from "child_process";
|
|
1123
1126
|
function resolveToolInstallLocation(toolsDir) {
|
|
1124
|
-
const resolvedToolsDir =
|
|
1127
|
+
const resolvedToolsDir = resolve3(toolsDir ?? join7(findProjectRoot(), ".opencode", "tools"));
|
|
1125
1128
|
const possibleOpenCodeDir = dirname5(resolvedToolsDir);
|
|
1126
1129
|
return {
|
|
1127
1130
|
projectRoot: basename2(possibleOpenCodeDir) === ".opencode" ? dirname5(possibleOpenCodeDir) : findProjectRoot(),
|
|
@@ -1288,11 +1291,15 @@ async function installCodeGraph(toolsDir) {
|
|
|
1288
1291
|
return failAfterExtraction(`CodeGraph fue extraído pero no se puede ejecutar: ${error.message}`);
|
|
1289
1292
|
}
|
|
1290
1293
|
let indexWarning = null;
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
}
|
|
1294
|
-
|
|
1295
|
-
|
|
1294
|
+
if (!isGitRepo(projectRoot)) {
|
|
1295
|
+
indexWarning = `Sin repo git en ${projectRoot}: índice pendiente. ` + `Ejecutá \`git init\` y reintentá con \`npx ostacky install-stack --scope local\`. ` + `El binario y el MCP quedaron configurados.`;
|
|
1296
|
+
} else {
|
|
1297
|
+
try {
|
|
1298
|
+
runTool(localBin, ["init", "-i"], projectRoot, 120000);
|
|
1299
|
+
} catch (error) {
|
|
1300
|
+
const msg = error.message;
|
|
1301
|
+
indexWarning = `El índice no se pudo inicializar todavía: ${msg}. Sugerencia: ejecutá manualmente \`${localBin} init -i\` en ${projectRoot} o \`npx ostacky install-stack --scope local\` para reintentar. Si el path del binario (${localBin}) apunta a ${cgToolDir} y esperabas otro proyecto, verificá que corriste el comando dentro del proyecto correcto (con .git) y con --scope local.`;
|
|
1302
|
+
}
|
|
1296
1303
|
}
|
|
1297
1304
|
try {
|
|
1298
1305
|
configureLocalTool(projectRoot, "codegraph", buildLocalMcpCommand(localBin, ["serve", "--mcp"]));
|
|
@@ -1674,7 +1681,7 @@ var init_doctor_v2 = __esm(() => {
|
|
|
1674
1681
|
// package.json
|
|
1675
1682
|
var package_default = {
|
|
1676
1683
|
name: "ostacky",
|
|
1677
|
-
version: "0.9.
|
|
1684
|
+
version: "0.9.6",
|
|
1678
1685
|
description: "Instalador interactivo de agentes y comandos para OpenCode",
|
|
1679
1686
|
type: "module",
|
|
1680
1687
|
bin: {
|
|
@@ -1685,7 +1692,12 @@ var package_default = {
|
|
|
1685
1692
|
dev: "bun run src/cli.ts",
|
|
1686
1693
|
build: "bun build src/cli.ts --target=node --format=esm --outfile dist/cli.js && bun scripts/add-shebang.ts",
|
|
1687
1694
|
start: "node dist/cli.js",
|
|
1688
|
-
test: "bun test",
|
|
1695
|
+
test: "bun test --isolate",
|
|
1696
|
+
"test:safe": "bun run scripts/run-tests-isolated.ts",
|
|
1697
|
+
"check:skills": "bun run scripts/check-skill-sync.ts",
|
|
1698
|
+
"hash:check": "bun run scripts/update-manifest-hashes.ts --check",
|
|
1699
|
+
"hash:update": "bun run scripts/update-manifest-hashes.ts",
|
|
1700
|
+
prepublishOnly: "bun run build",
|
|
1689
1701
|
update: "bun run scripts/check-skill-sync.ts && bun run scripts/sync-controller-core.ts && bun run scripts/update-manifest-hashes.ts"
|
|
1690
1702
|
},
|
|
1691
1703
|
files: [
|
|
@@ -2670,6 +2682,7 @@ import { dirname as dirname7 } from "path";
|
|
|
2670
2682
|
init_github();
|
|
2671
2683
|
init_fs();
|
|
2672
2684
|
init_lockfile();
|
|
2685
|
+
import { resolve as resolve2 } from "path";
|
|
2673
2686
|
|
|
2674
2687
|
// src/installer.ts
|
|
2675
2688
|
init_github();
|
|
@@ -2847,7 +2860,7 @@ async function probeMcpServer(nodeExecutable, serverPath, cwd, statePath, option
|
|
|
2847
2860
|
params: {
|
|
2848
2861
|
protocolVersion: "2025-03-26",
|
|
2849
2862
|
capabilities: {},
|
|
2850
|
-
clientInfo: { name: "ostacky-installer", version: "0.9.
|
|
2863
|
+
clientInfo: { name: "ostacky-installer", version: "0.9.6" }
|
|
2851
2864
|
}
|
|
2852
2865
|
});
|
|
2853
2866
|
});
|
|
@@ -3204,6 +3217,28 @@ function onCancel(value) {
|
|
|
3204
3217
|
process.exit(0);
|
|
3205
3218
|
}
|
|
3206
3219
|
}
|
|
3220
|
+
async function runGitPreflight(cwd = process.cwd(), opts) {
|
|
3221
|
+
if (isGitRepo(cwd))
|
|
3222
|
+
return { projectRoot: findProjectRoot(cwd), gitReady: true };
|
|
3223
|
+
const interactive = opts?.interactive ?? process.stdin.isTTY === true;
|
|
3224
|
+
if (interactive) {
|
|
3225
|
+
const ask = opts?.confirm ?? (() => me({ message: `No hay repo Git en ${cwd}. ¿Inicializar uno? (recomendado para aislamiento por worktree)` }));
|
|
3226
|
+
let answer = false;
|
|
3227
|
+
try {
|
|
3228
|
+
answer = await ask();
|
|
3229
|
+
} catch {
|
|
3230
|
+
answer = false;
|
|
3231
|
+
}
|
|
3232
|
+
if (answer === true) {
|
|
3233
|
+
try {
|
|
3234
|
+
initGitRepo(cwd);
|
|
3235
|
+
return { projectRoot: findProjectRoot(cwd), gitReady: true };
|
|
3236
|
+
} catch {}
|
|
3237
|
+
}
|
|
3238
|
+
}
|
|
3239
|
+
v2.warn("Sin repo Git: aislamiento por worktree no disponible; se instala en el directorio actual.");
|
|
3240
|
+
return { projectRoot: resolve2(cwd), gitReady: false };
|
|
3241
|
+
}
|
|
3207
3242
|
async function loadManifest() {
|
|
3208
3243
|
const spin = L2();
|
|
3209
3244
|
spin.start("Obteniendo recursos disponibles...");
|
|
@@ -3226,16 +3261,17 @@ function printPostInstallSteps() {
|
|
|
3226
3261
|
ye([
|
|
3227
3262
|
"Cerrá y reiniciá OpenCode si ya estaba corriendo (los MCP no recargan su config en caliente):",
|
|
3228
3263
|
" TUI → opencode",
|
|
3229
|
-
" Web → opencode
|
|
3264
|
+
" Web → opencode pair (abrí el link/QR en el navegador)",
|
|
3230
3265
|
"Seleccioná el agente: `/agents` → `ostacky` (o Shift+Tab / Ctrl+X A)",
|
|
3231
3266
|
"Skills bundleadas en .opencode/skills/ — revisá cuáles activás",
|
|
3232
3267
|
"¿Errores en el stack? Ejecutá /install-stack desde el chat de OpenCode"
|
|
3233
3268
|
].join(`
|
|
3234
3269
|
`), "Próximos pasos");
|
|
3235
3270
|
}
|
|
3236
|
-
async function resolveOpenCodePaths(scope) {
|
|
3271
|
+
async function resolveOpenCodePaths(scope, opts) {
|
|
3237
3272
|
const cwd = process.cwd();
|
|
3238
|
-
const
|
|
3273
|
+
const base = opts?.gitPreflight ? (await runGitPreflight(cwd)).projectRoot : cwd;
|
|
3274
|
+
const dir = getOpenCodeDirForScope("local", base);
|
|
3239
3275
|
if (scope && scope !== "local") {
|
|
3240
3276
|
v2.warn(`Scope ${scope} removido; usando local en ${dir}`);
|
|
3241
3277
|
}
|
|
@@ -3372,11 +3408,13 @@ async function doInstallStack(toolsDir, projectRoot) {
|
|
|
3372
3408
|
} catch {}
|
|
3373
3409
|
return allOk;
|
|
3374
3410
|
}
|
|
3375
|
-
async function doInstallAll(manifest, paths) {
|
|
3411
|
+
async function doInstallAll(manifest, paths, opts) {
|
|
3376
3412
|
const spin = L2();
|
|
3377
3413
|
let errors = 0;
|
|
3378
3414
|
v2.info(`Scope → local | opencodeDir: ${paths.root} | tools: ${paths.tools}`);
|
|
3379
|
-
|
|
3415
|
+
if (!opts?.noStack) {
|
|
3416
|
+
ensureToolDirs(paths.tools, ["codegraph", "engram"]);
|
|
3417
|
+
}
|
|
3380
3418
|
for (const agent of manifest.agents) {
|
|
3381
3419
|
spin.start(`Descargando agente: ${agent.name} (${agent.version})`);
|
|
3382
3420
|
try {
|
|
@@ -3452,24 +3490,37 @@ async function doInstallAll(manifest, paths) {
|
|
|
3452
3490
|
} catch {}
|
|
3453
3491
|
let stackOk = true;
|
|
3454
3492
|
let missingTools = [];
|
|
3455
|
-
|
|
3456
|
-
|
|
3457
|
-
|
|
3458
|
-
|
|
3493
|
+
if (opts?.noStack) {
|
|
3494
|
+
v2.info("Stack omitido (--no-stack): solo núcleo (agente/commands/skills/MCPs/plugins).");
|
|
3495
|
+
} else {
|
|
3496
|
+
v2.info("Instalando stack de herramientas...");
|
|
3497
|
+
stackOk = await doInstallStack(paths.tools, dirname6(paths.root));
|
|
3498
|
+
if (!stackOk)
|
|
3499
|
+
errors++;
|
|
3500
|
+
}
|
|
3459
3501
|
const codegraphDir = join8(paths.tools, "codegraph");
|
|
3460
3502
|
const engramDir = join8(paths.tools, "engram");
|
|
3461
|
-
if (!
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3503
|
+
if (!opts?.noStack) {
|
|
3504
|
+
if (!existsSync7(codegraphDir) || !findBinaryInDir(codegraphDir, "codegraph"))
|
|
3505
|
+
missingTools.push("CodeGraph");
|
|
3506
|
+
if (!existsSync7(engramDir) || !findBinaryInDir(engramDir, "engram"))
|
|
3507
|
+
missingTools.push("Engram");
|
|
3508
|
+
}
|
|
3465
3509
|
if (missingTools.length > 0) {
|
|
3466
3510
|
v2.warn(`Faltan herramientas del stack: ${missingTools.join(", ")}.
|
|
3467
3511
|
` + "Ejecutá `/install-stack` desde el agente para instalarlas manualmente.");
|
|
3468
3512
|
}
|
|
3469
|
-
|
|
3513
|
+
const coreOk = errors === 0;
|
|
3514
|
+
const stackPartial = !stackOk || missingTools.length > 0;
|
|
3515
|
+
if (coreOk && !stackPartial) {
|
|
3470
3516
|
v2.success("Todo instalado correctamente.");
|
|
3517
|
+
} else if (coreOk) {
|
|
3518
|
+
const missing = missingTools.length > 0 ? ` Faltan: ${missingTools.join(", ")}.` : "";
|
|
3519
|
+
v2.warn(`Núcleo OK (agente/commands/skills/MCPs instalados). Stack parcial.${missing} ` + `Revisá los mensajes de error arriba y reintentá con \`npx ostacky install-stack --scope local\`.`);
|
|
3471
3520
|
} else {
|
|
3472
|
-
v2.warn(`
|
|
3521
|
+
v2.warn(`Núcleo con errores: ${errors} componente(s) requieren atención. Revisá los mensajes de error arriba.`);
|
|
3522
|
+
if (stackPartial)
|
|
3523
|
+
v2.warn("Además el stack quedó parcial: reintentá con `npx ostacky install-stack --scope local`.");
|
|
3473
3524
|
}
|
|
3474
3525
|
try {
|
|
3475
3526
|
const projectRoot = dirname6(paths.root);
|
|
@@ -3479,7 +3530,7 @@ async function doInstallAll(manifest, paths) {
|
|
|
3479
3530
|
else if (gi.updated)
|
|
3480
3531
|
v2.info(`.gitignore actualizado: ${gi.patternsAdded.join(", ")}`);
|
|
3481
3532
|
} catch {}
|
|
3482
|
-
return
|
|
3533
|
+
return coreOk && !stackPartial;
|
|
3483
3534
|
}
|
|
3484
3535
|
|
|
3485
3536
|
// src/prompts/add.ts
|
|
@@ -4126,7 +4177,7 @@ async function runInteractiveMenu(scope) {
|
|
|
4126
4177
|
we(" OpenCode Installer ");
|
|
4127
4178
|
await ensureOpencodeInstalled();
|
|
4128
4179
|
const manifest = await loadManifest();
|
|
4129
|
-
const paths = await resolveOpenCodePaths(scope ?? null);
|
|
4180
|
+
const paths = await resolveOpenCodePaths(scope ?? null, { gitPreflight: true });
|
|
4130
4181
|
if (!paths) {
|
|
4131
4182
|
fe("Instalación cancelada.");
|
|
4132
4183
|
return;
|
|
@@ -4196,16 +4247,16 @@ async function runInteractiveMenu(scope) {
|
|
|
4196
4247
|
break;
|
|
4197
4248
|
}
|
|
4198
4249
|
}
|
|
4199
|
-
async function runInstallCommand(scope) {
|
|
4250
|
+
async function runInstallCommand(scope, opts) {
|
|
4200
4251
|
we(" OpenCode Installer ");
|
|
4201
4252
|
await ensureOpencodeInstalled();
|
|
4202
4253
|
const manifest = await loadManifest();
|
|
4203
|
-
const paths = await resolveOpenCodePaths(scope ?? null);
|
|
4254
|
+
const paths = await resolveOpenCodePaths(scope ?? null, { gitPreflight: true });
|
|
4204
4255
|
if (!paths) {
|
|
4205
4256
|
fe("Cancelado.");
|
|
4206
4257
|
return;
|
|
4207
4258
|
}
|
|
4208
|
-
if (!await doInstallAll(manifest, paths))
|
|
4259
|
+
if (!await doInstallAll(manifest, paths, opts))
|
|
4209
4260
|
process.exitCode = 1;
|
|
4210
4261
|
printPostInstallSteps();
|
|
4211
4262
|
fe(process.exitCode ? "Instalación parcial." : "Instalación completada.");
|
|
@@ -4265,7 +4316,7 @@ async function runAddMcpCommand(scope) {
|
|
|
4265
4316
|
async function runInstallStackCommand(scope) {
|
|
4266
4317
|
await ensureOpencodeInstalled();
|
|
4267
4318
|
we(" OpenCode Installer — Stack ");
|
|
4268
|
-
const paths = await resolveOpenCodePaths(scope ?? null);
|
|
4319
|
+
const paths = await resolveOpenCodePaths(scope ?? null, { gitPreflight: true });
|
|
4269
4320
|
if (!paths) {
|
|
4270
4321
|
fe("Cancelado.");
|
|
4271
4322
|
return;
|
|
@@ -4472,7 +4523,7 @@ ostacky — Instalador de agentes, comandos, skills y MCPs para OpenCode
|
|
|
4472
4523
|
|
|
4473
4524
|
Uso:
|
|
4474
4525
|
npx ostacky [--scope local] Menú interactivo (instalación completa, siempre local)
|
|
4475
|
-
npx ostacky install [--scope local]
|
|
4526
|
+
npx ostacky install [--scope local] [--no-stack] Instalar TODO (agente + skills + MCPs + CodeGraph + OpenSpec + Engram; --no-stack omite el stack)
|
|
4476
4527
|
npx ostacky add agent [--scope local] Agregar agente(s)
|
|
4477
4528
|
npx ostacky add command [--scope local] Agregar command(s)
|
|
4478
4529
|
npx ostacky add skill [--scope local] Agregar skill(s)
|
|
@@ -4515,6 +4566,10 @@ function parseScopeArg(argv = process.argv) {
|
|
|
4515
4566
|
process.exit(1);
|
|
4516
4567
|
}
|
|
4517
4568
|
}
|
|
4569
|
+
if (arg === "-g") {
|
|
4570
|
+
console.error(`Error: -g/global removido; Ostacky instala siempre local en <proyecto>/.opencode. Hacé cd al proyecto y re-ejecutá sin -g.`);
|
|
4571
|
+
process.exit(1);
|
|
4572
|
+
}
|
|
4518
4573
|
}
|
|
4519
4574
|
return null;
|
|
4520
4575
|
}
|
|
@@ -4534,6 +4589,7 @@ function withoutScopeArgs(argv) {
|
|
|
4534
4589
|
}
|
|
4535
4590
|
var scope = parseScopeArg();
|
|
4536
4591
|
var argvNoScope = withoutScopeArgs(process.argv);
|
|
4592
|
+
var noStack = process.argv.includes("--no-stack");
|
|
4537
4593
|
var [, , cmd, subcmd] = argvNoScope;
|
|
4538
4594
|
async function runDoctorCommand() {
|
|
4539
4595
|
const cwd = process.cwd();
|
|
@@ -4869,7 +4925,7 @@ async function main() {
|
|
|
4869
4925
|
}
|
|
4870
4926
|
switch (cmd) {
|
|
4871
4927
|
case "install":
|
|
4872
|
-
await runInstallCommand(scope);
|
|
4928
|
+
await runInstallCommand(scope, { noStack });
|
|
4873
4929
|
break;
|
|
4874
4930
|
case "install-stack":
|
|
4875
4931
|
await runInstallStackCommand(scope);
|