@g3nomaly/skills 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/adapter.d.ts +19 -16
- package/dist/cli/adapter.d.ts.map +1 -1
- package/dist/cli/adapter.js +39 -63
- package/dist/cli/adapter.js.map +1 -1
- package/dist/cli/commands/add.d.ts +7 -10
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +12 -98
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/ls.d.ts +9 -2
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +21 -5
- package/dist/cli/commands/ls.js.map +1 -1
- package/dist/cli/commands/remove.d.ts +7 -7
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +11 -56
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/commands/source.d.ts +29 -0
- package/dist/cli/commands/source.d.ts.map +1 -0
- package/dist/cli/commands/source.js +31 -0
- package/dist/cli/commands/source.js.map +1 -0
- package/dist/cli/commands/update.d.ts +6 -6
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +9 -43
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +79 -58
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +2 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -8
- package/dist/index.js.map +1 -1
- package/dist/packages/index.d.ts +3 -0
- package/dist/packages/index.d.ts.map +1 -0
- package/dist/packages/index.js +3 -0
- package/dist/packages/index.js.map +1 -0
- package/dist/packages/install.d.ts +24 -0
- package/dist/packages/install.d.ts.map +1 -0
- package/dist/packages/install.js +47 -0
- package/dist/packages/install.js.map +1 -0
- package/dist/registry/index.d.ts +4 -2
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +3 -2
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/locate.d.ts +22 -0
- package/dist/registry/locate.d.ts.map +1 -0
- package/dist/registry/locate.js +81 -0
- package/dist/registry/locate.js.map +1 -0
- package/dist/registry/manifest.d.ts +9 -0
- package/dist/registry/manifest.d.ts.map +1 -0
- package/dist/registry/manifest.js +14 -0
- package/dist/registry/manifest.js.map +1 -0
- package/dist/registry/readSkillDir.d.ts +8 -6
- package/dist/registry/readSkillDir.d.ts.map +1 -1
- package/dist/registry/readSkillDir.js +19 -24
- package/dist/registry/readSkillDir.js.map +1 -1
- package/dist/registry/readSource.d.ts +9 -0
- package/dist/registry/readSource.d.ts.map +1 -0
- package/dist/registry/readSource.js +30 -0
- package/dist/registry/readSource.js.map +1 -0
- package/dist/registry/types.d.ts +16 -16
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/types.js +13 -23
- package/dist/registry/types.js.map +1 -1
- package/dist/sources/builtins.d.ts +4 -0
- package/dist/sources/builtins.d.ts.map +1 -0
- package/dist/sources/builtins.js +5 -0
- package/dist/sources/builtins.js.map +1 -0
- package/dist/sources/index.d.ts +2 -0
- package/dist/sources/index.d.ts.map +1 -0
- package/dist/sources/index.js +3 -0
- package/dist/sources/index.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +7 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +20 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +8 -32
- package/dist/cli/commands/hook.d.ts +0 -6
- package/dist/cli/commands/hook.d.ts.map +0 -1
- package/dist/cli/commands/hook.js +0 -18
- package/dist/cli/commands/hook.js.map +0 -1
- package/dist/decisions/index.d.ts +0 -6
- package/dist/decisions/index.d.ts.map +0 -1
- package/dist/decisions/index.js +0 -5
- package/dist/decisions/index.js.map +0 -1
- package/dist/decisions/paths.d.ts +0 -4
- package/dist/decisions/paths.d.ts.map +0 -1
- package/dist/decisions/paths.js +0 -12
- package/dist/decisions/paths.js.map +0 -1
- package/dist/decisions/read.d.ts +0 -18
- package/dist/decisions/read.d.ts.map +0 -1
- package/dist/decisions/read.js +0 -45
- package/dist/decisions/read.js.map +0 -1
- package/dist/decisions/write.d.ts +0 -20
- package/dist/decisions/write.d.ts.map +0 -1
- package/dist/decisions/write.js +0 -48
- package/dist/decisions/write.js.map +0 -1
- package/dist/filetree/ensure.d.ts +0 -7
- package/dist/filetree/ensure.d.ts.map +0 -1
- package/dist/filetree/ensure.js +0 -36
- package/dist/filetree/ensure.js.map +0 -1
- package/dist/filetree/entries.d.ts +0 -9
- package/dist/filetree/entries.d.ts.map +0 -1
- package/dist/filetree/entries.js +0 -49
- package/dist/filetree/entries.js.map +0 -1
- package/dist/filetree/frontmatter.d.ts +0 -16
- package/dist/filetree/frontmatter.d.ts.map +0 -1
- package/dist/filetree/frontmatter.js +0 -43
- package/dist/filetree/frontmatter.js.map +0 -1
- package/dist/filetree/generate.d.ts +0 -16
- package/dist/filetree/generate.d.ts.map +0 -1
- package/dist/filetree/generate.js +0 -62
- package/dist/filetree/generate.js.map +0 -1
- package/dist/filetree/index.d.ts +0 -17
- package/dist/filetree/index.d.ts.map +0 -1
- package/dist/filetree/index.js +0 -13
- package/dist/filetree/index.js.map +0 -1
- package/dist/filetree/levels.d.ts +0 -25
- package/dist/filetree/levels.d.ts.map +0 -1
- package/dist/filetree/levels.js +0 -45
- package/dist/filetree/levels.js.map +0 -1
- package/dist/filetree/locate.d.ts +0 -44
- package/dist/filetree/locate.d.ts.map +0 -1
- package/dist/filetree/locate.js +0 -76
- package/dist/filetree/locate.js.map +0 -1
- package/dist/filetree/paths.d.ts +0 -15
- package/dist/filetree/paths.d.ts.map +0 -1
- package/dist/filetree/paths.js +0 -38
- package/dist/filetree/paths.js.map +0 -1
- package/dist/filetree/read.d.ts +0 -23
- package/dist/filetree/read.d.ts.map +0 -1
- package/dist/filetree/read.js +0 -36
- package/dist/filetree/read.js.map +0 -1
- package/dist/filetree/remove.d.ts +0 -9
- package/dist/filetree/remove.d.ts.map +0 -1
- package/dist/filetree/remove.js +0 -17
- package/dist/filetree/remove.js.map +0 -1
- package/dist/filetree/root.d.ts +0 -9
- package/dist/filetree/root.d.ts.map +0 -1
- package/dist/filetree/root.js +0 -15
- package/dist/filetree/root.js.map +0 -1
- package/dist/filetree/status.d.ts +0 -21
- package/dist/filetree/status.d.ts.map +0 -1
- package/dist/filetree/status.js +0 -55
- package/dist/filetree/status.js.map +0 -1
- package/dist/hooks/cli.d.ts +0 -29
- package/dist/hooks/cli.d.ts.map +0 -1
- package/dist/hooks/cli.js +0 -65
- package/dist/hooks/cli.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -3
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -3
- package/dist/hooks/index.js.map +0 -1
- package/dist/plugins/grilling/.claude-plugin/plugin.json +0 -7
- package/dist/plugins/grilling/skills/domain-modeling/ADR-FORMAT.md +0 -47
- package/dist/plugins/grilling/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
- package/dist/plugins/grilling/skills/domain-modeling/SKILL.md +0 -74
- package/dist/plugins/grilling/skills/domain-modeling/agents/openai.yaml +0 -3
- package/dist/plugins/grilling/skills/grill-me/SKILL.md +0 -7
- package/dist/plugins/grilling/skills/grill-me/agents/openai.yaml +0 -5
- package/dist/plugins/grilling/skills/grill-with-docs/SKILL.md +0 -7
- package/dist/plugins/grilling/skills/grill-with-docs/agents/openai.yaml +0 -5
- package/dist/plugins/grilling/skills/grilling/SKILL.md +0 -12
- package/dist/plugins/grilling/skills/grilling/agents/openai.yaml +0 -3
- package/dist/plugins/speech/.claude-plugin/plugin.json +0 -7
- package/dist/plugins/speech/skills/emphasise/SKILL.md +0 -49
- package/dist/plugins/speech/skills/emphasise/agents/openai.yaml +0 -5
- package/dist/plugins/speech/skills/unslop/SKILL.md +0 -80
- package/dist/plugins/task-manager/.claude-plugin/plugin.json +0 -11
- package/dist/plugins/task-manager/hooks/hooks.json +0 -19
- package/dist/plugins/task-manager/skills/decisions/SKILL.md +0 -39
- package/dist/plugins/task-manager/skills/decisions/agents/openai.yaml +0 -5
- package/dist/plugins/task-manager/skills/decisions/references/usage.md +0 -26
- package/dist/plugins/task-manager/skills/task-manager/SKILL.md +0 -99
- package/dist/plugins/task-manager/skills/vocabulary/SKILL.md +0 -42
- package/dist/plugins/task-manager/skills/vocabulary/agents/openai.yaml +0 -5
- package/dist/plugins/task-manager/skills/vocabulary/references/usage.md +0 -26
- package/dist/plugins/using-hooks/.claude-plugin/plugin.json +0 -7
- package/dist/plugins/using-hooks/skills/hook-post-tool-use/SKILL.md +0 -79
- package/dist/plugins/using-hooks/skills/hook-post-tool-use/agents/openai.yaml +0 -5
- package/dist/plugins/using-hooks/skills/hook-pre-tool-use/SKILL.md +0 -84
- package/dist/plugins/using-hooks/skills/hook-pre-tool-use/agents/openai.yaml +0 -5
- package/dist/plugins/using-hooks/skills/hook-stop/SKILL.md +0 -69
- package/dist/plugins/using-hooks/skills/hook-stop/agents/openai.yaml +0 -5
- package/dist/plugins/using-hooks/skills/hook-user-prompt-submit/SKILL.md +0 -64
- package/dist/plugins/using-hooks/skills/hook-user-prompt-submit/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/.claude-plugin/plugin.json +0 -16
- package/dist/plugins/workflow/agents/reviewer.md +0 -9
- package/dist/plugins/workflow/skills/execute/SKILL.md +0 -21
- package/dist/plugins/workflow/skills/execute/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/orchestrator/SKILL.md +0 -27
- package/dist/plugins/workflow/skills/orchestrator/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/plan/SKILL.md +0 -18
- package/dist/plugins/workflow/skills/plan/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/plan/references/task-frontmatter.md +0 -33
- package/dist/plugins/workflow/skills/review/SKILL.md +0 -25
- package/dist/plugins/workflow/skills/review/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/run/SKILL.md +0 -33
- package/dist/plugins/workflow/skills/run/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/run/references/sub-agents.md +0 -46
- package/dist/plugins/workflow/skills/sync/SKILL.md +0 -18
- package/dist/plugins/workflow/skills/sync/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/worktree/SKILL.md +0 -38
- package/dist/plugins/workflow/skills/worktree/agents/openai.yaml +0 -5
- package/dist/plugins/workflow/skills/worktree/references/git-commands.md +0 -27
- package/dist/plugins/writing/.claude-plugin/plugin.json +0 -7
- package/dist/plugins/writing/skills/writing-great-hooks/SKILL.md +0 -192
- package/dist/plugins/writing/skills/writing-great-hooks/agents/openai.yaml +0 -5
- package/dist/plugins/writing/skills/writing-great-skills/GLOSSARY.md +0 -201
- package/dist/plugins/writing/skills/writing-great-skills/SKILL.md +0 -92
- package/dist/plugins/writing/skills/writing-great-skills/agents/openai.yaml +0 -5
- package/dist/plugins/writing/skills/writing-great-tasks/SKILL.md +0 -136
- package/dist/plugins/writing/skills/writing-great-tasks/agents/openai.yaml +0 -5
- package/dist/plugins/writing/skills/writing-great-tasks/templates/template_task.md +0 -108
- package/dist/registry/loadPackageRegistry.d.ts +0 -14
- package/dist/registry/loadPackageRegistry.d.ts.map +0 -1
- package/dist/registry/loadPackageRegistry.js +0 -59
- package/dist/registry/loadPackageRegistry.js.map +0 -1
- package/dist/registry/userManifest.d.ts +0 -7
- package/dist/registry/userManifest.d.ts.map +0 -1
- package/dist/registry/userManifest.js +0 -21
- package/dist/registry/userManifest.js.map +0 -1
- package/dist/remote/fetch.d.ts +0 -16
- package/dist/remote/fetch.d.ts.map +0 -1
- package/dist/remote/fetch.js +0 -41
- package/dist/remote/fetch.js.map +0 -1
- package/dist/remote/index.d.ts +0 -7
- package/dist/remote/index.d.ts.map +0 -1
- package/dist/remote/index.js +0 -5
- package/dist/remote/index.js.map +0 -1
- package/dist/remote/manifest.d.ts +0 -23
- package/dist/remote/manifest.d.ts.map +0 -1
- package/dist/remote/manifest.js +0 -116
- package/dist/remote/manifest.js.map +0 -1
- package/dist/remote/registry.d.ts +0 -18
- package/dist/remote/registry.d.ts.map +0 -1
- package/dist/remote/registry.js +0 -58
- package/dist/remote/registry.js.map +0 -1
- package/dist/schemas/config.d.ts +0 -3
- package/dist/schemas/config.d.ts.map +0 -1
- package/dist/schemas/config.js +0 -3
- package/dist/schemas/config.js.map +0 -1
- package/dist/schemas/decision.d.ts +0 -43
- package/dist/schemas/decision.d.ts.map +0 -1
- package/dist/schemas/decision.js +0 -24
- package/dist/schemas/decision.js.map +0 -1
- package/dist/schemas/index.d.ts +0 -17
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/index.js +0 -10
- package/dist/schemas/index.js.map +0 -1
- package/dist/schemas/phase.d.ts +0 -46
- package/dist/schemas/phase.d.ts.map +0 -1
- package/dist/schemas/phase.js +0 -16
- package/dist/schemas/phase.js.map +0 -1
- package/dist/schemas/plan.d.ts +0 -44
- package/dist/schemas/plan.d.ts.map +0 -1
- package/dist/schemas/plan.js +0 -15
- package/dist/schemas/plan.js.map +0 -1
- package/dist/schemas/primitives.d.ts +0 -38
- package/dist/schemas/primitives.d.ts.map +0 -1
- package/dist/schemas/primitives.js +0 -33
- package/dist/schemas/primitives.js.map +0 -1
- package/dist/schemas/task.d.ts +0 -70
- package/dist/schemas/task.d.ts.map +0 -1
- package/dist/schemas/task.js +0 -19
- package/dist/schemas/task.js.map +0 -1
- package/dist/schemas/term.d.ts +0 -17
- package/dist/schemas/term.d.ts.map +0 -1
- package/dist/schemas/term.js +0 -22
- package/dist/schemas/term.js.map +0 -1
- package/dist/schemas/validation.d.ts +0 -24
- package/dist/schemas/validation.d.ts.map +0 -1
- package/dist/schemas/validation.js +0 -39
- package/dist/schemas/validation.js.map +0 -1
- package/dist/task-manager/hooks/add-decision.d.ts +0 -2
- package/dist/task-manager/hooks/add-decision.d.ts.map +0 -1
- package/dist/task-manager/hooks/add-decision.js +0 -19
- package/dist/task-manager/hooks/add-decision.js.map +0 -1
- package/dist/task-manager/hooks/cleanup.d.ts +0 -2
- package/dist/task-manager/hooks/cleanup.d.ts.map +0 -1
- package/dist/task-manager/hooks/cleanup.js +0 -27
- package/dist/task-manager/hooks/cleanup.js.map +0 -1
- package/dist/task-manager/hooks/get-decision.d.ts +0 -2
- package/dist/task-manager/hooks/get-decision.d.ts.map +0 -1
- package/dist/task-manager/hooks/get-decision.js +0 -11
- package/dist/task-manager/hooks/get-decision.js.map +0 -1
- package/dist/task-manager/hooks/get-entry.d.ts +0 -2
- package/dist/task-manager/hooks/get-entry.d.ts.map +0 -1
- package/dist/task-manager/hooks/get-entry.js +0 -20
- package/dist/task-manager/hooks/get-entry.js.map +0 -1
- package/dist/task-manager/hooks/get-term.d.ts +0 -2
- package/dist/task-manager/hooks/get-term.d.ts.map +0 -1
- package/dist/task-manager/hooks/get-term.js +0 -13
- package/dist/task-manager/hooks/get-term.js.map +0 -1
- package/dist/task-manager/hooks/guard-tree.d.ts +0 -2
- package/dist/task-manager/hooks/guard-tree.d.ts.map +0 -1
- package/dist/task-manager/hooks/guard-tree.js +0 -63
- package/dist/task-manager/hooks/guard-tree.js.map +0 -1
- package/dist/task-manager/hooks/index.d.ts +0 -4
- package/dist/task-manager/hooks/index.d.ts.map +0 -1
- package/dist/task-manager/hooks/index.js +0 -32
- package/dist/task-manager/hooks/index.js.map +0 -1
- package/dist/task-manager/hooks/list-decisions.d.ts +0 -2
- package/dist/task-manager/hooks/list-decisions.d.ts.map +0 -1
- package/dist/task-manager/hooks/list-decisions.js +0 -20
- package/dist/task-manager/hooks/list-decisions.js.map +0 -1
- package/dist/task-manager/hooks/list-entries.d.ts +0 -2
- package/dist/task-manager/hooks/list-entries.d.ts.map +0 -1
- package/dist/task-manager/hooks/list-entries.js +0 -19
- package/dist/task-manager/hooks/list-entries.js.map +0 -1
- package/dist/task-manager/hooks/list-terms.d.ts +0 -2
- package/dist/task-manager/hooks/list-terms.d.ts.map +0 -1
- package/dist/task-manager/hooks/list-terms.js +0 -8
- package/dist/task-manager/hooks/list-terms.js.map +0 -1
- package/dist/task-manager/hooks/next-entry.d.ts +0 -2
- package/dist/task-manager/hooks/next-entry.d.ts.map +0 -1
- package/dist/task-manager/hooks/next-entry.js +0 -23
- package/dist/task-manager/hooks/next-entry.js.map +0 -1
- package/dist/task-manager/hooks/remove-term.d.ts +0 -2
- package/dist/task-manager/hooks/remove-term.d.ts.map +0 -1
- package/dist/task-manager/hooks/remove-term.js +0 -15
- package/dist/task-manager/hooks/remove-term.js.map +0 -1
- package/dist/task-manager/hooks/set-state.d.ts +0 -2
- package/dist/task-manager/hooks/set-state.d.ts.map +0 -1
- package/dist/task-manager/hooks/set-state.js +0 -15
- package/dist/task-manager/hooks/set-state.js.map +0 -1
- package/dist/task-manager/hooks/set-term.d.ts +0 -2
- package/dist/task-manager/hooks/set-term.d.ts.map +0 -1
- package/dist/task-manager/hooks/set-term.js +0 -27
- package/dist/task-manager/hooks/set-term.js.map +0 -1
- package/dist/task-manager/hooks/sync-tree.d.ts +0 -2
- package/dist/task-manager/hooks/sync-tree.d.ts.map +0 -1
- package/dist/task-manager/hooks/sync-tree.js +0 -28
- package/dist/task-manager/hooks/sync-tree.js.map +0 -1
- package/dist/task-manager/index.d.ts +0 -2
- package/dist/task-manager/index.d.ts.map +0 -1
- package/dist/task-manager/index.js +0 -3
- package/dist/task-manager/index.js.map +0 -1
- package/dist/vocabulary/file.d.ts +0 -15
- package/dist/vocabulary/file.d.ts.map +0 -1
- package/dist/vocabulary/file.js +0 -80
- package/dist/vocabulary/file.js.map +0 -1
- package/dist/vocabulary/index.d.ts +0 -4
- package/dist/vocabulary/index.d.ts.map +0 -1
- package/dist/vocabulary/index.js +0 -4
- package/dist/vocabulary/index.js.map +0 -1
- package/dist/vocabulary/match.d.ts +0 -22
- package/dist/vocabulary/match.d.ts.map +0 -1
- package/dist/vocabulary/match.js +0 -31
- package/dist/vocabulary/match.js.map +0 -1
- package/dist/workflow/gates.d.ts +0 -24
- package/dist/workflow/gates.d.ts.map +0 -1
- package/dist/workflow/gates.js +0 -34
- package/dist/workflow/gates.js.map +0 -1
- package/dist/workflow/hooks/advance-step.d.ts +0 -2
- package/dist/workflow/hooks/advance-step.d.ts.map +0 -1
- package/dist/workflow/hooks/advance-step.js +0 -51
- package/dist/workflow/hooks/advance-step.js.map +0 -1
- package/dist/workflow/hooks/current-step.d.ts +0 -2
- package/dist/workflow/hooks/current-step.d.ts.map +0 -1
- package/dist/workflow/hooks/current-step.js +0 -24
- package/dist/workflow/hooks/current-step.js.map +0 -1
- package/dist/workflow/hooks/index.d.ts +0 -4
- package/dist/workflow/hooks/index.d.ts.map +0 -1
- package/dist/workflow/hooks/index.js +0 -10
- package/dist/workflow/hooks/index.js.map +0 -1
- package/dist/workflow/hooks/ready-phases.d.ts +0 -2
- package/dist/workflow/hooks/ready-phases.d.ts.map +0 -1
- package/dist/workflow/hooks/ready-phases.js +0 -15
- package/dist/workflow/hooks/ready-phases.js.map +0 -1
- package/dist/workflow/index.d.ts +0 -8
- package/dist/workflow/index.d.ts.map +0 -1
- package/dist/workflow/index.js +0 -6
- package/dist/workflow/index.js.map +0 -1
- package/dist/workflow/phase.d.ts +0 -16
- package/dist/workflow/phase.d.ts.map +0 -1
- package/dist/workflow/phase.js +0 -22
- package/dist/workflow/phase.js.map +0 -1
- package/dist/workflow/steps.d.ts +0 -15
- package/dist/workflow/steps.d.ts.map +0 -1
- package/dist/workflow/steps.js +0 -32
- package/dist/workflow/steps.js.map +0 -1
package/dist/cli/adapter.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { resolveProjectRoot } from "@g3nomaly/core/config";
|
|
2
2
|
import type { G3nConfig } from "@g3nomaly/core/config";
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
3
|
+
import type { InstallCommandContext, ManifestTarget } from "@g3nomaly/core/cli";
|
|
4
|
+
import type { SourceRegistry } from "@g3nomaly/core/installer";
|
|
5
|
+
import type { RegisteredSource } from "@g3nomaly/core/sources";
|
|
6
|
+
import type { SkillMeta, SkillRegistry } from "../registry/types";
|
|
5
7
|
/** Injection point for tests; the real project root comes from git discovery. */
|
|
6
8
|
export interface ProjectDeps {
|
|
7
9
|
resolveProjectRoot?: typeof resolveProjectRoot;
|
|
@@ -11,20 +13,21 @@ export declare function openSkillProject(deps?: ProjectDeps): Promise<{
|
|
|
11
13
|
projectRoot: string;
|
|
12
14
|
config: G3nConfig;
|
|
13
15
|
}>;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
/** One target per configured harness, narrowed to `only` when given; exits on an unreadable `skills.json`. */
|
|
17
|
+
export declare function skillTargets(config: G3nConfig, projectRoot: string, only?: string[]): ManifestTarget[];
|
|
18
|
+
/** Built-in sources plus those registered in any of the targets' `skills.json`. */
|
|
19
|
+
export declare function skillSources(targets: readonly ManifestTarget[]): RegisteredSource[];
|
|
20
|
+
/** Installed skills of one target. */
|
|
21
|
+
export declare function installedSkills(target: ManifestTarget): SkillRegistry;
|
|
22
|
+
/** What the core install and source commands print and check for skills. */
|
|
23
|
+
export declare const SKILL_CONTEXT: InstallCommandContext<SkillMeta>;
|
|
17
24
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* (remote plugins often carry a skill named like the plugin itself).
|
|
25
|
+
* Reads the skills of the targets' sources, or only those of `only`, and
|
|
26
|
+
* prints what could not be read; the caller disposes the result.
|
|
27
|
+
*
|
|
28
|
+
* @param only - Source name to read alone; exits when no such source is registered
|
|
23
29
|
*/
|
|
24
|
-
export declare function
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
notes: Record<string, string>;
|
|
28
|
-
};
|
|
29
|
-
export declare const skillSource: EntrySource;
|
|
30
|
+
export declare function openSkillRegistry(targets: readonly ManifestTarget[], projectRoot: string, only?: string): Promise<SourceRegistry<SkillMeta>>;
|
|
31
|
+
/** Installs the packages of the given skills in one target and prints each failure; sets exit code 1 on any. */
|
|
32
|
+
export declare function installPackagesReporting(target: ManifestTarget, keys: readonly string[]): Promise<void>;
|
|
30
33
|
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/cli/adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/cli/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIlE,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B,kBAAkB,CAAC,EAAE,OAAO,kBAAkB,CAAC;CAChD;AAED,8FAA8F;AAC9F,wBAAsB,gBAAgB,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC,CAOlH;AAED,8GAA8G;AAC9G,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAWtG;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,gBAAgB,EAAE,CAEnF;AAED,sCAAsC;AACtC,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,aAAa,CAErE;AAED,4EAA4E;AAC5E,eAAO,MAAM,aAAa,EAAE,qBAAqB,CAAC,SAAS,CAAsE,CAAC;AAElI;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAIlJ;AAED,gHAAgH;AAChH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7G"}
|
package/dist/cli/adapter.js
CHANGED
|
@@ -1,86 +1,62 @@
|
|
|
1
1
|
// packages/skills/src/cli/adapter.ts
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { collectDependencies, entries } from "@g3nomaly/core/registry";
|
|
4
|
-
import { copySource } from "@g3nomaly/core/installer";
|
|
5
3
|
import { SkillTargetSchema, loadConfig, resolveProjectRoot } from "@g3nomaly/core/config";
|
|
6
|
-
import { lineError } from "@g3nomaly/core/cli";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
4
|
+
import { c, lineError, narrowSources, orExit, reportSourceRegistry } from "@g3nomaly/core/cli";
|
|
5
|
+
import { installedEntries, loadInstallManifest, loadSourceRegistry, manifestSources } from "@g3nomaly/core/installer";
|
|
6
|
+
import { skillsManifestPath } from "../registry/manifest";
|
|
7
|
+
import { readSkillSource } from "../registry/readSource";
|
|
9
8
|
import { SkillMetaSchema } from "../registry/types";
|
|
9
|
+
import { installSkillPackages } from "../packages/install";
|
|
10
|
+
import { BUILTIN_SOURCES } from "../sources/builtins";
|
|
10
11
|
/** Anchors the command to the git project and loads its config; exits when outside a repo. */
|
|
11
12
|
export async function openSkillProject(deps = {}) {
|
|
12
13
|
const projectRoot = (deps.resolveProjectRoot ?? resolveProjectRoot)();
|
|
13
14
|
if (projectRoot === null) {
|
|
14
|
-
console.error(lineError("No g3n project found
|
|
15
|
+
console.error(lineError("No g3n project found: run `g3n-skills init` inside a git repository."));
|
|
15
16
|
process.exit(1);
|
|
16
17
|
}
|
|
17
18
|
return { projectRoot, config: await loadConfig(projectRoot) };
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
/** One install target per configured harness, narrowed to `only` when given. */
|
|
23
|
-
export async function skillTargets(config, projectRoot, only) {
|
|
20
|
+
/** One target per configured harness, narrowed to `only` when given; exits on an unreadable `skills.json`. */
|
|
21
|
+
export function skillTargets(config, projectRoot, only) {
|
|
24
22
|
const settings = config.skills.settings;
|
|
25
23
|
const wanted = only === undefined || only.length === 0
|
|
26
24
|
? settings.targets
|
|
27
25
|
: only.map((t) => SkillTargetSchema.parse(t));
|
|
28
|
-
|
|
29
|
-
for (const target of wanted) {
|
|
26
|
+
return wanted.map((target) => {
|
|
30
27
|
const installDir = settings.installDirs[target];
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return targets;
|
|
28
|
+
const manifest = orExit(() => loadInstallManifest(skillsManifestPath(projectRoot, installDir), SkillMetaSchema));
|
|
29
|
+
return { label: target, installDir: path.join(projectRoot, installDir), store: manifest.store, manifest };
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/** Built-in sources plus those registered in any of the targets' `skills.json`. */
|
|
33
|
+
export function skillSources(targets) {
|
|
34
|
+
return manifestSources(targets.map((t) => t.manifest), BUILTIN_SOURCES);
|
|
38
35
|
}
|
|
36
|
+
/** Installed skills of one target. */
|
|
37
|
+
export function installedSkills(target) {
|
|
38
|
+
return installedEntries(target.manifest, SkillMetaSchema);
|
|
39
|
+
}
|
|
40
|
+
/** What the core install and source commands print and check for skills. */
|
|
41
|
+
export const SKILL_CONTEXT = { bin: "g3n-skills", noun: "skill", entrySchema: SkillMetaSchema };
|
|
39
42
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* (remote plugins often carry a skill named like the plugin itself).
|
|
43
|
+
* Reads the skills of the targets' sources, or only those of `only`, and
|
|
44
|
+
* prints what could not be read; the caller disposes the result.
|
|
45
|
+
*
|
|
46
|
+
* @param only - Source name to read alone; exits when no such source is registered
|
|
45
47
|
*/
|
|
46
|
-
export function
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
for (const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (group !== undefined)
|
|
59
|
-
notes[key] = `also a plugin name — picked the single skill; name the plugin's other skills to add more`;
|
|
60
|
-
}
|
|
61
|
-
else if (group !== undefined) {
|
|
62
|
-
named.push(...group);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
unknown.push(key);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (!withDependencies)
|
|
69
|
-
return { resolved: [...new Set(named)], unknown, notes };
|
|
70
|
-
const resolved = [];
|
|
71
|
-
for (const key of new Set(named)) {
|
|
72
|
-
const closure = new Set();
|
|
73
|
-
collectDependencies(key, registry, closure, unknown);
|
|
74
|
-
for (const dep of closure) {
|
|
75
|
-
if (!named.includes(dep) && notes[dep] === undefined)
|
|
76
|
-
notes[dep] = `dep of ${key}`;
|
|
77
|
-
resolved.push(dep);
|
|
78
|
-
}
|
|
48
|
+
export async function openSkillRegistry(targets, projectRoot, only) {
|
|
49
|
+
const registry = await loadSourceRegistry(narrowSources(skillSources(targets), only, "g3n-skills"), projectRoot, readSkillSource);
|
|
50
|
+
reportSourceRegistry(registry);
|
|
51
|
+
return registry;
|
|
52
|
+
}
|
|
53
|
+
/** Installs the packages of the given skills in one target and prints each failure; sets exit code 1 on any. */
|
|
54
|
+
export async function installPackagesReporting(target, keys) {
|
|
55
|
+
for (const result of await installSkillPackages(target.installDir, keys)) {
|
|
56
|
+
if (result.error === undefined)
|
|
57
|
+
continue;
|
|
58
|
+
console.error(lineError(`${c.key(result.key)} (${c.target(target.label)}): its packages could not be installed, so its hooks will not run: ${result.error}`));
|
|
59
|
+
process.exitCode = 1;
|
|
79
60
|
}
|
|
80
|
-
return { resolved: [...new Set(resolved)], unknown: [...new Set(unknown)], notes };
|
|
81
61
|
}
|
|
82
|
-
export const skillSource = (entry) => {
|
|
83
|
-
const { group } = SkillMetaSchema.pick({ group: true }).parse(entry);
|
|
84
|
-
return copySource((filePath) => resolveSkillSourcePath(group, filePath));
|
|
85
|
-
};
|
|
86
62
|
//# sourceMappingURL=adapter.js.map
|
package/dist/cli/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/cli/adapter.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/cli/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { InstallOptions } from "@g3nomaly/core/cli";
|
|
2
2
|
import type { ProjectDeps } from "../adapter";
|
|
3
3
|
export interface AddOptions extends InstallOptions {
|
|
4
4
|
targets?: string[];
|
|
5
|
-
/** Git URL of a plugin or marketplace repository to install from instead of the package */
|
|
6
|
-
remote?: string;
|
|
7
5
|
}
|
|
8
|
-
export declare const noValueDialogue: Dialogue<InstallInput>;
|
|
9
|
-
export declare const entryNotFoundDialogue: Dialogue<InstallInput>;
|
|
10
|
-
export declare const collisionDialogue: Dialogue<InstallInput>;
|
|
11
6
|
/**
|
|
12
|
-
* Installs skills
|
|
13
|
-
*
|
|
14
|
-
* the
|
|
7
|
+
* Installs skills or whole groups from the registered sources into every
|
|
8
|
+
* configured target, each with the skills it depends on from any source, and
|
|
9
|
+
* installs the packages of the skills that ship a `package.json`. A name more
|
|
10
|
+
* than one source offers is picked as `<name>@<source>`; with no names the
|
|
11
|
+
* user picks from what the sources offer.
|
|
15
12
|
*/
|
|
16
|
-
export declare function addCommand(
|
|
13
|
+
export declare function addCommand(names: string[], options?: AddOptions, deps?: ProjectDeps): Promise<void>;
|
|
17
14
|
//# sourceMappingURL=add.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,UAAe,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CASjH"}
|
package/dist/cli/commands/add.js
CHANGED
|
@@ -1,108 +1,22 @@
|
|
|
1
1
|
// packages/skills/src/cli/commands/add.ts
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { cloneRemote, removeCheckout } from "../../remote/fetch";
|
|
5
|
-
import { loadRemoteRegistry, remoteSkillSource } from "../../remote/registry";
|
|
6
|
-
import { openSkillProject, resolveSkillKeys, skillRegistry, skillSource, skillTargets } from "../adapter";
|
|
7
|
-
export const noValueDialogue = {
|
|
8
|
-
steps: {
|
|
9
|
-
selectSkills: {
|
|
10
|
-
kind: StepKind.MultiSelect,
|
|
11
|
-
message: "Select skills to install:",
|
|
12
|
-
choices: (input) => input.keyChoices ?? [],
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
export const entryNotFoundDialogue = {
|
|
17
|
-
steps: {
|
|
18
|
-
entryNotFound: {
|
|
19
|
-
kind: StepKind.Confirm,
|
|
20
|
-
message: "Unknown skill(s): {unknown}. Continue with the remaining selection?",
|
|
21
|
-
initial: false,
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
export const collisionDialogue = {
|
|
26
|
-
steps: {
|
|
27
|
-
conflict: {
|
|
28
|
-
kind: StepKind.Select,
|
|
29
|
-
message: "{key} ({target}) has local changes. What would you like to do?",
|
|
30
|
-
choices: [
|
|
31
|
-
{ value: ConflictDecision.Keep, label: "Keep my changes — skip modified files" },
|
|
32
|
-
{ value: ConflictDecision.Overwrite, label: "Overwrite with the package version" },
|
|
33
|
-
],
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
};
|
|
2
|
+
import { addFromSources } from "@g3nomaly/core/cli";
|
|
3
|
+
import { SKILL_CONTEXT, installPackagesReporting, openSkillProject, openSkillRegistry, skillTargets } from "../adapter";
|
|
37
4
|
/**
|
|
38
|
-
* Installs skills
|
|
39
|
-
*
|
|
40
|
-
* the
|
|
5
|
+
* Installs skills or whole groups from the registered sources into every
|
|
6
|
+
* configured target, each with the skills it depends on from any source, and
|
|
7
|
+
* installs the packages of the skills that ship a `package.json`. A name more
|
|
8
|
+
* than one source offers is picked as `<name>@<source>`; with no names the
|
|
9
|
+
* user picks from what the sources offer.
|
|
41
10
|
*/
|
|
42
|
-
export async function addCommand(
|
|
11
|
+
export async function addCommand(names, options = {}, deps = {}) {
|
|
43
12
|
const { projectRoot, config } = await openSkillProject(deps);
|
|
44
|
-
const targets =
|
|
45
|
-
|
|
46
|
-
const registry = await skillRegistry();
|
|
47
|
-
await installSkills(keys, registry, skillSource, targets, options, {
|
|
48
|
-
withDependencies: true,
|
|
49
|
-
skillFirst: false,
|
|
50
|
-
unknownHint: `Run ${c.cmd("g3n-skills ls")} to see what is available.`,
|
|
51
|
-
});
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
const checkout = await cloneRemoteOrExit(options.remote);
|
|
13
|
+
const targets = skillTargets(config, projectRoot, options.targets);
|
|
14
|
+
const registry = await openSkillRegistry(targets, projectRoot);
|
|
55
15
|
try {
|
|
56
|
-
|
|
57
|
-
for (const warning of warnings)
|
|
58
|
-
console.log(lineWarn(warning));
|
|
59
|
-
await installSkills(keys, registry, remoteSkillSource(checkout), targets, options, {
|
|
60
|
-
withDependencies: false,
|
|
61
|
-
skillFirst: true,
|
|
62
|
-
unknownHint: `The repository provides: ${Object.keys(registry).map((k) => c.key(k)).join(", ")}.`,
|
|
63
|
-
});
|
|
16
|
+
await addFromSources(targets, names, registry, options, SKILL_CONTEXT, installPackagesReporting);
|
|
64
17
|
}
|
|
65
18
|
finally {
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
async function installSkills(keys, registry, source, targets, options, plan) {
|
|
70
|
-
const { resolved, unknown, notes } = resolveSkillKeys(keys, registry, plan.withDependencies, plan.skillFirst);
|
|
71
|
-
if (unknown.length > 0) {
|
|
72
|
-
console.error(lineError(`Unknown skill(s): ${unknown.map((k) => c.key(k)).join(", ")}. ${plan.unknownHint}`));
|
|
73
|
-
const proceed = resolved.length > 0
|
|
74
|
-
&& (await runDialogueValue(entryNotFoundDialogue, { unknown: unknown.map((k) => c.key(k)).join(", ") }, options.answers)) === true;
|
|
75
|
-
if (!proceed)
|
|
76
|
-
process.exit(1);
|
|
77
|
-
}
|
|
78
|
-
for (const [dep, why] of Object.entries(notes))
|
|
79
|
-
console.log(lineInfo(`${c.key(dep)} — ${why}`));
|
|
80
|
-
await addEntries(registry, targets, source, resolved, options, {
|
|
81
|
-
onNoValue: noValueDialogue,
|
|
82
|
-
onCollision: collisionDialogue,
|
|
83
|
-
});
|
|
84
|
-
for (const target of targets)
|
|
85
|
-
saveUserManifest(target.store);
|
|
86
|
-
}
|
|
87
|
-
async function cloneRemoteOrExit(url) {
|
|
88
|
-
try {
|
|
89
|
-
return await cloneRemote(url);
|
|
19
|
+
registry.dispose();
|
|
90
20
|
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
console.error(lineError(`Could not fetch ${c.key(url)} — ${errorMessage(error)}`));
|
|
93
|
-
process.exit(1);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
async function loadRemoteRegistryOrExit(checkout) {
|
|
97
|
-
try {
|
|
98
|
-
return await loadRemoteRegistry(checkout);
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
console.error(lineError(`${c.key(checkout.url)} — ${errorMessage(error)}`));
|
|
102
|
-
process.exit(1);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
function errorMessage(error) {
|
|
106
|
-
return error instanceof Error ? error.message : String(error);
|
|
107
21
|
}
|
|
108
22
|
//# sourceMappingURL=add.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAOxH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAe,EAAE,OAAO,GAAe,EAAE,EAAE,IAAI,GAAgB,EAAE;IAChG,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAI,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,wBAAwB,CAAC,CAAC;IACnG,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import type { LSOptions } from "@g3nomaly/core/cli";
|
|
2
|
-
|
|
3
|
-
export
|
|
2
|
+
import type { ProjectDeps } from "../adapter";
|
|
3
|
+
export interface LsOptions extends LSOptions {
|
|
4
|
+
/** List what `skills.json` records instead of what the sources offer */
|
|
5
|
+
installed?: boolean;
|
|
6
|
+
/** Only the skills of this registered source */
|
|
7
|
+
source?: string;
|
|
8
|
+
}
|
|
9
|
+
/** Lists the skills the registered sources offer, `●` marking installed ones, or with `installed` only what is installed. */
|
|
10
|
+
export declare function lsCommand(options?: LsOptions, deps?: ProjectDeps): Promise<void>;
|
|
4
11
|
//# sourceMappingURL=ls.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,
|
|
1
|
+
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gDAAgD;IAChD,MAAM,CAAC,EAAK,MAAM,CAAC;CACpB;AAED,6HAA6H;AAC7H,wBAAsB,SAAS,CAAC,OAAO,GAAE,SAAc,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9F"}
|
package/dist/cli/commands/ls.js
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
// packages/skills/src/cli/commands/ls.ts
|
|
2
|
-
import { lsEntries } from "@g3nomaly/core/cli";
|
|
3
|
-
import {
|
|
4
|
-
/** Lists skills
|
|
5
|
-
export async function lsCommand(options = {}) {
|
|
6
|
-
|
|
2
|
+
import { lsEntries, lsSourceRegistry } from "@g3nomaly/core/cli";
|
|
3
|
+
import { installedSkills, openSkillProject, openSkillRegistry, skillSources, skillTargets } from "../adapter";
|
|
4
|
+
/** Lists the skills the registered sources offer, `●` marking installed ones, or with `installed` only what is installed. */
|
|
5
|
+
export async function lsCommand(options = {}, deps = {}) {
|
|
6
|
+
const { projectRoot, config } = await openSkillProject(deps);
|
|
7
|
+
const targets = skillTargets(config, projectRoot);
|
|
8
|
+
const installed = {};
|
|
9
|
+
for (const target of targets)
|
|
10
|
+
for (const [key, entry] of Object.entries(installedSkills(target)))
|
|
11
|
+
installed[key] ??= entry;
|
|
12
|
+
if (options.installed === true) {
|
|
13
|
+
lsEntries(installed, options);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const registry = await openSkillRegistry(targets, projectRoot, options.source);
|
|
17
|
+
try {
|
|
18
|
+
lsSourceRegistry(registry, skillSources(targets), installed, options);
|
|
19
|
+
}
|
|
20
|
+
finally {
|
|
21
|
+
registry.dispose();
|
|
22
|
+
}
|
|
7
23
|
}
|
|
8
24
|
//# sourceMappingURL=ls.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGjE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU9G,6HAA6H;AAC7H,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAO,GAAc,EAAE,EAAE,IAAI,GAAgB,EAAE;IAC7E,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAK,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,SAAS,GAAkB,EAAE,CAAC;IACpC,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAAE,SAAS,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;IAE3H,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC/B,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,IAAI,CAAC;QACH,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { InstallOptions } from "@g3nomaly/core/cli";
|
|
2
2
|
import type { ProjectDeps } from "../adapter";
|
|
3
3
|
export interface RemoveOptions extends InstallOptions {
|
|
4
4
|
targets?: string[];
|
|
5
5
|
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export declare function removeCommand(
|
|
6
|
+
/**
|
|
7
|
+
* Removes installed skills, hooks included, with the packages installed into
|
|
8
|
+
* them, and drops them from each target's `skills.json`. Works from the
|
|
9
|
+
* manifests alone; installed dependents are offered for removal too.
|
|
10
|
+
*/
|
|
11
|
+
export declare function removeCommand(names: string[], options?: RemoveOptions, deps?: ProjectDeps): Promise<void>;
|
|
12
12
|
//# sourceMappingURL=remove.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,aAAkB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvH"}
|
|
@@ -1,60 +1,15 @@
|
|
|
1
1
|
// packages/skills/src/cli/commands/remove.ts
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
},
|
|
12
|
-
},
|
|
13
|
-
};
|
|
14
|
-
export const cascadeDialogue = {
|
|
15
|
-
steps: {
|
|
16
|
-
cascade: {
|
|
17
|
-
kind: StepKind.Confirm,
|
|
18
|
-
message: "Also remove {dependents}?",
|
|
19
|
-
initial: true,
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
export const collisionDialogue = {
|
|
24
|
-
steps: {
|
|
25
|
-
conflict: {
|
|
26
|
-
kind: StepKind.Select,
|
|
27
|
-
message: "{key} ({target}) has local changes. What would you like to do?",
|
|
28
|
-
choices: [
|
|
29
|
-
{ value: ConflictDecision.Keep, label: "Keep the skill — remove nothing" },
|
|
30
|
-
{ value: ConflictDecision.Overwrite, label: "Remove it anyway, including my changes" },
|
|
31
|
-
],
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
export const incompleteDialogue = {
|
|
36
|
-
steps: {
|
|
37
|
-
incomplete: {
|
|
38
|
-
kind: StepKind.Confirm,
|
|
39
|
-
message: "{key} ({target}) is missing {missing} on disk. Remove the rest and untrack it?",
|
|
40
|
-
initial: true,
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
/** Removes installed skills and drops them from each target's `skills.json`. */
|
|
45
|
-
export async function removeCommand(keys, options = {}, deps = {}) {
|
|
2
|
+
import { removeFromTargets } from "@g3nomaly/core/cli";
|
|
3
|
+
import { removeSkillPackages } from "../../packages/install";
|
|
4
|
+
import { SKILL_CONTEXT, openSkillProject, skillTargets } from "../adapter";
|
|
5
|
+
/**
|
|
6
|
+
* Removes installed skills, hooks included, with the packages installed into
|
|
7
|
+
* them, and drops them from each target's `skills.json`. Works from the
|
|
8
|
+
* manifests alone; installed dependents are offered for removal too.
|
|
9
|
+
*/
|
|
10
|
+
export async function removeCommand(names, options = {}, deps = {}) {
|
|
46
11
|
const { projectRoot, config } = await openSkillProject(deps);
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
// Unknown keys stay in the list so the command reports them as "not installed".
|
|
50
|
-
const { resolved, unknown } = resolveSkillKeys(keys, registry);
|
|
51
|
-
await removeEntries(registry, targets, [...resolved, ...unknown], options, {
|
|
52
|
-
onNoValue: noValueDialogue,
|
|
53
|
-
onCascade: cascadeDialogue,
|
|
54
|
-
onCollision: collisionDialogue,
|
|
55
|
-
onIncomplete: incompleteDialogue,
|
|
56
|
-
});
|
|
57
|
-
for (const target of targets)
|
|
58
|
-
saveUserManifest(target.store);
|
|
12
|
+
const targets = skillTargets(config, projectRoot, options.targets);
|
|
13
|
+
await removeFromTargets(targets, names, options, SKILL_CONTEXT, (target, removed) => removeSkillPackages(target.installDir, removed));
|
|
59
14
|
}
|
|
60
15
|
//# sourceMappingURL=remove.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO3E;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAe,EAAE,OAAO,GAAkB,EAAE,EAAE,IAAI,GAAgB,EAAE;IACtG,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,MAAM,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AACxI,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ProjectDeps } from "../adapter";
|
|
2
|
+
export interface SourceAddOptions {
|
|
3
|
+
/** Name to register under; derived from the source when absent */
|
|
4
|
+
name?: string;
|
|
5
|
+
/** Branch or tag a git source is pinned to */
|
|
6
|
+
ref?: string;
|
|
7
|
+
targets?: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface SourceLsOptions {
|
|
10
|
+
json?: boolean;
|
|
11
|
+
targets?: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface SourceRemoveOptions {
|
|
14
|
+
/** Unregister even when installed skills came from the source */
|
|
15
|
+
force?: boolean;
|
|
16
|
+
targets?: string[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Registers a git repository, npm package or local folder as a skill source
|
|
20
|
+
* in every target's `skills.json`, after checking it offers at least one skill.
|
|
21
|
+
*
|
|
22
|
+
* @param input - The source as typed, e.g. `owner/repo`, `npm:@scope/skills` or `./my-skills`
|
|
23
|
+
*/
|
|
24
|
+
export declare function sourceAddCommand(input: string, options?: SourceAddOptions, deps?: ProjectDeps): Promise<void>;
|
|
25
|
+
/** Lists each target's sources, built-in ones first, with how many installed skills came from each. */
|
|
26
|
+
export declare function sourceLsCommand(options?: SourceLsOptions, deps?: ProjectDeps): Promise<void>;
|
|
27
|
+
/** Unregisters a source from every target; refused for built-in sources and, unless forced, while skills came from it. */
|
|
28
|
+
export declare function sourceRemoveCommand(name: string, options?: SourceRemoveOptions, deps?: ProjectDeps): Promise<void>;
|
|
29
|
+
//# sourceMappingURL=source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/source.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,IAAI,CAAC,EAAK,MAAM,CAAC;IACjB,8CAA8C;IAC9C,GAAG,CAAC,EAAM,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAK,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,iEAAiE;IACjE,KAAK,CAAC,EAAI,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAOD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3H;AAED,uGAAuG;AACvG,wBAAsB,eAAe,CAAC,OAAO,GAAE,eAAoB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1G;AAED,0HAA0H;AAC1H,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhI"}
|