superacli 1.1.0 → 1.1.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/.beads/.br_history/issues.20260308_235202_180577215.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235202_387414163.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235202_564422794.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235202_742600597.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235208_133360069.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235505_473406307.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235505_662360489.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235505_843935624.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235506_044530221.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_002618_115728731.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_003748_878174586.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_004057_868755623.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_004058_512842163.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_004058_994445226.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_004059_475988596.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_161902_566857851.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_170512_277017739.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_170512_477876921.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_170512_664382701.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_170512_859400333.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_212326_082771164.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_212326_245619716.jsonl +58 -0
- package/.beads/.br_history/issues.20260309_212326_403198317.jsonl +59 -0
- package/.beads/.br_history/issues.20260309_212332_539197678.jsonl +60 -0
- package/.beads/.br_history/issues.20260309_212332_731373599.jsonl +60 -0
- package/.beads/.br_history/issues.20260309_212332_928710953.jsonl +60 -0
- package/.beads/.br_history/issues.20260309_213021_341505240.jsonl +60 -0
- package/.beads/.br_history/issues.20260309_213022_023136934.jsonl +60 -0
- package/.beads/.br_history/issues.20260309_213022_400050719.jsonl +60 -0
- package/.beads/issues.jsonl +20 -17
- package/README.md +1 -1
- package/__tests__/adapter-schema.test.js +3 -0
- package/__tests__/aws-plugin.test.js +84 -0
- package/__tests__/az-plugin.test.js +84 -0
- package/__tests__/builtin-adapter.test.js +29 -0
- package/__tests__/cline-plugin.test.js +109 -0
- package/__tests__/cline-skill.test.js +49 -0
- package/__tests__/docker-plugin.test.js +3 -1
- package/__tests__/eza-plugin.test.js +81 -0
- package/__tests__/gcloud-plugin.test.js +86 -0
- package/__tests__/gh-plugin.test.js +86 -0
- package/__tests__/helm-plugin.test.js +81 -0
- package/__tests__/http-adapter.test.js +118 -0
- package/__tests__/just-plugin.test.js +82 -0
- package/__tests__/kubectl-plugin.test.js +83 -0
- package/__tests__/linear-plugin.test.js +81 -0
- package/__tests__/mcp-adapter.test.js +187 -0
- package/__tests__/nextest-plugin.test.js +82 -0
- package/__tests__/npm-plugin.test.js +81 -0
- package/__tests__/nullclaw-plugin.test.js +157 -0
- package/__tests__/openapi-adapter.test.js +199 -0
- package/__tests__/plugin-agency-agents.test.js +6 -6
- package/__tests__/plugin-nullclaw.test.js +78 -0
- package/__tests__/plugin-visual-explainer.test.js +62 -0
- package/__tests__/plugins-manager.test.js +59 -10
- package/__tests__/pnpm-plugin.test.js +81 -0
- package/__tests__/poetry-plugin.test.js +83 -0
- package/__tests__/process-adapter.test.js +124 -90
- package/__tests__/pulumi-plugin.test.js +81 -0
- package/__tests__/railway-plugin.test.js +84 -0
- package/__tests__/server-app.test.js +67 -0
- package/__tests__/server-config-service.test.js +79 -0
- package/__tests__/server-routes-ask.test.js +89 -0
- package/__tests__/server-routes-commands.test.js +55 -0
- package/__tests__/server-routes-config.test.js +87 -0
- package/__tests__/server-routes-jobs.test.js +53 -0
- package/__tests__/server-routes-misc.test.js +112 -0
- package/__tests__/server-storage-adapter.test.js +40 -0
- package/__tests__/server-storage-file.test.js +73 -0
- package/__tests__/server-storage-mongo.test.js +74 -0
- package/__tests__/shell-adapter.test.js +81 -22
- package/__tests__/stripe-plugin.test.js +3 -1
- package/__tests__/supabase-plugin.test.js +86 -0
- package/__tests__/terraform-plugin.test.js +83 -0
- package/__tests__/uv-plugin.test.js +81 -0
- package/__tests__/vercel-plugin.test.js +81 -0
- package/__tests__/watchexec-plugin.test.js +80 -0
- package/cli/adapter-schema.js +5 -0
- package/cli/adapters/process.js +53 -2
- package/cli/plugin-install-guidance.js +320 -0
- package/cli/plugins-manager.js +272 -212
- package/cli/skills.js +16 -5
- package/cli/supercli.js +26 -2
- package/docs/plugins.md +2 -0
- package/docs/skills/cline-non-interactive/SKILL.md +59 -0
- package/docs/skills-catalog.md +35 -0
- package/docs/visual-overview.md +21 -0
- package/jest.config.js +4 -1
- package/package.json +4 -3
- package/plugins/agency-agents/plugin.json +5 -0
- package/{cli/plugin-agency-agents.js → plugins/agency-agents/scripts/post-install.js} +13 -3
- package/plugins/aws/README.md +46 -0
- package/plugins/aws/plugin.json +42 -0
- package/plugins/az/README.md +46 -0
- package/plugins/az/plugin.json +42 -0
- package/plugins/clickup/plugin.json +38 -0
- package/plugins/clickup/scripts/post-install.js +107 -0
- package/plugins/clickup/scripts/post-uninstall.js +30 -0
- package/plugins/cline/README.md +48 -0
- package/plugins/cline/plugin.json +92 -0
- package/plugins/eza/README.md +40 -0
- package/plugins/eza/plugin.json +42 -0
- package/plugins/gcloud/README.md +46 -0
- package/plugins/gcloud/plugin.json +42 -0
- package/plugins/gh/README.md +46 -0
- package/plugins/gh/plugin.json +43 -0
- package/plugins/helm/README.md +42 -0
- package/plugins/helm/plugin.json +42 -0
- package/plugins/just/README.md +42 -0
- package/plugins/just/plugin.json +42 -0
- package/plugins/kubectl/README.md +46 -0
- package/plugins/kubectl/plugin.json +42 -0
- package/plugins/linear/README.md +60 -0
- package/plugins/linear/plugin.json +42 -0
- package/plugins/nextest/README.md +42 -0
- package/plugins/nextest/plugin.json +42 -0
- package/plugins/npm/README.md +46 -0
- package/plugins/npm/plugin.json +42 -0
- package/plugins/nullclaw/README.md +45 -0
- package/plugins/nullclaw/plugin.json +64 -0
- package/plugins/nullclaw/scripts/post-install.js +189 -0
- package/plugins/nullclaw/scripts/post-uninstall.js +25 -0
- package/plugins/openfang/plugin.json +37 -0
- package/plugins/openfang/scripts/post-install.js +163 -0
- package/plugins/openfang/scripts/post-uninstall.js +30 -0
- package/plugins/plugins.json +234 -0
- package/plugins/pnpm/README.md +46 -0
- package/plugins/pnpm/plugin.json +42 -0
- package/plugins/poetry/README.md +46 -0
- package/plugins/poetry/plugin.json +42 -0
- package/plugins/pulumi/README.md +46 -0
- package/plugins/pulumi/plugin.json +42 -0
- package/plugins/railway/README.md +58 -0
- package/plugins/railway/plugin.json +43 -0
- package/plugins/supabase/README.md +55 -0
- package/plugins/supabase/plugin.json +42 -0
- package/plugins/superpowers/plugin.json +22 -0
- package/plugins/superpowers/scripts/post-install.js +124 -0
- package/plugins/superpowers/scripts/post-uninstall.js +30 -0
- package/plugins/terraform/README.md +46 -0
- package/plugins/terraform/plugin.json +42 -0
- package/plugins/uv/README.md +46 -0
- package/plugins/uv/plugin.json +42 -0
- package/plugins/vercel/README.md +47 -0
- package/plugins/vercel/plugin.json +42 -0
- package/plugins/visual-explainer/plugin.json +15 -0
- package/plugins/visual-explainer/scripts/post-install.js +111 -0
- package/plugins/watchexec/README.md +40 -0
- package/plugins/watchexec/plugin.json +42 -0
- package/tests/test-aws-smoke.sh +56 -0
- package/tests/test-az-smoke.sh +56 -0
- package/tests/test-cline-smoke.sh +37 -0
- package/tests/test-eza-smoke.sh +33 -0
- package/tests/test-gcloud-smoke.sh +56 -0
- package/tests/test-gh-smoke.sh +56 -0
- package/tests/test-helm-smoke.sh +33 -0
- package/tests/test-just-smoke.sh +40 -0
- package/tests/test-kubectl-smoke.sh +37 -0
- package/tests/test-linear-smoke.sh +97 -0
- package/tests/test-nextest-smoke.sh +33 -0
- package/tests/test-npm-smoke.sh +32 -0
- package/tests/test-nullclaw-smoke.sh +51 -0
- package/tests/test-plugins-registry.js +110 -0
- package/tests/test-pnpm-smoke.sh +33 -0
- package/tests/test-poetry-smoke.sh +33 -0
- package/tests/test-pulumi-smoke.sh +33 -0
- package/tests/test-railway-smoke.sh +95 -0
- package/tests/test-supabase-smoke.sh +95 -0
- package/tests/test-terraform-smoke.sh +33 -0
- package/tests/test-uv-smoke.sh +33 -0
- package/tests/test-vercel-smoke.sh +55 -0
- package/tests/test-watchexec-smoke.sh +33 -0
- package/.beads/.br_history/issues.20260308_180927_477542428.jsonl +0 -12
- package/.beads/.br_history/issues.20260308_181032_020230108.jsonl +0 -12
- package/.beads/.br_history/issues.20260308_181032_180539413.jsonl +0 -12
- package/.beads/.br_history/issues.20260308_181032_372621506.jsonl +0 -12
- package/.beads/.br_history/issues.20260308_181032_565142225.jsonl +0 -12
- package/.beads/.br_history/issues.20260308_181311_336346464.jsonl +0 -12
- package/.beads/.br_history/issues.20260308_181444_039234498.jsonl +0 -13
- package/.beads/.br_history/issues.20260308_181503_794764403.jsonl +0 -13
- package/.beads/.br_history/issues.20260308_181503_950163105.jsonl +0 -13
- package/.beads/.br_history/issues.20260308_192031_852553505.jsonl +0 -13
- package/.beads/.br_history/issues.20260308_193552_846920518.jsonl +0 -14
- package/.beads/.br_history/issues.20260308_194054_394884833.jsonl +0 -14
- package/.beads/.br_history/issues.20260308_194209_440472460.jsonl +0 -15
- package/.beads/.br_history/issues.20260308_195319_099391899.jsonl +0 -15
- package/.beads/.br_history/issues.20260308_195324_176987204.jsonl +0 -16
- package/.beads/.br_history/issues.20260308_195436_929114019.jsonl +0 -16
- package/.beads/.br_history/issues.20260308_195437_055808298.jsonl +0 -17
- package/.beads/.br_history/issues.20260308_195437_304297399.jsonl +0 -18
- package/.beads/.br_history/issues.20260308_195437_556007332.jsonl +0 -19
- package/.beads/.br_history/issues.20260308_195444_987209695.jsonl +0 -20
- package/.beads/.br_history/issues.20260308_195445_133350193.jsonl +0 -20
- package/.beads/.br_history/issues.20260308_195445_400185615.jsonl +0 -20
- package/.beads/.br_history/issues.20260308_195445_689886334.jsonl +0 -20
- package/.beads/.br_history/issues.20260308_195445_949947727.jsonl +0 -20
- package/.beads/.br_history/issues.20260308_195745_580473297.jsonl +0 -20
- package/.beads/.br_history/issues.20260308_195745_725920532.jsonl +0 -20
- package/.beads/.br_history/issues.20260308_195745_968227911.jsonl +0 -20
- package/.beads/.br_history/issues.20260308_195746_224276322.jsonl +0 -20
- package/.beads/.br_history/issues.20260308_200018_386890807.jsonl +0 -20
- package/ref-btcbot/.env.example +0 -19
- package/ref-btcbot/README.md +0 -3
- package/ref-btcbot/docs/bot.md +0 -72
- package/ref-btcbot/docs/skills/btcbot.backtest/SKILL.md +0 -70
- package/ref-btcbot/docs/skills/btcbot.config/SKILL.md +0 -79
- package/ref-btcbot/docs/skills/btcbot.orders/SKILL.md +0 -60
- package/ref-btcbot/docs/skills/btcbot.positions/SKILL.md +0 -54
- package/ref-btcbot/docs/skills/btcbot.risk/SKILL.md +0 -69
- package/ref-btcbot/docs/skills/btcbot.run-loop/SKILL.md +0 -63
- package/ref-btcbot/docs/skills/btcbot.run-once/SKILL.md +0 -63
- package/ref-btcbot/docs/skills/btcbot.status/SKILL.md +0 -59
- package/ref-btcbot/examples/sample-candles.json +0 -52
- package/ref-btcbot/package.json +0 -18
- package/ref-btcbot/plugin/plugin.json +0 -146
- package/ref-btcbot/src/cli.js +0 -104
- package/ref-btcbot/src/config.js +0 -80
- package/ref-btcbot/src/core/bot-runner.js +0 -78
- package/ref-btcbot/src/core/exchange-factory.js +0 -19
- package/ref-btcbot/src/core/live-exchange.js +0 -12
- package/ref-btcbot/src/core/paper-exchange.js +0 -82
- package/ref-btcbot/src/core/risk-engine.js +0 -42
- package/ref-btcbot/src/core/state-repository.js +0 -47
- package/ref-btcbot/src/services/backtest-service.js +0 -44
- package/ref-btcbot/src/services/market-data.js +0 -32
- package/ref-btcbot/src/storage/json-store.js +0 -45
- package/ref-btcbot/src/strategy/hedge-strategy.js +0 -65
- package/ref-btcbot/src/strategy/indicators.js +0 -56
- package/ref-btcbot/src/web/api.js +0 -50
- package/ref-btcbot/src/web/app.js +0 -51
- package/ref-btcbot/src/web/index.html +0 -70
- package/ref-btcbot/src/web/server.js +0 -33
- /package/.beads/.br_history/{issues.20260308_180927_477542428.jsonl.meta.json → issues.20260308_235202_180577215.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_181032_020230108.jsonl.meta.json → issues.20260308_235202_387414163.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_181032_180539413.jsonl.meta.json → issues.20260308_235202_564422794.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_181032_372621506.jsonl.meta.json → issues.20260308_235202_742600597.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_181032_565142225.jsonl.meta.json → issues.20260308_235208_133360069.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_181311_336346464.jsonl.meta.json → issues.20260308_235505_473406307.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_181444_039234498.jsonl.meta.json → issues.20260308_235505_662360489.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_181503_794764403.jsonl.meta.json → issues.20260308_235505_843935624.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_181503_950163105.jsonl.meta.json → issues.20260308_235506_044530221.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_192031_852553505.jsonl.meta.json → issues.20260309_002618_115728731.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_193552_846920518.jsonl.meta.json → issues.20260309_003748_878174586.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_194054_394884833.jsonl.meta.json → issues.20260309_004057_868755623.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_194209_440472460.jsonl.meta.json → issues.20260309_004058_512842163.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195319_099391899.jsonl.meta.json → issues.20260309_004058_994445226.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195324_176987204.jsonl.meta.json → issues.20260309_004059_475988596.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195436_929114019.jsonl.meta.json → issues.20260309_161902_566857851.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195437_055808298.jsonl.meta.json → issues.20260309_170512_277017739.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195437_304297399.jsonl.meta.json → issues.20260309_170512_477876921.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195437_556007332.jsonl.meta.json → issues.20260309_170512_664382701.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195444_987209695.jsonl.meta.json → issues.20260309_170512_859400333.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195445_133350193.jsonl.meta.json → issues.20260309_212326_082771164.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195445_400185615.jsonl.meta.json → issues.20260309_212326_245619716.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195445_689886334.jsonl.meta.json → issues.20260309_212326_403198317.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195445_949947727.jsonl.meta.json → issues.20260309_212332_539197678.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195745_580473297.jsonl.meta.json → issues.20260309_212332_731373599.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195745_725920532.jsonl.meta.json → issues.20260309_212332_928710953.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195745_968227911.jsonl.meta.json → issues.20260309_213021_341505240.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_195746_224276322.jsonl.meta.json → issues.20260309_213022_023136934.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260308_200018_386890807.jsonl.meta.json → issues.20260309_213022_400050719.jsonl.meta.json} +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "visual-explainer",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Remote skills index for javimosch/visual-explainer normalized markdown skills",
|
|
5
|
+
"source": "https://github.com/javimosch/visual-explainer",
|
|
6
|
+
"checks": [
|
|
7
|
+
{ "type": "binary", "name": "curl" }
|
|
8
|
+
],
|
|
9
|
+
"post_install": {
|
|
10
|
+
"script": "scripts/post-install.js",
|
|
11
|
+
"runtime": "node",
|
|
12
|
+
"timeout_ms": 15000
|
|
13
|
+
},
|
|
14
|
+
"commands": []
|
|
15
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
const { spawnSync } = require("child_process")
|
|
2
|
+
const { addProvider, syncCatalog } = require("../../../cli/skills-catalog")
|
|
3
|
+
|
|
4
|
+
const OWNER = "javimosch"
|
|
5
|
+
const REPO = "visual-explainer"
|
|
6
|
+
const REF = "main"
|
|
7
|
+
const SOURCE_REPO = `https://github.com/${OWNER}/${REPO}`
|
|
8
|
+
const TREE_URL = `https://api.github.com/repos/${OWNER}/${REPO}/git/trees/${REF}?recursive=1`
|
|
9
|
+
const RAW_BASE_URL = `https://raw.githubusercontent.com/${OWNER}/${REPO}/${REF}`
|
|
10
|
+
const NORMALIZED_PREFIX = "plugins/visual-explainer-normalized/"
|
|
11
|
+
|
|
12
|
+
function integrationError(message, suggestions = []) {
|
|
13
|
+
return Object.assign(new Error(message), {
|
|
14
|
+
code: 105,
|
|
15
|
+
type: "integration_error",
|
|
16
|
+
recoverable: true,
|
|
17
|
+
suggestions
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function fetchJson(url) {
|
|
22
|
+
const res = spawnSync("curl", ["-fsSL", url], { encoding: "utf-8", timeout: 15000 })
|
|
23
|
+
if (res.error) {
|
|
24
|
+
throw integrationError(`Failed to fetch visual-explainer metadata: ${res.error.message}`, ["Check internet connectivity", "Retry: supercli plugins install visual-explainer"])
|
|
25
|
+
}
|
|
26
|
+
if (res.status !== 0) {
|
|
27
|
+
throw integrationError(`Failed to fetch visual-explainer metadata: ${(res.stderr || "").trim() || `exit ${res.status}`}`, ["Check internet connectivity", "Retry: supercli plugins install visual-explainer"])
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
return JSON.parse((res.stdout || "").trim() || "{}")
|
|
31
|
+
} catch (err) {
|
|
32
|
+
throw integrationError(`Invalid visual-explainer metadata response: ${err.message}`)
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function isNormalizedSkillFile(filePath) {
|
|
37
|
+
return filePath.startsWith(NORMALIZED_PREFIX) && filePath.endsWith(".md")
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function toSkillId(relativePath) {
|
|
41
|
+
if (relativePath === "SKILL.md") return "visual-explainer.skill"
|
|
42
|
+
return `visual-explainer.${relativePath.replace(/\.md$/, "").replace(/\//g, ".")}`
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function toSkillName(relativePath) {
|
|
46
|
+
const base = relativePath.split("/").pop() || relativePath
|
|
47
|
+
return base
|
|
48
|
+
.replace(/\.md$/, "")
|
|
49
|
+
.split("-")
|
|
50
|
+
.map(part => (part ? part[0].toUpperCase() + part.slice(1) : part))
|
|
51
|
+
.join(" ")
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function buildRemoteEntriesFromTree(treeResponse) {
|
|
55
|
+
const tree = Array.isArray(treeResponse.tree) ? treeResponse.tree : []
|
|
56
|
+
const entries = []
|
|
57
|
+
|
|
58
|
+
for (const node of tree) {
|
|
59
|
+
if (!node || node.type !== "blob" || typeof node.path !== "string") continue
|
|
60
|
+
if (!isNormalizedSkillFile(node.path)) continue
|
|
61
|
+
const relativePath = node.path.slice(NORMALIZED_PREFIX.length)
|
|
62
|
+
entries.push({
|
|
63
|
+
id: toSkillId(relativePath),
|
|
64
|
+
name: toSkillName(relativePath),
|
|
65
|
+
path: node.path,
|
|
66
|
+
source_url: `${RAW_BASE_URL}/${node.path}`
|
|
67
|
+
})
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
entries.sort((a, b) => a.id.localeCompare(b.id))
|
|
71
|
+
return entries
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function run() {
|
|
75
|
+
const treeResponse = fetchJson(TREE_URL)
|
|
76
|
+
const entries = buildRemoteEntriesFromTree(treeResponse)
|
|
77
|
+
if (entries.length === 0) {
|
|
78
|
+
throw integrationError("visual-explainer plugin found no normalized remote skill files to index")
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
addProvider({
|
|
82
|
+
name: "visual-explainer",
|
|
83
|
+
type: "remote_static",
|
|
84
|
+
enabled: true,
|
|
85
|
+
source_repo: SOURCE_REPO,
|
|
86
|
+
ref: REF,
|
|
87
|
+
entries
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
const index = syncCatalog()
|
|
91
|
+
return {
|
|
92
|
+
provider: "visual-explainer",
|
|
93
|
+
entries: entries.length,
|
|
94
|
+
synced_skills: Array.isArray(index.skills) ? index.skills.length : 0
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (require.main === module) {
|
|
99
|
+
try {
|
|
100
|
+
const result = run()
|
|
101
|
+
process.stdout.write(JSON.stringify(result))
|
|
102
|
+
} catch (err) {
|
|
103
|
+
process.stderr.write(err.message)
|
|
104
|
+
process.exit(1)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
module.exports = {
|
|
109
|
+
run,
|
|
110
|
+
buildRemoteEntriesFromTree
|
|
111
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# watchexec Plugin Harness
|
|
2
|
+
|
|
3
|
+
This plugin integrates the watchexec CLI into dcli with one wrapped core command and full namespace passthrough.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
Ensure watchexec is available on your machine:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
watchexec --version
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Available Commands
|
|
14
|
+
|
|
15
|
+
### CLI Version (Wrapped)
|
|
16
|
+
|
|
17
|
+
Returns the watchexec CLI version via `watchexec --version`.
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
dcli watchexec cli version --json
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Full Passthrough
|
|
24
|
+
|
|
25
|
+
You can run any watchexec command through the `watchexec` namespace.
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Show help
|
|
29
|
+
dcli watchexec --help
|
|
30
|
+
|
|
31
|
+
# Print the manual
|
|
32
|
+
dcli watchexec --manual
|
|
33
|
+
|
|
34
|
+
# Run a watcher command directly
|
|
35
|
+
dcli watchexec -e js -- echo changed
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Output
|
|
39
|
+
|
|
40
|
+
Wrapped commands and passthrough responses are returned in dcli envelope format when `--json` is used with dcli-level commands.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "watchexec",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "watchexec CLI plugin for dcli",
|
|
5
|
+
"source": "https://github.com/watchexec/watchexec",
|
|
6
|
+
"checks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "binary",
|
|
9
|
+
"name": "watchexec"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"commands": [
|
|
13
|
+
{
|
|
14
|
+
"namespace": "watchexec",
|
|
15
|
+
"resource": "cli",
|
|
16
|
+
"action": "version",
|
|
17
|
+
"description": "Show watchexec CLI version",
|
|
18
|
+
"adapter": "process",
|
|
19
|
+
"adapterConfig": {
|
|
20
|
+
"command": "watchexec",
|
|
21
|
+
"baseArgs": ["--version"],
|
|
22
|
+
"parseJson": false,
|
|
23
|
+
"missingDependencyHelp": "Please install watchexec to use this command."
|
|
24
|
+
},
|
|
25
|
+
"args": []
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"namespace": "watchexec",
|
|
29
|
+
"resource": "_",
|
|
30
|
+
"action": "_",
|
|
31
|
+
"description": "Passthrough command to execute any watchexec CLI command",
|
|
32
|
+
"adapter": "process",
|
|
33
|
+
"adapterConfig": {
|
|
34
|
+
"command": "watchexec",
|
|
35
|
+
"passthrough": true,
|
|
36
|
+
"parseJson": true,
|
|
37
|
+
"missingDependencyHelp": "Please install watchexec to use this command."
|
|
38
|
+
},
|
|
39
|
+
"args": []
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
6
|
+
CLI="${ROOT_DIR}/cli/supercli.js"
|
|
7
|
+
|
|
8
|
+
echo "== AWS CLI smoke test (interactive) =="
|
|
9
|
+
|
|
10
|
+
if ! command -v aws >/dev/null 2>&1; then
|
|
11
|
+
echo "AWS CLI not found in PATH."
|
|
12
|
+
echo "Install it first: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
17
|
+
echo "Node.js not found in PATH"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "Installing/refreshing aws plugin..."
|
|
22
|
+
node "${CLI}" plugins install aws --on-conflict replace --json >/dev/null
|
|
23
|
+
|
|
24
|
+
echo "Checking AWS authentication (aws sts get-caller-identity)..."
|
|
25
|
+
if ! aws sts get-caller-identity >/dev/null 2>&1; then
|
|
26
|
+
if [[ ! -t 0 ]]; then
|
|
27
|
+
echo "No working AWS credentials found and no TTY available. Run 'aws configure' manually, then rerun this script."
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
echo "AWS credentials are required for live smoke tests."
|
|
32
|
+
read -r -p "Run 'aws configure' now? [Y/n] " ANSWER
|
|
33
|
+
ANSWER="${ANSWER:-Y}"
|
|
34
|
+
if [[ "${ANSWER}" =~ ^[Yy]$ ]]; then
|
|
35
|
+
aws configure
|
|
36
|
+
else
|
|
37
|
+
echo "Cancelled. Run 'aws configure' and retry when ready."
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
if ! aws sts get-caller-identity >/dev/null 2>&1; then
|
|
42
|
+
echo "AWS authentication check still failed after configure."
|
|
43
|
+
echo "Verify with: aws sts get-caller-identity"
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
else
|
|
47
|
+
echo "AWS CLI is already authenticated. Skipping configuration."
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
echo "Running wrapped command smoke test..."
|
|
51
|
+
node "${CLI}" aws account identity --json
|
|
52
|
+
|
|
53
|
+
echo "Running passthrough smoke test..."
|
|
54
|
+
node "${CLI}" aws s3api list-buckets
|
|
55
|
+
|
|
56
|
+
echo "Smoke test completed."
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
6
|
+
CLI="${ROOT_DIR}/cli/supercli.js"
|
|
7
|
+
|
|
8
|
+
echo "== Azure CLI smoke test (interactive) =="
|
|
9
|
+
|
|
10
|
+
if ! command -v az >/dev/null 2>&1; then
|
|
11
|
+
echo "Azure CLI not found in PATH."
|
|
12
|
+
echo "Install it first: https://learn.microsoft.com/cli/azure/install-azure-cli"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
17
|
+
echo "Node.js not found in PATH"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "Installing/refreshing az plugin..."
|
|
22
|
+
node "${CLI}" plugins install az --on-conflict replace --json >/dev/null
|
|
23
|
+
|
|
24
|
+
echo "Checking Azure authentication (az account show)..."
|
|
25
|
+
if ! az account show >/dev/null 2>&1; then
|
|
26
|
+
if [[ ! -t 0 ]]; then
|
|
27
|
+
echo "No working Azure login found and no TTY available. Run 'az login' manually, then rerun this script."
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
echo "Azure authentication is required for live smoke tests."
|
|
32
|
+
read -r -p "Run 'az login' now? [Y/n] " ANSWER
|
|
33
|
+
ANSWER="${ANSWER:-Y}"
|
|
34
|
+
if [[ "${ANSWER}" =~ ^[Yy]$ ]]; then
|
|
35
|
+
az login
|
|
36
|
+
else
|
|
37
|
+
echo "Cancelled. Run 'az login' and retry when ready."
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
if ! az account show >/dev/null 2>&1; then
|
|
42
|
+
echo "Azure authentication check still failed after login."
|
|
43
|
+
echo "Verify with: az account show"
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
else
|
|
47
|
+
echo "Azure CLI is already authenticated. Skipping login."
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
echo "Running wrapped command smoke test..."
|
|
51
|
+
node "${CLI}" az account show --json
|
|
52
|
+
|
|
53
|
+
echo "Running passthrough smoke test..."
|
|
54
|
+
node "${CLI}" az group list
|
|
55
|
+
|
|
56
|
+
echo "Smoke test completed."
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
6
|
+
CLI="${ROOT_DIR}/cli/supercli.js"
|
|
7
|
+
|
|
8
|
+
echo "== cline smoke test (interactive) =="
|
|
9
|
+
|
|
10
|
+
if ! command -v cline >/dev/null 2>&1; then
|
|
11
|
+
echo "cline not found in PATH."
|
|
12
|
+
echo "Install it first and verify with: cline --version"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
17
|
+
echo "Node.js not found in PATH"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "Installing/refreshing cline plugin..."
|
|
22
|
+
node "${CLI}" plugins install cline --on-conflict replace --json >/dev/null
|
|
23
|
+
|
|
24
|
+
echo "Running wrapped version command..."
|
|
25
|
+
node "${CLI}" cline cli version --json
|
|
26
|
+
|
|
27
|
+
echo "Running wrapped non-interactive task command..."
|
|
28
|
+
node "${CLI}" cline task run --prompt "List files with more LOC in cwd" --cwd . --timeout 30 --json
|
|
29
|
+
|
|
30
|
+
echo "Running passthrough smoke test..."
|
|
31
|
+
node "${CLI}" cline --help
|
|
32
|
+
|
|
33
|
+
echo "Syncing and checking local skill catalog..."
|
|
34
|
+
node "${CLI}" skills sync --json >/dev/null
|
|
35
|
+
node "${CLI}" skills get repo:cline-non-interactive >/dev/null
|
|
36
|
+
|
|
37
|
+
echo "Smoke test completed."
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
6
|
+
CLI="${ROOT_DIR}/cli/supercli.js"
|
|
7
|
+
|
|
8
|
+
echo "== eza smoke test (interactive) =="
|
|
9
|
+
|
|
10
|
+
if ! command -v eza >/dev/null 2>&1; then
|
|
11
|
+
echo "eza not found in PATH."
|
|
12
|
+
echo "Install it first: https://eza.rocks"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
17
|
+
echo "Node.js not found in PATH"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "Installing/refreshing eza plugin..."
|
|
22
|
+
node "${CLI}" plugins install eza --on-conflict replace --json >/dev/null
|
|
23
|
+
|
|
24
|
+
echo "Checking eza CLI availability (eza --version)..."
|
|
25
|
+
eza --version >/dev/null
|
|
26
|
+
|
|
27
|
+
echo "Running wrapped command smoke test..."
|
|
28
|
+
node "${CLI}" eza cli version --json
|
|
29
|
+
|
|
30
|
+
echo "Running passthrough smoke test..."
|
|
31
|
+
node "${CLI}" eza --oneline --color=never
|
|
32
|
+
|
|
33
|
+
echo "Smoke test completed."
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
6
|
+
CLI="${ROOT_DIR}/cli/supercli.js"
|
|
7
|
+
|
|
8
|
+
echo "== Google Cloud CLI smoke test (interactive) =="
|
|
9
|
+
|
|
10
|
+
if ! command -v gcloud >/dev/null 2>&1; then
|
|
11
|
+
echo "gcloud not found in PATH."
|
|
12
|
+
echo "Install it first: https://cloud.google.com/sdk/docs/install"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
17
|
+
echo "Node.js not found in PATH"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "Installing/refreshing gcloud plugin..."
|
|
22
|
+
node "${CLI}" plugins install gcloud --on-conflict replace --json >/dev/null
|
|
23
|
+
|
|
24
|
+
echo "Checking Google Cloud authentication (gcloud auth list --format=json)..."
|
|
25
|
+
if ! gcloud auth list --format=json >/dev/null 2>&1; then
|
|
26
|
+
if [[ ! -t 0 ]]; then
|
|
27
|
+
echo "No working gcloud auth found and no TTY available. Run 'gcloud auth login' manually, then rerun this script."
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
echo "Google Cloud authentication is required for live smoke tests."
|
|
32
|
+
read -r -p "Run 'gcloud auth login' now? [Y/n] " ANSWER
|
|
33
|
+
ANSWER="${ANSWER:-Y}"
|
|
34
|
+
if [[ "${ANSWER}" =~ ^[Yy]$ ]]; then
|
|
35
|
+
gcloud auth login
|
|
36
|
+
else
|
|
37
|
+
echo "Cancelled. Run 'gcloud auth login' and retry when ready."
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
if ! gcloud auth list --format=json >/dev/null 2>&1; then
|
|
42
|
+
echo "Google Cloud authentication check still failed after login."
|
|
43
|
+
echo "Verify with: gcloud auth list --format=json"
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
else
|
|
47
|
+
echo "Google Cloud CLI is already authenticated. Skipping login."
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
echo "Running wrapped command smoke test..."
|
|
51
|
+
node "${CLI}" gcloud account list --json
|
|
52
|
+
|
|
53
|
+
echo "Running passthrough smoke test..."
|
|
54
|
+
node "${CLI}" gcloud projects list --format=json
|
|
55
|
+
|
|
56
|
+
echo "Smoke test completed."
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
6
|
+
CLI="${ROOT_DIR}/cli/supercli.js"
|
|
7
|
+
|
|
8
|
+
echo "== GitHub CLI smoke test (interactive) =="
|
|
9
|
+
|
|
10
|
+
if ! command -v gh >/dev/null 2>&1; then
|
|
11
|
+
echo "GitHub CLI not found in PATH (expected binary: gh)."
|
|
12
|
+
echo "Install it first: https://cli.github.com/"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
17
|
+
echo "Node.js not found in PATH"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "Installing/refreshing gh plugin..."
|
|
22
|
+
node "${CLI}" plugins install gh --on-conflict replace --json >/dev/null
|
|
23
|
+
|
|
24
|
+
echo "Checking GitHub authentication (gh auth status)..."
|
|
25
|
+
if ! gh auth status >/dev/null 2>&1; then
|
|
26
|
+
if [[ ! -t 0 ]]; then
|
|
27
|
+
echo "Not authenticated and no TTY available. Run 'gh auth login' manually, then rerun this script."
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
echo "GitHub login is required for live smoke tests."
|
|
32
|
+
read -r -p "Run 'gh auth login' now? [Y/n] " ANSWER
|
|
33
|
+
ANSWER="${ANSWER:-Y}"
|
|
34
|
+
if [[ "${ANSWER}" =~ ^[Yy]$ ]]; then
|
|
35
|
+
gh auth login
|
|
36
|
+
else
|
|
37
|
+
echo "Cancelled. Run 'gh auth login' and retry when ready."
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
if ! gh auth status >/dev/null 2>&1; then
|
|
42
|
+
echo "GitHub authentication check still failed after login."
|
|
43
|
+
echo "Verify with: gh auth status"
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
else
|
|
47
|
+
echo "GitHub CLI is already authenticated. Skipping login."
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
echo "Running wrapped command smoke test..."
|
|
51
|
+
node "${CLI}" gh account status --json
|
|
52
|
+
|
|
53
|
+
echo "Running passthrough smoke test..."
|
|
54
|
+
node "${CLI}" gh repo list --limit 1 --json name,nameWithOwner,url
|
|
55
|
+
|
|
56
|
+
echo "Smoke test completed."
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
6
|
+
CLI="${ROOT_DIR}/cli/supercli.js"
|
|
7
|
+
|
|
8
|
+
echo "== Helm smoke test (interactive) =="
|
|
9
|
+
|
|
10
|
+
if ! command -v helm >/dev/null 2>&1; then
|
|
11
|
+
echo "Helm not found in PATH."
|
|
12
|
+
echo "Install it first: https://helm.sh/docs/intro/install/"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
17
|
+
echo "Node.js not found in PATH"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "Installing/refreshing helm plugin..."
|
|
22
|
+
node "${CLI}" plugins install helm --on-conflict replace --json >/dev/null
|
|
23
|
+
|
|
24
|
+
echo "Checking Helm CLI availability (helm version --short)..."
|
|
25
|
+
helm version --short >/dev/null
|
|
26
|
+
|
|
27
|
+
echo "Running wrapped command smoke test..."
|
|
28
|
+
node "${CLI}" helm cli version --json
|
|
29
|
+
|
|
30
|
+
echo "Running passthrough smoke test..."
|
|
31
|
+
node "${CLI}" helm version --short
|
|
32
|
+
|
|
33
|
+
echo "Smoke test completed."
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
6
|
+
CLI="${ROOT_DIR}/cli/supercli.js"
|
|
7
|
+
TMP_DIR="$(mktemp -d)"
|
|
8
|
+
trap 'rm -rf "${TMP_DIR}"' EXIT
|
|
9
|
+
|
|
10
|
+
echo "== just smoke test (interactive) =="
|
|
11
|
+
|
|
12
|
+
if ! command -v just >/dev/null 2>&1; then
|
|
13
|
+
echo "just not found in PATH."
|
|
14
|
+
echo "Install it first: https://just.systems"
|
|
15
|
+
exit 1
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
19
|
+
echo "Node.js not found in PATH"
|
|
20
|
+
exit 1
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
cat > "${TMP_DIR}/justfile" <<'EOF'
|
|
24
|
+
default:
|
|
25
|
+
@echo smoke-ok
|
|
26
|
+
EOF
|
|
27
|
+
|
|
28
|
+
echo "Installing/refreshing just plugin..."
|
|
29
|
+
node "${CLI}" plugins install just --on-conflict replace --json >/dev/null
|
|
30
|
+
|
|
31
|
+
echo "Checking just CLI availability (just --version)..."
|
|
32
|
+
just --version >/dev/null
|
|
33
|
+
|
|
34
|
+
echo "Running wrapped command smoke test..."
|
|
35
|
+
node "${CLI}" just cli version --json
|
|
36
|
+
|
|
37
|
+
echo "Running passthrough smoke test..."
|
|
38
|
+
node "${CLI}" just --list --justfile "${TMP_DIR}/justfile"
|
|
39
|
+
|
|
40
|
+
echo "Smoke test completed."
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
6
|
+
CLI="${ROOT_DIR}/cli/supercli.js"
|
|
7
|
+
|
|
8
|
+
echo "== kubectl smoke test (interactive) =="
|
|
9
|
+
|
|
10
|
+
if ! command -v kubectl >/dev/null 2>&1; then
|
|
11
|
+
echo "kubectl not found in PATH."
|
|
12
|
+
echo "Install it first: https://kubernetes.io/docs/tasks/tools/"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
17
|
+
echo "Node.js not found in PATH"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "Installing/refreshing kubectl plugin..."
|
|
22
|
+
node "${CLI}" plugins install kubectl --on-conflict replace --json >/dev/null
|
|
23
|
+
|
|
24
|
+
echo "Checking Kubernetes context (kubectl config current-context)..."
|
|
25
|
+
if ! kubectl config current-context >/dev/null 2>&1; then
|
|
26
|
+
echo "No active kubectl context found. Configure kubeconfig first, then rerun this script."
|
|
27
|
+
echo "Verify with: kubectl config current-context"
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
echo "Running wrapped command smoke test..."
|
|
32
|
+
node "${CLI}" kubectl config current-context --json
|
|
33
|
+
|
|
34
|
+
echo "Running passthrough smoke test..."
|
|
35
|
+
node "${CLI}" kubectl get pods -o json
|
|
36
|
+
|
|
37
|
+
echo "Smoke test completed."
|