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,163 @@
|
|
|
1
|
+
const { spawnSync } = require("child_process")
|
|
2
|
+
const { addProvider, syncCatalog } = require("../../../cli/skills-catalog")
|
|
3
|
+
|
|
4
|
+
const OWNER = "RightNow-AI"
|
|
5
|
+
const REPO = "openfang"
|
|
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 SKILLS_BASE = "crates/openfang-skills/bundled"
|
|
10
|
+
|
|
11
|
+
function integrationError(message, suggestions = []) {
|
|
12
|
+
return Object.assign(new Error(message), {
|
|
13
|
+
code: 105,
|
|
14
|
+
type: "integration_error",
|
|
15
|
+
recoverable: true,
|
|
16
|
+
suggestions
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function fetchJson(url) {
|
|
21
|
+
const res = spawnSync("curl", ["-fsSL", url], { encoding: "utf-8", timeout: 30000 })
|
|
22
|
+
if (res.error) {
|
|
23
|
+
throw integrationError(`Failed to fetch from GitHub API: ${res.error.message}`, ["Check internet connectivity", "Retry: supercli plugins install openfang"])
|
|
24
|
+
}
|
|
25
|
+
if (res.status !== 0) {
|
|
26
|
+
throw integrationError(`Failed to fetch from GitHub API: ${(res.stderr || "").trim() || `exit ${res.status}`}`, ["Check internet connectivity", "Retry: supercli plugins install openfang"])
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
return JSON.parse((res.stdout || "").trim() || "{}")
|
|
30
|
+
} catch (err) {
|
|
31
|
+
throw integrationError(`Invalid JSON response: ${err.message}`)
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Map skill folder names to human-readable names
|
|
36
|
+
const SKILL_DISPLAY_NAMES = {
|
|
37
|
+
"ansible": "Ansible",
|
|
38
|
+
"api-tester": "API Tester",
|
|
39
|
+
"aws": "AWS Expert",
|
|
40
|
+
"azure": "Azure Expert",
|
|
41
|
+
"ci-cd": "CI/CD",
|
|
42
|
+
"code-reviewer": "Code Reviewer",
|
|
43
|
+
"compliance": "Compliance",
|
|
44
|
+
"confluence": "Confluence",
|
|
45
|
+
"crypto-expert": "Cryptocurrency Expert",
|
|
46
|
+
"css-expert": "CSS Expert",
|
|
47
|
+
"data-analyst": "Data Analyst",
|
|
48
|
+
"data-pipeline": "Data Pipeline",
|
|
49
|
+
"docker": "Docker",
|
|
50
|
+
"elasticsearch": "Elasticsearch",
|
|
51
|
+
"email-writer": "Email Writer",
|
|
52
|
+
"figma-expert": "Figma Expert",
|
|
53
|
+
"gcp": "Google Cloud Expert",
|
|
54
|
+
"git-expert": "Git Expert",
|
|
55
|
+
"github": "GitHub",
|
|
56
|
+
"golang-expert": "Go Expert",
|
|
57
|
+
"graphql-expert": "GraphQL Expert",
|
|
58
|
+
"helm": "Helm",
|
|
59
|
+
"interview-prep": "Interview Preparation",
|
|
60
|
+
"jira": "Jira",
|
|
61
|
+
"kubernetes": "Kubernetes",
|
|
62
|
+
"linear-tools": "Linear",
|
|
63
|
+
"linux-networking": "Linux Networking",
|
|
64
|
+
"llm-finetuning": "LLM Fine-tuning",
|
|
65
|
+
"ml-engineer": "ML Engineer",
|
|
66
|
+
"mongodb": "MongoDB",
|
|
67
|
+
"nextjs-expert": "Next.js Expert",
|
|
68
|
+
"nginx": "Nginx",
|
|
69
|
+
"notion": "Notion",
|
|
70
|
+
"oauth-expert": "OAuth Expert",
|
|
71
|
+
"openapi-expert": "OpenAPI Expert",
|
|
72
|
+
"pdf-reader": "PDF Reader",
|
|
73
|
+
"postgres-expert": "PostgreSQL Expert",
|
|
74
|
+
"presentation": "Presentation",
|
|
75
|
+
"project-manager": "Project Manager",
|
|
76
|
+
"prometheus": "Prometheus",
|
|
77
|
+
"prompt-engineer": "Prompt Engineer",
|
|
78
|
+
"python-expert": "Python Expert",
|
|
79
|
+
"react-expert": "React Expert",
|
|
80
|
+
"redis-expert": "Redis Expert",
|
|
81
|
+
"regex-expert": "Regex Expert",
|
|
82
|
+
"rust-expert": "Rust Expert",
|
|
83
|
+
"security-audit": "Security Audit",
|
|
84
|
+
"sentry": "Sentry",
|
|
85
|
+
"shell-scripting": "Shell Scripting",
|
|
86
|
+
"slack-tools": "Slack",
|
|
87
|
+
"sql-analyst": "SQL Analyst",
|
|
88
|
+
"sqlite-expert": "SQLite Expert",
|
|
89
|
+
"sysadmin": "System Administrator",
|
|
90
|
+
"technical-writer": "Technical Writer",
|
|
91
|
+
"terraform": "Terraform",
|
|
92
|
+
"typescript-expert": "TypeScript Expert",
|
|
93
|
+
"vector-db": "Vector Database",
|
|
94
|
+
"wasm-expert": "WebAssembly Expert",
|
|
95
|
+
"web-search": "Web Search",
|
|
96
|
+
"writing-coach": "Writing Coach"
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function run() {
|
|
100
|
+
// Fetch the tree to get all skills
|
|
101
|
+
const treeData = fetchJson(TREE_URL)
|
|
102
|
+
|
|
103
|
+
if (!treeData.tree) {
|
|
104
|
+
throw integrationError("Failed to get repository tree from GitHub")
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Find all skill directories under crates/openfang-skills/bundled
|
|
108
|
+
const skillEntries = treeData.tree
|
|
109
|
+
.filter(item => item.path.startsWith(SKILLS_BASE + "/") && item.type === "tree")
|
|
110
|
+
.map(item => item.path.replace(SKILLS_BASE + "/", ""))
|
|
111
|
+
|
|
112
|
+
if (skillEntries.length === 0) {
|
|
113
|
+
throw integrationError("No skills found in openfang-skills/bundled")
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Build provider entries for each skill
|
|
117
|
+
const entries = skillEntries.map(skillName => {
|
|
118
|
+
const displayName = SKILL_DISPLAY_NAMES[skillName] || skillName
|
|
119
|
+
.split("-")
|
|
120
|
+
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
121
|
+
.join(" ")
|
|
122
|
+
|
|
123
|
+
return {
|
|
124
|
+
id: skillName,
|
|
125
|
+
name: displayName,
|
|
126
|
+
description: `OpenFang bundled skill: ${displayName}`,
|
|
127
|
+
path: `${SKILLS_BASE}/${skillName}`,
|
|
128
|
+
source_url: `https://github.com/${OWNER}/${REPO}/tree/${REF}/${SKILLS_BASE}/${skillName}`
|
|
129
|
+
}
|
|
130
|
+
})
|
|
131
|
+
|
|
132
|
+
// Add as a remote static provider
|
|
133
|
+
addProvider({
|
|
134
|
+
name: "openfang",
|
|
135
|
+
type: "remote_static",
|
|
136
|
+
enabled: true,
|
|
137
|
+
source_repo: SOURCE_REPO,
|
|
138
|
+
ref: REF,
|
|
139
|
+
entries: entries
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
const index = syncCatalog()
|
|
143
|
+
return {
|
|
144
|
+
provider: "openfang",
|
|
145
|
+
entries: entries.length,
|
|
146
|
+
synced_skills: Array.isArray(index.skills) ? index.skills.length : 0
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (require.main === module) {
|
|
151
|
+
try {
|
|
152
|
+
const result = run()
|
|
153
|
+
process.stdout.write(JSON.stringify(result))
|
|
154
|
+
} catch (err) {
|
|
155
|
+
process.stderr.write(err.message)
|
|
156
|
+
process.exit(1)
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
module.exports = {
|
|
161
|
+
run
|
|
162
|
+
}
|
|
163
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const { removeProvider, syncCatalog } = require("../../../cli/skills-catalog")
|
|
2
|
+
|
|
3
|
+
function run() {
|
|
4
|
+
const removed = removeProvider("openfang")
|
|
5
|
+
|
|
6
|
+
if (removed) {
|
|
7
|
+
// Re-sync catalog to remove openfang skills
|
|
8
|
+
syncCatalog()
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return {
|
|
12
|
+
provider: "openfang",
|
|
13
|
+
removed: removed
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (require.main === module) {
|
|
18
|
+
try {
|
|
19
|
+
const result = run()
|
|
20
|
+
process.stdout.write(JSON.stringify(result))
|
|
21
|
+
} catch (err) {
|
|
22
|
+
process.stderr.write(err.message)
|
|
23
|
+
process.exit(1)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
module.exports = {
|
|
28
|
+
run
|
|
29
|
+
}
|
|
30
|
+
|
package/plugins/plugins.json
CHANGED
|
@@ -37,6 +37,204 @@
|
|
|
37
37
|
"manifest_path": "plugins/stripe/plugin.json"
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
|
+
{
|
|
41
|
+
"name": "vercel",
|
|
42
|
+
"description": "Vercel CLI plugin with account wrapper and passthrough",
|
|
43
|
+
"tags": ["vercel", "deployments", "hosting", "passthrough"],
|
|
44
|
+
"source": {
|
|
45
|
+
"type": "bundled",
|
|
46
|
+
"manifest_path": "plugins/vercel/plugin.json"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "linear",
|
|
51
|
+
"description": "Linear CLI plugin with account wrapper and passthrough",
|
|
52
|
+
"tags": ["linear", "issues", "project-management", "passthrough"],
|
|
53
|
+
"source": {
|
|
54
|
+
"type": "bundled",
|
|
55
|
+
"manifest_path": "plugins/linear/plugin.json"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "railway",
|
|
60
|
+
"description": "Railway CLI plugin with account wrapper and passthrough",
|
|
61
|
+
"tags": ["railway", "deployments", "infrastructure", "passthrough"],
|
|
62
|
+
"source": {
|
|
63
|
+
"type": "bundled",
|
|
64
|
+
"manifest_path": "plugins/railway/plugin.json"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "supabase",
|
|
69
|
+
"description": "Supabase CLI plugin with projects wrapper and passthrough",
|
|
70
|
+
"tags": ["supabase", "database", "backend", "passthrough"],
|
|
71
|
+
"source": {
|
|
72
|
+
"type": "bundled",
|
|
73
|
+
"manifest_path": "plugins/supabase/plugin.json"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "gh",
|
|
78
|
+
"description": "GitHub CLI plugin with auth wrapper and passthrough",
|
|
79
|
+
"tags": ["github", "gh", "git", "developer-tools"],
|
|
80
|
+
"source": {
|
|
81
|
+
"type": "bundled",
|
|
82
|
+
"manifest_path": "plugins/gh/plugin.json"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"name": "kubectl",
|
|
87
|
+
"description": "kubectl plugin with context wrapper and passthrough",
|
|
88
|
+
"tags": ["kubernetes", "kubectl", "containers", "devops"],
|
|
89
|
+
"source": {
|
|
90
|
+
"type": "bundled",
|
|
91
|
+
"manifest_path": "plugins/kubectl/plugin.json"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "terraform",
|
|
96
|
+
"description": "Terraform CLI plugin with version wrapper and passthrough",
|
|
97
|
+
"tags": ["terraform", "infrastructure", "iac", "devops"],
|
|
98
|
+
"source": {
|
|
99
|
+
"type": "bundled",
|
|
100
|
+
"manifest_path": "plugins/terraform/plugin.json"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"name": "aws",
|
|
105
|
+
"description": "AWS CLI plugin with identity wrapper and passthrough",
|
|
106
|
+
"tags": ["aws", "cloud", "infrastructure", "devops"],
|
|
107
|
+
"source": {
|
|
108
|
+
"type": "bundled",
|
|
109
|
+
"manifest_path": "plugins/aws/plugin.json"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "gcloud",
|
|
114
|
+
"description": "Google Cloud CLI plugin with account wrapper and passthrough",
|
|
115
|
+
"tags": ["gcloud", "google-cloud", "cloud", "devops"],
|
|
116
|
+
"source": {
|
|
117
|
+
"type": "bundled",
|
|
118
|
+
"manifest_path": "plugins/gcloud/plugin.json"
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"name": "az",
|
|
123
|
+
"description": "Azure CLI plugin with account wrapper and passthrough",
|
|
124
|
+
"tags": ["azure", "az", "cloud", "devops"],
|
|
125
|
+
"source": {
|
|
126
|
+
"type": "bundled",
|
|
127
|
+
"manifest_path": "plugins/az/plugin.json"
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"name": "helm",
|
|
132
|
+
"description": "Helm CLI plugin with version wrapper and passthrough",
|
|
133
|
+
"tags": ["helm", "kubernetes", "charts", "devops"],
|
|
134
|
+
"source": {
|
|
135
|
+
"type": "bundled",
|
|
136
|
+
"manifest_path": "plugins/helm/plugin.json"
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"name": "npm",
|
|
141
|
+
"description": "npm CLI plugin with version wrapper and passthrough",
|
|
142
|
+
"tags": ["npm", "node", "packages", "javascript"],
|
|
143
|
+
"source": {
|
|
144
|
+
"type": "bundled",
|
|
145
|
+
"manifest_path": "plugins/npm/plugin.json"
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"name": "pulumi",
|
|
150
|
+
"description": "Pulumi CLI plugin with version wrapper and passthrough",
|
|
151
|
+
"tags": ["pulumi", "infrastructure", "iac", "devops"],
|
|
152
|
+
"source": {
|
|
153
|
+
"type": "bundled",
|
|
154
|
+
"manifest_path": "plugins/pulumi/plugin.json"
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"name": "pnpm",
|
|
159
|
+
"description": "pnpm CLI plugin with version wrapper and passthrough",
|
|
160
|
+
"tags": ["pnpm", "node", "packages", "javascript"],
|
|
161
|
+
"source": {
|
|
162
|
+
"type": "bundled",
|
|
163
|
+
"manifest_path": "plugins/pnpm/plugin.json"
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "uv",
|
|
168
|
+
"description": "uv CLI plugin with version wrapper and passthrough",
|
|
169
|
+
"tags": ["uv", "python", "packages", "packaging"],
|
|
170
|
+
"source": {
|
|
171
|
+
"type": "bundled",
|
|
172
|
+
"manifest_path": "plugins/uv/plugin.json"
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"name": "poetry",
|
|
177
|
+
"description": "Poetry CLI plugin with version wrapper and passthrough",
|
|
178
|
+
"tags": ["poetry", "python", "packages", "packaging"],
|
|
179
|
+
"source": {
|
|
180
|
+
"type": "bundled",
|
|
181
|
+
"manifest_path": "plugins/poetry/plugin.json"
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"name": "eza",
|
|
186
|
+
"description": "eza CLI plugin with version wrapper and passthrough",
|
|
187
|
+
"tags": ["eza", "rust", "filesystem", "developer-tools"],
|
|
188
|
+
"source": {
|
|
189
|
+
"type": "bundled",
|
|
190
|
+
"manifest_path": "plugins/eza/plugin.json"
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"name": "just",
|
|
195
|
+
"description": "just CLI plugin with version wrapper and passthrough",
|
|
196
|
+
"tags": ["just", "rust", "task-runner", "developer-tools"],
|
|
197
|
+
"source": {
|
|
198
|
+
"type": "bundled",
|
|
199
|
+
"manifest_path": "plugins/just/plugin.json"
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"name": "watchexec",
|
|
204
|
+
"description": "watchexec CLI plugin with version wrapper and passthrough",
|
|
205
|
+
"tags": ["watchexec", "rust", "file-watchers", "developer-tools"],
|
|
206
|
+
"source": {
|
|
207
|
+
"type": "bundled",
|
|
208
|
+
"manifest_path": "plugins/watchexec/plugin.json"
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"name": "nextest",
|
|
213
|
+
"description": "cargo-nextest CLI plugin with version wrapper and passthrough",
|
|
214
|
+
"tags": ["nextest", "rust", "testing", "cargo-plugin"],
|
|
215
|
+
"source": {
|
|
216
|
+
"type": "bundled",
|
|
217
|
+
"manifest_path": "plugins/nextest/plugin.json"
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"name": "cline",
|
|
222
|
+
"description": "Cline CLI plugin with rich non-interactive task wrappers and passthrough",
|
|
223
|
+
"tags": ["cline", "agents", "automation", "streaming", "passthrough"],
|
|
224
|
+
"source": {
|
|
225
|
+
"type": "bundled",
|
|
226
|
+
"manifest_path": "plugins/cline/plugin.json"
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"name": "nullclaw",
|
|
231
|
+
"description": "Hybrid NullClaw plugin with remote docs catalog plus local CLI passthrough",
|
|
232
|
+
"tags": ["nullclaw", "skills", "agents", "zig", "passthrough"],
|
|
233
|
+
"source": {
|
|
234
|
+
"type": "bundled",
|
|
235
|
+
"manifest_path": "plugins/nullclaw/plugin.json"
|
|
236
|
+
}
|
|
237
|
+
},
|
|
40
238
|
{
|
|
41
239
|
"name": "commiat",
|
|
42
240
|
"description": "AI-assisted git commit message plugin",
|
|
@@ -56,6 +254,42 @@
|
|
|
56
254
|
"type": "bundled",
|
|
57
255
|
"manifest_path": "plugins/agency-agents/plugin.json"
|
|
58
256
|
}
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"name": "visual-explainer",
|
|
260
|
+
"description": "Indexes normalized visual-explainer markdown skills from javimosch/visual-explainer",
|
|
261
|
+
"tags": ["skills", "visualization", "catalog", "remote"],
|
|
262
|
+
"source": {
|
|
263
|
+
"type": "bundled",
|
|
264
|
+
"manifest_path": "plugins/visual-explainer/plugin.json"
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"name": "superpowers",
|
|
269
|
+
"description": "Agentic skills framework for software development methodology from obra/superpowers",
|
|
270
|
+
"tags": ["skills", "agents", "development", "methodology", "catalog"],
|
|
271
|
+
"source": {
|
|
272
|
+
"type": "bundled",
|
|
273
|
+
"manifest_path": "plugins/superpowers/plugin.json"
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"name": "clickup",
|
|
278
|
+
"description": "ClickUp CLI (cu) for AI agents - task management, sprint tracking, and project workflows",
|
|
279
|
+
"tags": ["clickup", "tasks", "project-management", "sprint", "ai-agents", "passthrough"],
|
|
280
|
+
"source": {
|
|
281
|
+
"type": "bundled",
|
|
282
|
+
"manifest_path": "plugins/clickup/plugin.json"
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"name": "openfang",
|
|
287
|
+
"description": "OpenFang - Agent Operating System. CLI passthrough + 60+ bundled skills (aws, kubernetes, docker, etc.)",
|
|
288
|
+
"tags": ["openfang", "agents", "ai", "autonomous", "skills", "passthrough", "rust"],
|
|
289
|
+
"source": {
|
|
290
|
+
"type": "bundled",
|
|
291
|
+
"manifest_path": "plugins/openfang/plugin.json"
|
|
292
|
+
}
|
|
59
293
|
}
|
|
60
294
|
]
|
|
61
295
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# pnpm Plugin Harness
|
|
2
|
+
|
|
3
|
+
This plugin integrates the pnpm CLI into dcli with one wrapped core command and full namespace passthrough.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
Ensure pnpm is available on your machine:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm --version
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
If you plan to run authenticated registry commands, log in first:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pnpm login
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Available Commands
|
|
20
|
+
|
|
21
|
+
### CLI Version (Wrapped)
|
|
22
|
+
|
|
23
|
+
Returns the pnpm CLI version via `pnpm --version`.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
dcli pnpm cli version --json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Full Passthrough
|
|
30
|
+
|
|
31
|
+
You can run any pnpm command through the `pnpm` namespace.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Search packages as JSON
|
|
35
|
+
dcli pnpm search react --json
|
|
36
|
+
|
|
37
|
+
# Show current user if authenticated
|
|
38
|
+
dcli pnpm whoami
|
|
39
|
+
|
|
40
|
+
# Show CLI help
|
|
41
|
+
dcli pnpm --help
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Output
|
|
45
|
+
|
|
46
|
+
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": "pnpm",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "pnpm CLI plugin for dcli",
|
|
5
|
+
"source": "https://pnpm.io/cli",
|
|
6
|
+
"checks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "binary",
|
|
9
|
+
"name": "pnpm"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"commands": [
|
|
13
|
+
{
|
|
14
|
+
"namespace": "pnpm",
|
|
15
|
+
"resource": "cli",
|
|
16
|
+
"action": "version",
|
|
17
|
+
"description": "Show pnpm CLI version",
|
|
18
|
+
"adapter": "process",
|
|
19
|
+
"adapterConfig": {
|
|
20
|
+
"command": "pnpm",
|
|
21
|
+
"baseArgs": ["--version"],
|
|
22
|
+
"parseJson": false,
|
|
23
|
+
"missingDependencyHelp": "Please install pnpm to use this command."
|
|
24
|
+
},
|
|
25
|
+
"args": []
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"namespace": "pnpm",
|
|
29
|
+
"resource": "_",
|
|
30
|
+
"action": "_",
|
|
31
|
+
"description": "Passthrough command to execute any pnpm CLI command",
|
|
32
|
+
"adapter": "process",
|
|
33
|
+
"adapterConfig": {
|
|
34
|
+
"command": "pnpm",
|
|
35
|
+
"passthrough": true,
|
|
36
|
+
"parseJson": true,
|
|
37
|
+
"missingDependencyHelp": "Please install pnpm to use this command."
|
|
38
|
+
},
|
|
39
|
+
"args": []
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Poetry Plugin Harness
|
|
2
|
+
|
|
3
|
+
This plugin integrates the Poetry CLI into dcli with one wrapped core command and full namespace passthrough.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
Ensure Poetry is available on your machine:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
poetry --version
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
If you plan to publish or access private repositories, configure Poetry first:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
poetry config --list
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Available Commands
|
|
20
|
+
|
|
21
|
+
### CLI Version (Wrapped)
|
|
22
|
+
|
|
23
|
+
Returns the Poetry CLI version via `poetry --version`.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
dcli poetry cli version --json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Full Passthrough
|
|
30
|
+
|
|
31
|
+
You can run any Poetry command through the `poetry` namespace.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Show global Poetry information
|
|
35
|
+
dcli poetry about
|
|
36
|
+
|
|
37
|
+
# Show installed self plugins as JSON
|
|
38
|
+
dcli poetry self show --format json
|
|
39
|
+
|
|
40
|
+
# Show CLI help
|
|
41
|
+
dcli poetry --help
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Output
|
|
45
|
+
|
|
46
|
+
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": "poetry",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Poetry CLI plugin for dcli",
|
|
5
|
+
"source": "https://python-poetry.org/docs/cli/",
|
|
6
|
+
"checks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "binary",
|
|
9
|
+
"name": "poetry"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"commands": [
|
|
13
|
+
{
|
|
14
|
+
"namespace": "poetry",
|
|
15
|
+
"resource": "cli",
|
|
16
|
+
"action": "version",
|
|
17
|
+
"description": "Show Poetry CLI version",
|
|
18
|
+
"adapter": "process",
|
|
19
|
+
"adapterConfig": {
|
|
20
|
+
"command": "poetry",
|
|
21
|
+
"baseArgs": ["--version"],
|
|
22
|
+
"parseJson": false,
|
|
23
|
+
"missingDependencyHelp": "Please install Poetry to use this command."
|
|
24
|
+
},
|
|
25
|
+
"args": []
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"namespace": "poetry",
|
|
29
|
+
"resource": "_",
|
|
30
|
+
"action": "_",
|
|
31
|
+
"description": "Passthrough command to execute any Poetry CLI command",
|
|
32
|
+
"adapter": "process",
|
|
33
|
+
"adapterConfig": {
|
|
34
|
+
"command": "poetry",
|
|
35
|
+
"passthrough": true,
|
|
36
|
+
"parseJson": true,
|
|
37
|
+
"missingDependencyHelp": "Please install Poetry to use this command."
|
|
38
|
+
},
|
|
39
|
+
"args": []
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Pulumi Plugin Harness
|
|
2
|
+
|
|
3
|
+
This plugin integrates the Pulumi CLI into dcli with one wrapped core command and full namespace passthrough.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
Install Pulumi with your preferred package manager, then verify it is available:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pulumi version
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Authenticate before running stack or cloud-backed operations:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pulumi login
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Available Commands
|
|
20
|
+
|
|
21
|
+
### CLI Version (Wrapped)
|
|
22
|
+
|
|
23
|
+
Returns the Pulumi CLI version via `pulumi version`.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
dcli pulumi cli version --json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Full Passthrough
|
|
30
|
+
|
|
31
|
+
You can run any Pulumi CLI command through the `pulumi` namespace.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# List stacks as JSON
|
|
35
|
+
dcli pulumi stack ls --json
|
|
36
|
+
|
|
37
|
+
# Show current user
|
|
38
|
+
dcli pulumi whoami
|
|
39
|
+
|
|
40
|
+
# Show CLI help
|
|
41
|
+
dcli pulumi --help
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Output
|
|
45
|
+
|
|
46
|
+
Wrapped commands and passthrough responses are returned in dcli envelope format when `--json` is used with dcli-level commands.
|