@g3nomaly/skills 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/adapter.d.ts +55 -18
- package/dist/cli/adapter.d.ts.map +1 -1
- package/dist/cli/adapter.js +70 -64
- package/dist/cli/adapter.js.map +1 -1
- package/dist/cli/commands/add.d.ts +16 -10
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +16 -98
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/init.d.ts +25 -2
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +31 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/ls.d.ts +18 -2
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +26 -5
- package/dist/cli/commands/ls.js.map +1 -1
- package/dist/cli/commands/remove.d.ts +16 -7
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +15 -56
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/commands/source.d.ts +58 -0
- package/dist/cli/commands/source.d.ts.map +1 -0
- package/dist/cli/commands/source.js +49 -0
- package/dist/cli/commands/source.js.map +1 -0
- package/dist/cli/commands/update.d.ts +15 -6
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +13 -43
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +84 -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 +29 -0
- package/dist/packages/install.d.ts.map +1 -0
- package/dist/packages/install.js +48 -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 +33 -0
- package/dist/registry/locate.d.ts.map +1 -0
- package/dist/registry/locate.js +88 -0
- package/dist/registry/locate.js.map +1 -0
- package/dist/registry/manifest.d.ts +10 -0
- package/dist/registry/manifest.d.ts.map +1 -0
- package/dist/registry/manifest.js +15 -0
- package/dist/registry/manifest.js.map +1 -0
- package/dist/registry/readSkillDir.d.ts +9 -6
- package/dist/registry/readSkillDir.d.ts.map +1 -1
- package/dist/registry/readSkillDir.js +24 -24
- package/dist/registry/readSkillDir.js.map +1 -1
- package/dist/registry/readSource.d.ts +12 -0
- package/dist/registry/readSource.d.ts.map +1 -0
- package/dist/registry/readSource.js +33 -0
- package/dist/registry/readSource.js.map +1 -0
- package/dist/registry/types.d.ts +27 -16
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/types.js +8 -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 +9 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +22 -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,30 +1,67 @@
|
|
|
1
1
|
import { resolveProjectRoot } from "@g3nomaly/core/config";
|
|
2
2
|
import type { G3nConfig } from "@g3nomaly/core/config";
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
|
|
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";
|
|
7
|
+
/**
|
|
8
|
+
* @brief Injection point for tests; the real project root comes from git discovery.
|
|
9
|
+
*
|
|
10
|
+
* @property resolveProjectRoot - Replaces git discovery, e.g. `() => "/tmp/project"`.
|
|
11
|
+
*/
|
|
6
12
|
export interface ProjectDeps {
|
|
7
13
|
resolveProjectRoot?: typeof resolveProjectRoot;
|
|
8
14
|
}
|
|
9
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* @brief Anchors the command to the git project and loads its config; exits when outside a repo.
|
|
17
|
+
*
|
|
18
|
+
* @param deps - Test injection; the default discovers the project from git.
|
|
19
|
+
* @returns The project root and its loaded config.
|
|
20
|
+
*/
|
|
10
21
|
export declare function openSkillProject(deps?: ProjectDeps): Promise<{
|
|
11
22
|
projectRoot: string;
|
|
12
23
|
config: G3nConfig;
|
|
13
24
|
}>;
|
|
14
|
-
export declare function skillRegistry(): Promise<SkillRegistry>;
|
|
15
|
-
/** One install target per configured harness, narrowed to `only` when given. */
|
|
16
|
-
export declare function skillTargets(config: G3nConfig, projectRoot: string, only?: string[]): Promise<InstallTarget[]>;
|
|
17
25
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
26
|
+
* @brief One target per configured harness, narrowed to `only` when given; exits on an unreadable `skills.json`.
|
|
27
|
+
*
|
|
28
|
+
* @param config - Loaded g3n config holding the configured harnesses.
|
|
29
|
+
* @param projectRoot - Absolute project root the install directories are relative to.
|
|
30
|
+
* @param only - Harness names to narrow to, e.g. `["claude"]`; every configured target when absent or empty.
|
|
31
|
+
* @returns One target per harness, each with its install directory and manifest.
|
|
32
|
+
*/
|
|
33
|
+
export declare function skillTargets(config: G3nConfig, projectRoot: string, only?: string[]): ManifestTarget[];
|
|
34
|
+
/**
|
|
35
|
+
* @brief Built-in sources plus those registered in any of the targets' `skills.json`.
|
|
36
|
+
*
|
|
37
|
+
* @param targets - Targets whose manifests are read.
|
|
38
|
+
* @returns The sources, built-in ones first.
|
|
39
|
+
*/
|
|
40
|
+
export declare function skillSources(targets: readonly ManifestTarget[]): RegisteredSource[];
|
|
41
|
+
/**
|
|
42
|
+
* @brief Installed skills of one target.
|
|
43
|
+
*
|
|
44
|
+
* @param target - Target whose `skills.json` is read.
|
|
45
|
+
* @returns The installed skills keyed by skill key.
|
|
46
|
+
*/
|
|
47
|
+
export declare function installedSkills(target: ManifestTarget): SkillRegistry;
|
|
48
|
+
/** What the core install and source commands print and check for skills. */
|
|
49
|
+
export declare const SKILL_CONTEXT: InstallCommandContext<SkillMeta>;
|
|
50
|
+
/**
|
|
51
|
+
* @brief Reads the skills of the targets' sources, or only those of `only`, and
|
|
52
|
+
* prints what could not be read; the caller disposes the result.
|
|
53
|
+
*
|
|
54
|
+
* @param targets - Targets whose sources are read.
|
|
55
|
+
* @param projectRoot - Absolute project root the sources are checked out under.
|
|
56
|
+
* @param only - Source name to read alone; exits when no such source is registered.
|
|
57
|
+
* @returns The skills per source; dispose it once read.
|
|
58
|
+
*/
|
|
59
|
+
export declare function openSkillRegistry(targets: readonly ManifestTarget[], projectRoot: string, only?: string): Promise<SourceRegistry<SkillMeta>>;
|
|
60
|
+
/**
|
|
61
|
+
* @brief Installs the packages of the given skills in one target and prints each failure; sets exit code 1 on any.
|
|
62
|
+
*
|
|
63
|
+
* @param target - Target whose install directory holds the skills.
|
|
64
|
+
* @param keys - Skill keys to install, e.g. `["emphasise"]`.
|
|
23
65
|
*/
|
|
24
|
-
export declare function
|
|
25
|
-
resolved: string[];
|
|
26
|
-
unknown: string[];
|
|
27
|
-
notes: Record<string, string>;
|
|
28
|
-
};
|
|
29
|
-
export declare const skillSource: EntrySource;
|
|
66
|
+
export declare function installPackagesReporting(target: ManifestTarget, keys: readonly string[]): Promise<void>;
|
|
30
67
|
//# 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;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,kBAAkB,CAAC,EAAE,OAAO,kBAAkB,CAAC;CAChD;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC,CAOlH;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAWtG;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,gBAAgB,EAAE,CAEnF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,aAAa,CAErE;AAED,4EAA4E;AAC5E,eAAO,MAAM,aAAa,EAAE,qBAAqB,CAAC,SAAS,CAAsE,CAAC;AAElI;;;;;;;;GAQG;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;;;;;GAKG;AACH,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,92 @@
|
|
|
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";
|
|
10
|
-
|
|
9
|
+
import { installSkillPackages } from "../packages/install";
|
|
10
|
+
import { BUILTIN_SOURCES } from "../sources/builtins";
|
|
11
|
+
/**
|
|
12
|
+
* @brief Anchors the command to the git project and loads its config; exits when outside a repo.
|
|
13
|
+
*
|
|
14
|
+
* @param deps - Test injection; the default discovers the project from git.
|
|
15
|
+
* @returns The project root and its loaded config.
|
|
16
|
+
*/
|
|
11
17
|
export async function openSkillProject(deps = {}) {
|
|
12
18
|
const projectRoot = (deps.resolveProjectRoot ?? resolveProjectRoot)();
|
|
13
19
|
if (projectRoot === null) {
|
|
14
|
-
console.error(lineError("No g3n project found
|
|
20
|
+
console.error(lineError("No g3n project found: run `g3n-skills init` inside a git repository."));
|
|
15
21
|
process.exit(1);
|
|
16
22
|
}
|
|
17
23
|
return { projectRoot, config: await loadConfig(projectRoot) };
|
|
18
24
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
/**
|
|
26
|
+
* @brief One target per configured harness, narrowed to `only` when given; exits on an unreadable `skills.json`.
|
|
27
|
+
*
|
|
28
|
+
* @param config - Loaded g3n config holding the configured harnesses.
|
|
29
|
+
* @param projectRoot - Absolute project root the install directories are relative to.
|
|
30
|
+
* @param only - Harness names to narrow to, e.g. `["claude"]`; every configured target when absent or empty.
|
|
31
|
+
* @returns One target per harness, each with its install directory and manifest.
|
|
32
|
+
*/
|
|
33
|
+
export function skillTargets(config, projectRoot, only) {
|
|
24
34
|
const settings = config.skills.settings;
|
|
25
35
|
const wanted = only === undefined || only.length === 0
|
|
26
36
|
? settings.targets
|
|
27
37
|
: only.map((t) => SkillTargetSchema.parse(t));
|
|
28
|
-
|
|
29
|
-
for (const target of wanted) {
|
|
38
|
+
return wanted.map((target) => {
|
|
30
39
|
const installDir = settings.installDirs[target];
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
store: await loadUserManifest(projectRoot, installDir),
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
return targets;
|
|
40
|
+
const manifest = orExit(() => loadInstallManifest(skillsManifestPath(projectRoot, installDir), SkillMetaSchema));
|
|
41
|
+
return { label: target, installDir: path.join(projectRoot, installDir), store: manifest.store, manifest };
|
|
42
|
+
});
|
|
38
43
|
}
|
|
39
44
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* (remote plugins often carry a skill named like the plugin itself).
|
|
45
|
+
* @brief Built-in sources plus those registered in any of the targets' `skills.json`.
|
|
46
|
+
*
|
|
47
|
+
* @param targets - Targets whose manifests are read.
|
|
48
|
+
* @returns The sources, built-in ones first.
|
|
45
49
|
*/
|
|
46
|
-
export function
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
50
|
+
export function skillSources(targets) {
|
|
51
|
+
return manifestSources(targets.map((t) => t.manifest), BUILTIN_SOURCES);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* @brief Installed skills of one target.
|
|
55
|
+
*
|
|
56
|
+
* @param target - Target whose `skills.json` is read.
|
|
57
|
+
* @returns The installed skills keyed by skill key.
|
|
58
|
+
*/
|
|
59
|
+
export function installedSkills(target) {
|
|
60
|
+
return installedEntries(target.manifest, SkillMetaSchema);
|
|
61
|
+
}
|
|
62
|
+
/** What the core install and source commands print and check for skills. */
|
|
63
|
+
export const SKILL_CONTEXT = { bin: "g3n-skills", noun: "skill", entrySchema: SkillMetaSchema };
|
|
64
|
+
/**
|
|
65
|
+
* @brief Reads the skills of the targets' sources, or only those of `only`, and
|
|
66
|
+
* prints what could not be read; the caller disposes the result.
|
|
67
|
+
*
|
|
68
|
+
* @param targets - Targets whose sources are read.
|
|
69
|
+
* @param projectRoot - Absolute project root the sources are checked out under.
|
|
70
|
+
* @param only - Source name to read alone; exits when no such source is registered.
|
|
71
|
+
* @returns The skills per source; dispose it once read.
|
|
72
|
+
*/
|
|
73
|
+
export async function openSkillRegistry(targets, projectRoot, only) {
|
|
74
|
+
const registry = await loadSourceRegistry(narrowSources(skillSources(targets), only, "g3n-skills"), projectRoot, readSkillSource);
|
|
75
|
+
reportSourceRegistry(registry);
|
|
76
|
+
return registry;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @brief Installs the packages of the given skills in one target and prints each failure; sets exit code 1 on any.
|
|
80
|
+
*
|
|
81
|
+
* @param target - Target whose install directory holds the skills.
|
|
82
|
+
* @param keys - Skill keys to install, e.g. `["emphasise"]`.
|
|
83
|
+
*/
|
|
84
|
+
export async function installPackagesReporting(target, keys) {
|
|
85
|
+
for (const result of await installSkillPackages(target.installDir, keys)) {
|
|
86
|
+
if (result.error === undefined)
|
|
87
|
+
continue;
|
|
88
|
+
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}`));
|
|
89
|
+
process.exitCode = 1;
|
|
79
90
|
}
|
|
80
|
-
return { resolved: [...new Set(resolved)], unknown: [...new Set(unknown)], notes };
|
|
81
91
|
}
|
|
82
|
-
export const skillSource = (entry) => {
|
|
83
|
-
const { group } = SkillMetaSchema.pick({ group: true }).parse(entry);
|
|
84
|
-
return copySource((filePath) => resolveSkillSourcePath(group, filePath));
|
|
85
|
-
};
|
|
86
92
|
//# 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,23 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { InstallOptions } from "@g3nomaly/core/cli";
|
|
2
2
|
import type { ProjectDeps } from "../adapter";
|
|
3
|
+
/**
|
|
4
|
+
* @brief Options of `addCommand`, on top of the core install options.
|
|
5
|
+
*
|
|
6
|
+
* @property targets - Harness names to install into, e.g. `["claude"]`; every configured target when absent.
|
|
7
|
+
*/
|
|
3
8
|
export interface AddOptions extends InstallOptions {
|
|
4
9
|
targets?: string[];
|
|
5
|
-
/** Git URL of a plugin or marketplace repository to install from instead of the package */
|
|
6
|
-
remote?: string;
|
|
7
10
|
}
|
|
8
|
-
export declare const noValueDialogue: Dialogue<InstallInput>;
|
|
9
|
-
export declare const entryNotFoundDialogue: Dialogue<InstallInput>;
|
|
10
|
-
export declare const collisionDialogue: Dialogue<InstallInput>;
|
|
11
11
|
/**
|
|
12
|
-
* Installs skills
|
|
13
|
-
*
|
|
14
|
-
* the
|
|
12
|
+
* @brief Installs skills or whole groups from the registered sources into every
|
|
13
|
+
* configured target, each with the skills it depends on from any source, and
|
|
14
|
+
* installs the packages of the skills that ship a `package.json`. A name more
|
|
15
|
+
* than one source offers is picked as `<name>@<source>`; with no names the
|
|
16
|
+
* user picks from what the sources offer.
|
|
17
|
+
*
|
|
18
|
+
* @param names - Skill keys or groups to install, e.g. `emphasise`; empty to pick from the sources.
|
|
19
|
+
* @param options - Force flag and the `targets` to narrow the install to.
|
|
20
|
+
* @param deps - Test injection.
|
|
15
21
|
*/
|
|
16
|
-
export declare function addCommand(
|
|
22
|
+
export declare function addCommand(names: string[], options?: AddOptions, deps?: ProjectDeps): Promise<void>;
|
|
17
23
|
//# 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;;;;GAIG;AACH,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;;GAUG;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,26 @@
|
|
|
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
|
+
* @brief 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.
|
|
10
|
+
*
|
|
11
|
+
* @param names - Skill keys or groups to install, e.g. `emphasise`; empty to pick from the sources.
|
|
12
|
+
* @param options - Force flag and the `targets` to narrow the install to.
|
|
13
|
+
* @param deps - Test injection.
|
|
41
14
|
*/
|
|
42
|
-
export async function addCommand(
|
|
15
|
+
export async function addCommand(names, options = {}, deps = {}) {
|
|
43
16
|
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);
|
|
17
|
+
const targets = skillTargets(config, projectRoot, options.targets);
|
|
18
|
+
const registry = await openSkillRegistry(targets, projectRoot);
|
|
55
19
|
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
|
-
});
|
|
20
|
+
await addFromSources(targets, names, registry, options, SKILL_CONTEXT, installPackagesReporting);
|
|
64
21
|
}
|
|
65
22
|
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);
|
|
23
|
+
registry.dispose();
|
|
90
24
|
}
|
|
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
25
|
}
|
|
108
26
|
//# 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;AAYxH;;;;;;;;;;GAUG;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,22 +1,45 @@
|
|
|
1
1
|
import type { SkillTarget, SkillsSettings } from "@g3nomaly/core/config";
|
|
2
2
|
import type { Dialogue, DialogueAnswers } from "@g3nomaly/core/cli";
|
|
3
3
|
import type { ProjectDeps } from "../adapter";
|
|
4
|
+
/**
|
|
5
|
+
* @brief Options of `initCommand`; the preset options skip the prompts.
|
|
6
|
+
*
|
|
7
|
+
* @property force - Reconfigure without asking when a config already exists.
|
|
8
|
+
* @property targets - Harness names to configure, e.g. `["claude", "codex"]`; skips the harness prompt.
|
|
9
|
+
* @property answers - Preset dialogue answers by step id; skips the terminal prompt.
|
|
10
|
+
*/
|
|
4
11
|
export interface InitOptions {
|
|
5
12
|
force?: boolean;
|
|
6
13
|
targets?: string[];
|
|
7
|
-
/** Preset dialogue answers by step id; skips the terminal prompt. */
|
|
8
14
|
answers?: DialogueAnswers;
|
|
9
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* @brief Answers of the init dialogue, parsed into the skills settings.
|
|
18
|
+
*
|
|
19
|
+
* @property targets - Harnesses to install skills for.
|
|
20
|
+
* @property claudeDir - Claude skills directory, relative to the project root, e.g. `.claude/skills`.
|
|
21
|
+
* @property codexDir - Codex skills directory, relative to the project root, e.g. `.codex/skills`.
|
|
22
|
+
*/
|
|
10
23
|
export interface SkillsInitAnswers {
|
|
11
24
|
targets: SkillTarget[];
|
|
12
25
|
claudeDir: string;
|
|
13
26
|
codexDir: string;
|
|
14
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* @brief Input of the init dialogue: the settings its steps start from.
|
|
30
|
+
*
|
|
31
|
+
* @property settings - Current skills settings, the initial value of each step.
|
|
32
|
+
*/
|
|
15
33
|
interface SkillsInitInput extends Record<string, unknown> {
|
|
16
34
|
settings: SkillsSettings;
|
|
17
35
|
}
|
|
18
36
|
export declare const initDialogue: Dialogue<SkillsInitInput>;
|
|
19
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* @brief Configures which harnesses skills are installed for.
|
|
39
|
+
*
|
|
40
|
+
* @param options - Force flag, targets and preset answers.
|
|
41
|
+
* @param deps - Test injection.
|
|
42
|
+
*/
|
|
20
43
|
export declare function initCommand(options?: InitOptions, deps?: ProjectDeps): Promise<void>;
|
|
21
44
|
export {};
|
|
22
45
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAa,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEpF,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAI,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAa,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEpF,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAI,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAI,WAAW,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAG,MAAM,CAAC;CACnB;AAWD;;;;GAIG;AACH,UAAU,eAAgB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvD,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAYD,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,eAAe,CA6BlD,CAAC;AAgDF;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ClG"}
|
|
@@ -7,6 +7,12 @@ import { z } from "zod";
|
|
|
7
7
|
import { SkillTargetSchema, configExists, loadConfig, resolveProjectRoot, saveConfig } from "@g3nomaly/core/config";
|
|
8
8
|
import { StepKind, c, runDialogue, runDialogueValue } from "@g3nomaly/core/cli";
|
|
9
9
|
const TargetsSchema = z.array(SkillTargetSchema);
|
|
10
|
+
/**
|
|
11
|
+
* @brief Validates a directory answer: rejects a blank one.
|
|
12
|
+
*
|
|
13
|
+
* @param v - Text the user typed; `undefined` when nothing was typed.
|
|
14
|
+
* @returns The error message to show, or `undefined` when the value is valid.
|
|
15
|
+
*/
|
|
10
16
|
const notEmpty = (v) => (v?.trim() ? undefined : "Directory cannot be empty");
|
|
11
17
|
const reconfigureDialogue = {
|
|
12
18
|
steps: {
|
|
@@ -47,6 +53,11 @@ export const initDialogue = {
|
|
|
47
53
|
},
|
|
48
54
|
},
|
|
49
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* @brief The printed lines of the skills settings: harnesses and their directories.
|
|
58
|
+
*
|
|
59
|
+
* @param targets - Harnesses to list.
|
|
60
|
+
*/
|
|
50
61
|
function settingsLines(targets, claudeDir, codexDir) {
|
|
51
62
|
return [
|
|
52
63
|
` targets: ${targets.map((t) => c.target(t)).join(", ")}`,
|
|
@@ -54,6 +65,13 @@ function settingsLines(targets, claudeDir, codexDir) {
|
|
|
54
65
|
` codex dir: ${c.dir(codexDir)}`,
|
|
55
66
|
];
|
|
56
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* @brief Answers taken from the preset options.
|
|
70
|
+
*
|
|
71
|
+
* @param options - Command options; `targets` is the preset.
|
|
72
|
+
* @param config - Loaded config whose directories fill the answers.
|
|
73
|
+
* @returns The preset answers, or `null` when no targets were given.
|
|
74
|
+
*/
|
|
57
75
|
function fromOptions(options, config) {
|
|
58
76
|
if (options.targets === undefined)
|
|
59
77
|
return null;
|
|
@@ -64,6 +82,13 @@ function fromOptions(options, config) {
|
|
|
64
82
|
codexDir: s.installDirs.codex,
|
|
65
83
|
};
|
|
66
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* @brief Parses the dialogue record into answers, keeping the configured directories where a step gave none.
|
|
87
|
+
*
|
|
88
|
+
* @param record - Answers of the dialogue by step id.
|
|
89
|
+
* @param config - Loaded config whose directories are the fallback.
|
|
90
|
+
* @returns The parsed answers.
|
|
91
|
+
*/
|
|
67
92
|
function parseAnswers(record, config) {
|
|
68
93
|
const s = config.skills.settings;
|
|
69
94
|
return {
|
|
@@ -72,7 +97,12 @@ function parseAnswers(record, config) {
|
|
|
72
97
|
codexDir: typeof record.codexDir === "string" ? record.codexDir : s.installDirs.codex,
|
|
73
98
|
};
|
|
74
99
|
}
|
|
75
|
-
/**
|
|
100
|
+
/**
|
|
101
|
+
* @brief Configures which harnesses skills are installed for.
|
|
102
|
+
*
|
|
103
|
+
* @param options - Force flag, targets and preset answers.
|
|
104
|
+
* @param deps - Test injection.
|
|
105
|
+
*/
|
|
76
106
|
export async function initCommand(options = {}, deps = {}) {
|
|
77
107
|
p.intro(chalk.bold.cyan("g3n-skills init"));
|
|
78
108
|
const projectRoot = (deps.resolveProjectRoot ?? resolveProjectRoot)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEpH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEpH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA8BhF,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACjD;;;;;GAKG;AACH,MAAM,QAAQ,GAAG,CAAC,CAAqB,EAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC;AAWtH,MAAM,mBAAmB,GAAa;IACpC,KAAK,EAAE;QACL,WAAW,EAAE;YACX,IAAI,EAAK,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,qCAAqC;YAC9C,OAAO,EAAE,KAAK;SACf;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAA8B;IACrD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,IAAI,EAAM,QAAQ,CAAC,WAAW;YAC9B,OAAO,EAAG,qCAAqC;YAC/C,OAAO,EAAG;gBACR,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE;gBACzC,EAAE,KAAK,EAAE,OAAO,EAAG,KAAK,EAAE,OAAO,EAAE;aACpC;YACD,OAAO,EAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO;YAC5C,QAAQ,EAAE,IAAI;YACd,IAAI,EAAM,WAAW;SACtB;QACD,SAAS,EAAE;YACT,IAAI,EAAM,QAAQ,CAAC,IAAI;YACvB,OAAO,EAAG,0BAA0B;YACpC,OAAO,EAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM;YACvD,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACtF,IAAI,EAAM,UAAU;SACrB;QACD,QAAQ,EAAE;YACR,IAAI,EAAM,QAAQ,CAAC,IAAI;YACvB,OAAO,EAAG,yBAAyB;YACnC,OAAO,EAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK;YACtD,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;SACtF;KACF;CACF,CAAC;AAEF;;;;GAIG;AACH,SAAS,aAAa,CAAC,OAAsB,EAAE,SAAiB,EAAE,QAAgB;IAChF,OAAO;QACL,kBAAkB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC9D,kBAAkB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QACpC,kBAAkB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;KACpC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,OAAoB,EAAE,MAAiB;IAC1D,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;IACjC,OAAO;QACL,OAAO,EAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM;QAC/B,QAAQ,EAAG,CAAC,CAAC,WAAW,CAAC,KAAK;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,MAAuB,EAAE,MAAiB;IAC9D,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;IACjC,OAAO;QACL,OAAO,EAAI,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9C,SAAS,EAAE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM;QACzF,QAAQ,EAAG,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK;KACvF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAO,GAAgB,EAAE,EAAE,IAAI,GAAgB,EAAE;IACjF,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE5C,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,EAAE,CAAC;IACtE,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0FAA0F,CAAC,CAAC,CAAC;QACrH,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE5C,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1G,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,mBAAmB,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACrF,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;IACH,CAAC;IAED,IAAI,OAA0B,CAAC;IAC/B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACtG,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QACD,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,UAAU,CAAC,WAAW,EAAE;QAC5B,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE;KACxH,CAAC,CAAC;IACH,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxH,CAAC;IAED,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClJ,CAAC"}
|