@kynetic-ai/spec 0.1.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +250 -17
- package/dist/acp/client.d.ts +18 -4
- package/dist/acp/client.d.ts.map +1 -1
- package/dist/acp/client.js +44 -26
- package/dist/acp/client.js.map +1 -1
- package/dist/acp/framing.d.ts +2 -2
- package/dist/acp/framing.d.ts.map +1 -1
- package/dist/acp/framing.js +37 -29
- package/dist/acp/framing.js.map +1 -1
- package/dist/acp/index.d.ts +6 -7
- package/dist/acp/index.d.ts.map +1 -1
- package/dist/acp/index.js +3 -3
- package/dist/acp/index.js.map +1 -1
- package/dist/acp/types.d.ts +5 -5
- package/dist/acp/types.d.ts.map +1 -1
- package/dist/acp/types.js +18 -18
- package/dist/acp/types.js.map +1 -1
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/adapters.js +24 -13
- package/dist/agents/adapters.js.map +1 -1
- package/dist/agents/index.d.ts +2 -2
- package/dist/agents/index.js +2 -2
- package/dist/agents/spawner.d.ts +4 -4
- package/dist/agents/spawner.d.ts.map +1 -1
- package/dist/agents/spawner.js +6 -6
- package/dist/agents/spawner.js.map +1 -1
- package/dist/cli/batch-context.d.ts +43 -0
- package/dist/cli/batch-context.d.ts.map +1 -0
- package/dist/cli/batch-context.js +93 -0
- package/dist/cli/batch-context.js.map +1 -0
- package/dist/cli/batch-exec.d.ts +107 -0
- package/dist/cli/batch-exec.d.ts.map +1 -0
- package/dist/cli/batch-exec.js +706 -0
- package/dist/cli/batch-exec.js.map +1 -0
- package/dist/cli/batch.d.ts +4 -2
- package/dist/cli/batch.d.ts.map +1 -1
- package/dist/cli/batch.js +15 -14
- package/dist/cli/batch.js.map +1 -1
- package/dist/cli/command-annotations.d.ts +23 -0
- package/dist/cli/command-annotations.d.ts.map +1 -0
- package/dist/cli/command-annotations.js +27 -0
- package/dist/cli/command-annotations.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +46 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +377 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/batch.d.ts +20 -0
- package/dist/cli/commands/batch.d.ts.map +1 -0
- package/dist/cli/commands/batch.js +214 -0
- package/dist/cli/commands/batch.js.map +1 -0
- package/dist/cli/commands/clone-for-testing.d.ts +1 -1
- package/dist/cli/commands/clone-for-testing.d.ts.map +1 -1
- package/dist/cli/commands/clone-for-testing.js +37 -47
- package/dist/cli/commands/clone-for-testing.js.map +1 -1
- package/dist/cli/commands/derive.d.ts +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +141 -88
- package/dist/cli/commands/derive.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +11 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +152 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/export.d.ts +12 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +134 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/help.d.ts +1 -1
- package/dist/cli/commands/help.d.ts.map +1 -1
- package/dist/cli/commands/help.js +163 -37
- package/dist/cli/commands/help.js.map +1 -1
- package/dist/cli/commands/inbox.d.ts +1 -1
- package/dist/cli/commands/inbox.d.ts.map +1 -1
- package/dist/cli/commands/inbox.js +178 -56
- package/dist/cli/commands/inbox.js.map +1 -1
- package/dist/cli/commands/index.d.ts +31 -19
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +31 -19
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts +5 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +108 -57
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/item.d.ts +1 -1
- package/dist/cli/commands/item.d.ts.map +1 -1
- package/dist/cli/commands/item.js +557 -274
- package/dist/cli/commands/item.js.map +1 -1
- package/dist/cli/commands/link.d.ts +1 -1
- package/dist/cli/commands/link.d.ts.map +1 -1
- package/dist/cli/commands/link.js +55 -46
- package/dist/cli/commands/link.js.map +1 -1
- package/dist/cli/commands/log.d.ts +1 -1
- package/dist/cli/commands/log.d.ts.map +1 -1
- package/dist/cli/commands/log.js +58 -51
- package/dist/cli/commands/log.js.map +1 -1
- package/dist/cli/commands/merge-driver.d.ts +19 -0
- package/dist/cli/commands/merge-driver.d.ts.map +1 -0
- package/dist/cli/commands/merge-driver.js +398 -0
- package/dist/cli/commands/merge-driver.js.map +1 -0
- package/dist/cli/commands/meta.d.ts +1 -1
- package/dist/cli/commands/meta.d.ts.map +1 -1
- package/dist/cli/commands/meta.js +534 -399
- package/dist/cli/commands/meta.js.map +1 -1
- package/dist/cli/commands/module.d.ts +1 -1
- package/dist/cli/commands/module.d.ts.map +1 -1
- package/dist/cli/commands/module.js +30 -25
- package/dist/cli/commands/module.js.map +1 -1
- package/dist/cli/commands/plan-import.d.ts +11 -0
- package/dist/cli/commands/plan-import.d.ts.map +1 -0
- package/dist/cli/commands/plan-import.js +547 -0
- package/dist/cli/commands/plan-import.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +10 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +421 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/ralph.d.ts +1 -1
- package/dist/cli/commands/ralph.d.ts.map +1 -1
- package/dist/cli/commands/ralph.js +1109 -170
- package/dist/cli/commands/ralph.js.map +1 -1
- package/dist/cli/commands/refs.d.ts +13 -0
- package/dist/cli/commands/refs.d.ts.map +1 -0
- package/dist/cli/commands/refs.js +283 -0
- package/dist/cli/commands/refs.js.map +1 -0
- package/dist/cli/commands/search.d.ts +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +199 -37
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/serve.d.ts +10 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +491 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/session.d.ts +25 -6
- package/dist/cli/commands/session.d.ts.map +1 -1
- package/dist/cli/commands/session.js +810 -127
- package/dist/cli/commands/session.js.map +1 -1
- package/dist/cli/commands/setup-seeding.d.ts +81 -0
- package/dist/cli/commands/setup-seeding.d.ts.map +1 -0
- package/dist/cli/commands/setup-seeding.js +292 -0
- package/dist/cli/commands/setup-seeding.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +77 -3
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +1267 -274
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/shadow.d.ts +1 -1
- package/dist/cli/commands/shadow.d.ts.map +1 -1
- package/dist/cli/commands/shadow.js +70 -50
- package/dist/cli/commands/shadow.js.map +1 -1
- package/dist/cli/commands/skill-crud.d.ts +58 -0
- package/dist/cli/commands/skill-crud.d.ts.map +1 -0
- package/dist/cli/commands/skill-crud.js +753 -0
- package/dist/cli/commands/skill-crud.js.map +1 -0
- package/dist/cli/commands/skill-diff.d.ts +27 -0
- package/dist/cli/commands/skill-diff.d.ts.map +1 -0
- package/dist/cli/commands/skill-diff.js +840 -0
- package/dist/cli/commands/skill-diff.js.map +1 -0
- package/dist/cli/commands/skill-install.d.ts +56 -0
- package/dist/cli/commands/skill-install.d.ts.map +1 -0
- package/dist/cli/commands/skill-install.js +509 -0
- package/dist/cli/commands/skill-install.js.map +1 -0
- package/dist/cli/commands/skill.d.ts +20 -0
- package/dist/cli/commands/skill.d.ts.map +1 -0
- package/dist/cli/commands/skill.js +36 -0
- package/dist/cli/commands/skill.js.map +1 -0
- package/dist/cli/commands/task.d.ts +1 -1
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +584 -350
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/tasks.d.ts +26 -1
- package/dist/cli/commands/tasks.d.ts.map +1 -1
- package/dist/cli/commands/tasks.js +225 -122
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/commands/trait.d.ts +1 -1
- package/dist/cli/commands/trait.d.ts.map +1 -1
- package/dist/cli/commands/trait.js +166 -101
- package/dist/cli/commands/trait.js.map +1 -1
- package/dist/cli/commands/triage.d.ts +7 -0
- package/dist/cli/commands/triage.d.ts.map +1 -0
- package/dist/cli/commands/triage.js +483 -0
- package/dist/cli/commands/triage.js.map +1 -0
- package/dist/cli/commands/util.d.ts +7 -0
- package/dist/cli/commands/util.d.ts.map +1 -0
- package/dist/cli/commands/util.js +30 -0
- package/dist/cli/commands/util.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +264 -83
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts +16 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +851 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/exit-codes.d.ts +7 -0
- package/dist/cli/exit-codes.d.ts.map +1 -1
- package/dist/cli/exit-codes.js +26 -18
- package/dist/cli/exit-codes.js.map +1 -1
- package/dist/cli/help/content.d.ts.map +1 -1
- package/dist/cli/help/content.js +86 -71
- package/dist/cli/help/content.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +131 -19
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/introspection.d.ts +6 -2
- package/dist/cli/introspection.d.ts.map +1 -1
- package/dist/cli/introspection.js +11 -8
- package/dist/cli/introspection.js.map +1 -1
- package/dist/cli/output.d.ts +64 -4
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +237 -85
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/parse-utils.d.ts +21 -0
- package/dist/cli/parse-utils.d.ts.map +1 -0
- package/dist/cli/parse-utils.js +32 -0
- package/dist/cli/parse-utils.js.map +1 -0
- package/dist/cli/pid-utils.d.ts +72 -0
- package/dist/cli/pid-utils.d.ts.map +1 -0
- package/dist/cli/pid-utils.js +174 -0
- package/dist/cli/pid-utils.js.map +1 -0
- package/dist/cli/suggest.d.ts.map +1 -1
- package/dist/cli/suggest.js +1 -2
- package/dist/cli/suggest.js.map +1 -1
- package/dist/cli/validators.d.ts +43 -0
- package/dist/cli/validators.d.ts.map +1 -0
- package/dist/cli/validators.js +84 -0
- package/dist/cli/validators.js.map +1 -0
- package/dist/daemon/index.ts +52 -0
- package/dist/daemon/middleware/project-context.ts +126 -0
- package/dist/daemon/pid.ts +179 -0
- package/dist/daemon/project-context.ts +343 -0
- package/dist/daemon/routes/inbox.ts +164 -0
- package/dist/daemon/routes/items.ts +322 -0
- package/dist/daemon/routes/meta.ts +118 -0
- package/dist/daemon/routes/projects.ts +162 -0
- package/dist/daemon/routes/tasks.ts +327 -0
- package/dist/daemon/routes/triage.ts +402 -0
- package/dist/daemon/routes/validation.ts +248 -0
- package/dist/daemon/server.ts +408 -0
- package/dist/daemon/watcher.ts +195 -0
- package/dist/daemon/websocket/handler.ts +138 -0
- package/dist/daemon/websocket/heartbeat.ts +71 -0
- package/dist/daemon/websocket/pubsub.ts +125 -0
- package/dist/daemon/websocket/types.ts +66 -0
- package/dist/export/html.d.ts +19 -0
- package/dist/export/html.d.ts.map +1 -0
- package/dist/export/html.js +239 -0
- package/dist/export/html.js.map +1 -0
- package/dist/export/index.d.ts +10 -0
- package/dist/export/index.d.ts.map +1 -0
- package/dist/export/index.js +10 -0
- package/dist/export/index.js.map +1 -0
- package/dist/export/json.d.ts +24 -0
- package/dist/export/json.d.ts.map +1 -0
- package/dist/export/json.js +198 -0
- package/dist/export/json.js.map +1 -0
- package/dist/export/triage.d.ts +51 -0
- package/dist/export/triage.d.ts.map +1 -0
- package/dist/export/triage.js +83 -0
- package/dist/export/triage.js.map +1 -0
- package/dist/export/types.d.ts +122 -0
- package/dist/export/types.d.ts.map +1 -0
- package/dist/export/types.js +9 -0
- package/dist/export/types.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/lib/claude-plugin-registry.d.ts +66 -0
- package/dist/lib/claude-plugin-registry.d.ts.map +1 -0
- package/dist/lib/claude-plugin-registry.js +318 -0
- package/dist/lib/claude-plugin-registry.js.map +1 -0
- package/dist/merge/arrays.d.ts +87 -0
- package/dist/merge/arrays.d.ts.map +1 -0
- package/dist/merge/arrays.js +164 -0
- package/dist/merge/arrays.js.map +1 -0
- package/dist/merge/file-type.d.ts +32 -0
- package/dist/merge/file-type.d.ts.map +1 -0
- package/dist/merge/file-type.js +70 -0
- package/dist/merge/file-type.js.map +1 -0
- package/dist/merge/index.d.ts +14 -0
- package/dist/merge/index.d.ts.map +1 -0
- package/dist/merge/index.js +11 -0
- package/dist/merge/index.js.map +1 -0
- package/dist/merge/objects.d.ts +46 -0
- package/dist/merge/objects.d.ts.map +1 -0
- package/dist/merge/objects.js +193 -0
- package/dist/merge/objects.js.map +1 -0
- package/dist/merge/parse.d.ts +23 -0
- package/dist/merge/parse.d.ts.map +1 -0
- package/dist/merge/parse.js +78 -0
- package/dist/merge/parse.js.map +1 -0
- package/dist/merge/resolve.d.ts +66 -0
- package/dist/merge/resolve.d.ts.map +1 -0
- package/dist/merge/resolve.js +189 -0
- package/dist/merge/resolve.js.map +1 -0
- package/dist/merge/types.d.ts +82 -0
- package/dist/merge/types.d.ts.map +1 -0
- package/dist/merge/types.js +8 -0
- package/dist/merge/types.js.map +1 -0
- package/dist/parser/agent-data-sections.d.ts +53 -0
- package/dist/parser/agent-data-sections.d.ts.map +1 -0
- package/dist/parser/agent-data-sections.js +118 -0
- package/dist/parser/agent-data-sections.js.map +1 -0
- package/dist/parser/alignment.d.ts +4 -4
- package/dist/parser/alignment.d.ts.map +1 -1
- package/dist/parser/alignment.js +27 -22
- package/dist/parser/alignment.js.map +1 -1
- package/dist/parser/assess.d.ts +5 -5
- package/dist/parser/assess.d.ts.map +1 -1
- package/dist/parser/assess.js +36 -32
- package/dist/parser/assess.js.map +1 -1
- package/dist/parser/config.d.ts +457 -0
- package/dist/parser/config.d.ts.map +1 -0
- package/dist/parser/config.js +373 -0
- package/dist/parser/config.js.map +1 -0
- package/dist/parser/convention-validation.d.ts +1 -1
- package/dist/parser/convention-validation.d.ts.map +1 -1
- package/dist/parser/convention-validation.js +21 -16
- package/dist/parser/convention-validation.js.map +1 -1
- package/dist/parser/coverage-cache.d.ts +49 -0
- package/dist/parser/coverage-cache.d.ts.map +1 -0
- package/dist/parser/coverage-cache.js +123 -0
- package/dist/parser/coverage-cache.js.map +1 -0
- package/dist/parser/daemon-status.d.ts +37 -0
- package/dist/parser/daemon-status.d.ts.map +1 -0
- package/dist/parser/daemon-status.js +67 -0
- package/dist/parser/daemon-status.js.map +1 -0
- package/dist/parser/doctor.d.ts +107 -0
- package/dist/parser/doctor.d.ts.map +1 -0
- package/dist/parser/doctor.js +366 -0
- package/dist/parser/doctor.js.map +1 -0
- package/dist/parser/fix.d.ts +1 -1
- package/dist/parser/fix.d.ts.map +1 -1
- package/dist/parser/fix.js +31 -27
- package/dist/parser/fix.js.map +1 -1
- package/dist/parser/index.d.ts +16 -11
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +16 -11
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/items.d.ts +8 -2
- package/dist/parser/items.d.ts.map +1 -1
- package/dist/parser/items.js +71 -35
- package/dist/parser/items.js.map +1 -1
- package/dist/parser/meta.d.ts +167 -9
- package/dist/parser/meta.d.ts.map +1 -1
- package/dist/parser/meta.js +379 -46
- package/dist/parser/meta.js.map +1 -1
- package/dist/parser/plan-document.d.ts +197 -0
- package/dist/parser/plan-document.d.ts.map +1 -0
- package/dist/parser/plan-document.js +341 -0
- package/dist/parser/plan-document.js.map +1 -0
- package/dist/parser/plans.d.ts +59 -0
- package/dist/parser/plans.d.ts.map +1 -0
- package/dist/parser/plans.js +239 -0
- package/dist/parser/plans.js.map +1 -0
- package/dist/parser/refs.d.ts +22 -9
- package/dist/parser/refs.d.ts.map +1 -1
- package/dist/parser/refs.js +102 -50
- package/dist/parser/refs.js.map +1 -1
- package/dist/parser/setup-status.d.ts +71 -0
- package/dist/parser/setup-status.d.ts.map +1 -0
- package/dist/parser/setup-status.js +269 -0
- package/dist/parser/setup-status.js.map +1 -0
- package/dist/parser/shadow.d.ts +150 -19
- package/dist/parser/shadow.d.ts.map +1 -1
- package/dist/parser/shadow.js +548 -187
- package/dist/parser/shadow.js.map +1 -1
- package/dist/parser/skill-render.d.ts +317 -0
- package/dist/parser/skill-render.d.ts.map +1 -0
- package/dist/parser/skill-render.js +943 -0
- package/dist/parser/skill-render.js.map +1 -0
- package/dist/parser/traits.d.ts +3 -3
- package/dist/parser/traits.d.ts.map +1 -1
- package/dist/parser/traits.js +2 -2
- package/dist/parser/traits.js.map +1 -1
- package/dist/parser/validate-skills.d.ts +32 -0
- package/dist/parser/validate-skills.d.ts.map +1 -0
- package/dist/parser/validate-skills.js +202 -0
- package/dist/parser/validate-skills.js.map +1 -0
- package/dist/parser/validate.d.ts +45 -3
- package/dist/parser/validate.d.ts.map +1 -1
- package/dist/parser/validate.js +622 -105
- package/dist/parser/validate.js.map +1 -1
- package/dist/parser/yaml.d.ts +83 -19
- package/dist/parser/yaml.d.ts.map +1 -1
- package/dist/parser/yaml.js +478 -173
- package/dist/parser/yaml.js.map +1 -1
- package/dist/ralph/cli-renderer.d.ts +8 -1
- package/dist/ralph/cli-renderer.d.ts.map +1 -1
- package/dist/ralph/cli-renderer.js +105 -34
- package/dist/ralph/cli-renderer.js.map +1 -1
- package/dist/ralph/events.d.ts +10 -10
- package/dist/ralph/events.d.ts.map +1 -1
- package/dist/ralph/events.js +301 -98
- package/dist/ralph/events.js.map +1 -1
- package/dist/ralph/index.d.ts +5 -2
- package/dist/ralph/index.d.ts.map +1 -1
- package/dist/ralph/index.js +9 -3
- package/dist/ralph/index.js.map +1 -1
- package/dist/ralph/loop-errors.d.ts +83 -0
- package/dist/ralph/loop-errors.d.ts.map +1 -0
- package/dist/ralph/loop-errors.js +150 -0
- package/dist/ralph/loop-errors.js.map +1 -0
- package/dist/ralph/subagent.d.ts +94 -0
- package/dist/ralph/subagent.d.ts.map +1 -0
- package/dist/ralph/subagent.js +193 -0
- package/dist/ralph/subagent.js.map +1 -0
- package/dist/ralph/wrap-up.d.ts +125 -0
- package/dist/ralph/wrap-up.d.ts.map +1 -0
- package/dist/ralph/wrap-up.js +270 -0
- package/dist/ralph/wrap-up.js.map +1 -0
- package/dist/schema/batch.d.ts +97 -0
- package/dist/schema/batch.d.ts.map +1 -0
- package/dist/schema/batch.js +24 -0
- package/dist/schema/batch.js.map +1 -0
- package/dist/schema/common.d.ts +8 -2
- package/dist/schema/common.d.ts.map +1 -1
- package/dist/schema/common.js +42 -31
- package/dist/schema/common.js.map +1 -1
- package/dist/schema/inbox.d.ts +12 -12
- package/dist/schema/inbox.js +4 -4
- package/dist/schema/inbox.js.map +1 -1
- package/dist/schema/index.d.ts +8 -5
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +8 -5
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/meta.d.ts +1454 -27
- package/dist/schema/meta.d.ts.map +1 -1
- package/dist/schema/meta.js +198 -21
- package/dist/schema/meta.js.map +1 -1
- package/dist/schema/plan.d.ts +285 -0
- package/dist/schema/plan.d.ts.map +1 -0
- package/dist/schema/plan.js +81 -0
- package/dist/schema/plan.js.map +1 -0
- package/dist/schema/spec.d.ts +72 -33
- package/dist/schema/spec.d.ts.map +1 -1
- package/dist/schema/spec.js +22 -9
- package/dist/schema/spec.js.map +1 -1
- package/dist/schema/task.d.ts +172 -161
- package/dist/schema/task.d.ts.map +1 -1
- package/dist/schema/task.js +21 -12
- package/dist/schema/task.js.map +1 -1
- package/dist/schema/triage.d.ts +266 -0
- package/dist/schema/triage.d.ts.map +1 -0
- package/dist/schema/triage.js +134 -0
- package/dist/schema/triage.js.map +1 -0
- package/dist/sessions/index.d.ts +2 -2
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +3 -3
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/store.d.ts +241 -1
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +810 -31
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +10 -10
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js +10 -9
- package/dist/sessions/types.js.map +1 -1
- package/dist/strings/errors.d.ts +55 -0
- package/dist/strings/errors.d.ts.map +1 -1
- package/dist/strings/errors.js +138 -106
- package/dist/strings/errors.js.map +1 -1
- package/dist/strings/guidance.d.ts.map +1 -1
- package/dist/strings/guidance.js +16 -16
- package/dist/strings/guidance.js.map +1 -1
- package/dist/strings/index.d.ts +4 -4
- package/dist/strings/index.d.ts.map +1 -1
- package/dist/strings/index.js +4 -4
- package/dist/strings/index.js.map +1 -1
- package/dist/strings/labels.d.ts +4 -0
- package/dist/strings/labels.d.ts.map +1 -1
- package/dist/strings/labels.js +45 -41
- package/dist/strings/labels.js.map +1 -1
- package/dist/strings/validation.d.ts.map +1 -1
- package/dist/strings/validation.js +71 -71
- package/dist/strings/validation.js.map +1 -1
- package/dist/triage/actions.d.ts +27 -0
- package/dist/triage/actions.d.ts.map +1 -0
- package/dist/triage/actions.js +95 -0
- package/dist/triage/actions.js.map +1 -0
- package/dist/triage/constants.d.ts +6 -0
- package/dist/triage/constants.d.ts.map +1 -0
- package/dist/triage/constants.js +7 -0
- package/dist/triage/constants.js.map +1 -0
- package/dist/triage/index.d.ts +3 -0
- package/dist/triage/index.d.ts.map +1 -0
- package/dist/triage/index.js +3 -0
- package/dist/triage/index.js.map +1 -0
- package/dist/utils/commit.d.ts +1 -1
- package/dist/utils/commit.d.ts.map +1 -1
- package/dist/utils/commit.js +28 -26
- package/dist/utils/commit.js.map +1 -1
- package/dist/utils/git.d.ts +1 -1
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +40 -38
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/grep.js +11 -11
- package/dist/utils/grep.js.map +1 -1
- package/dist/utils/index.d.ts +7 -7
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -4
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/time.d.ts.map +1 -1
- package/dist/utils/time.js +10 -10
- package/dist/utils/time.js.map +1 -1
- package/package.json +28 -5
- package/plugin/.claude-plugin/marketplace.json +17 -0
- package/plugin/.claude-plugin/plugin.json +5 -0
- package/plugin/plugins/kspec/skills/create-workflow/SKILL.md +235 -0
- package/plugin/plugins/kspec/skills/help/SKILL.md +42 -0
- package/plugin/plugins/kspec/skills/observations/SKILL.md +143 -0
- package/plugin/plugins/kspec/skills/plan/SKILL.md +343 -0
- package/plugin/plugins/kspec/skills/reflect/SKILL.md +161 -0
- package/plugin/plugins/kspec/skills/review/SKILL.md +193 -0
- package/plugin/plugins/kspec/skills/task-work/SKILL.md +303 -0
- package/plugin/plugins/kspec/skills/triage/SKILL.md +206 -0
- package/plugin/plugins/kspec/skills/triage/docs/automation.md +120 -0
- package/plugin/plugins/kspec/skills/triage/docs/inbox.md +144 -0
- package/plugin/plugins/kspec/skills/triage/docs/observations.md +85 -0
- package/plugin/plugins/kspec/skills/triage-automation/SKILL.md +140 -0
- package/plugin/plugins/kspec/skills/triage-inbox/SKILL.md +232 -0
- package/plugin/plugins/kspec/skills/writing-specs/SKILL.md +340 -0
- package/templates/agents-sections/01-quick-start.md +22 -0
- package/templates/agents-sections/02-shadow-branch.md +34 -0
- package/templates/agents-sections/03-task-lifecycle.md +48 -0
- package/templates/agents-sections/04-pr-workflow.md +17 -0
- package/templates/agents-sections/05-commit-convention.md +27 -0
- package/templates/agents-sections/06-ralph-loop.md +45 -0
- package/templates/hooks/pre-commit +34 -0
- package/templates/skills/create-workflow/SKILL.md +228 -0
- package/templates/skills/help/SKILL.md +37 -0
- package/templates/skills/manifest.yaml +60 -0
- package/templates/skills/observations/SKILL.md +137 -0
- package/templates/skills/plan/SKILL.md +336 -0
- package/templates/skills/reflect/SKILL.md +155 -0
- package/templates/skills/review/SKILL.md +186 -0
- package/templates/skills/task-work/SKILL.md +296 -0
- package/templates/skills/triage/SKILL.md +199 -0
- package/templates/skills/triage/docs/automation.md +120 -0
- package/templates/skills/triage/docs/inbox.md +144 -0
- package/templates/skills/triage/docs/observations.md +85 -0
- package/templates/skills/triage-automation/SKILL.md +134 -0
- package/templates/skills/triage-inbox/SKILL.md +225 -0
- package/templates/skills/writing-specs/SKILL.md +333 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-diff.js","sourceRoot":"","sources":["../../../src/cli/commands/skill-diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAE3C,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,OAAO,EACP,eAAe,EACf,gBAAgB,GAGjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,IAAI,cAAc,EACrC,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,eAAe,EAEf,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,qBAAqB,GAGtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AA8CtD,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;GAGG;AACH,KAAK,UAAU,0BAA0B,CACvC,GAAiB,EACjB,WAAmB,EACnB,KAAkB,EAClB,QAA0B;IAE1B,iCAAiC;IACjC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAE5G,uEAAuE;IACvE,IAAI,WAAW,KAAK,iBAAiB,EAAE,CAAC;QACtC,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,MAAM,EAAE,iBAAiB;YACzB,UAAU,EAAE,SAAS;SACtB,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,MAAM,kBAAkB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;IAErD,kCAAkC;IAClC,IAAI,MAA8C,CAAC;IACnD,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,SAAS;YACZ,MAAM,GAAG,SAAS,CAAC;YACnB,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,GAAG,SAAS,CAAC;YACnB,MAAM;QACR,KAAK,cAAc;YACjB,MAAM,GAAG,cAAc,CAAC;YACxB,MAAM;QACR,KAAK,SAAS;YACZ,6DAA6D;YAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,WAAW,EACX,kBAAkB,EAClB,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EACzD,UAAU,CACX,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACzC,kDAAkD;gBAClD,MAAM,GAAG,SAAS,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,GAAG,cAAc,CAAC;YAC1B,CAAC;YACD,MAAM;IACV,CAAC;IAED,sCAAsC;IACtC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAC7B,WAAW,EAAE,kBAAkB,EAC/B,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAClE,CAAC;IACF,IAAI,UAAU,GAAuD,SAAS,CAAC;IAE/E,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7B,kCAAkC;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7B,sBAAsB;YACtB,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YACnE,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,GAAG,cAAc,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;QACjB,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;IAED,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,MAAM;QACN,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAiB,EACjB,KAAkB;IAElB,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEzD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,0CAA0C;QAC1C,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,GAAG,WAAW,KAAK,oBAAoB,SAAS,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,WAAW,IAAI,EAAE,IAAI,CAAC;IACtG,CAAC;IAED,wDAAwD;IACxD,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE/C,4DAA4D;IAC5D,MAAM,gBAAgB,GAAG,aAAa,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACvE,MAAM,yBAAyB,GAAG,gBAAgB;QAChD,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACjD,CAAC,CAAC,aAAa,CAAC;IAElB,OAAO,GAAG,WAAW,KAAK,oBAAoB,KAAK,yBAAyB,EAAE,CAAC;AACjF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,QAAgB,EAChB,UAAkB,EAClB,YAAoB;IAEpB,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,mBAAmB,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE;QACpF,OAAO,EAAE,CAAC;KACX,CAAC,CAAC;IAEH,yFAAyF;IACzF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,sFAAsF;IACtF,wEAAwE;IACxE,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAE/B,2DAA2D;IAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,8DAA8D;IAC9D,uFAAuF;IACvF,sEAAsE;IACtE,8EAA8E;IAC9E,0CAA0C;IAC1C,sDAAsD;IACtD,KAAK;SACF,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CACV,4EAA4E,CAC7E;SACA,MAAM,CAAC,SAAS,EAAE,2CAA2C,CAAC;SAC9D,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,SAAS,EAAE,iDAAiD,CAAC;SACpE,MAAM,CAAC,qBAAqB,EAAE,sDAAsD,CAAC;SACrF,MAAM,CAAC,cAAc,EAAE,+DAA+D,CAAC;SACvF,MAAM,CAAC,KAAK,EAAE,GAAuB,EAAE,OAAO,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;YAEhC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBACtB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAC5D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;YAC3C,4EAA4E;YAC5E,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;YAChC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;YACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;YACrC,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;YAC1C,MAAM,OAAO,GAAgC,EAAE,CAAC;YAChD,MAAM,YAAY,GAAkB,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAa,EAAE,CAAC;YAE9B,oEAAoE;YACpE,IAAI,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;YAEpC,qEAAqE;YACrE,0DAA0D;YAC1D,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;YACtC,IAAI,QAAQ,EAAE,CAAC;gBACb,uDAAuD;gBACvD,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAClD,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;oBACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;oBACjD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACrC,CAAC;gBACD,MAAM,KAAK,GAAG,IAAmB,CAAC;gBAClC,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;YACnE,CAAC;YAED,+EAA+E;YAC/E,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;YAExC,yFAAyF;YACzF,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;gBACnC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBACvC,qCAAqC;oBACrC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAEvC,wEAAwE;oBACxE,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,4BAA4B,QAAQ,aAAa,CAAC,CAAC;wBAC5E,OAAO,CAAC,IAAI,CAAC;4BACX,EAAE,EAAE,KAAK,CAAC,EAAE;4BACZ,QAAQ;4BACR,MAAM,EAAE,SAAS;4BACjB,IAAI,EAAE,EAAE;4BACR,UAAU,EAAE,0BAA0B,QAAQ,GAAG;yBAClD,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBAED,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAE5B,oEAAoE;oBACpE,uDAAuD;oBACvD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,KAAK,aAAa,IAAI,CAAC,eAAe,EAAE,CAAC;wBAC9E,IAAI,CAAC,MAAM,EAAE,CAAC;4BACZ,MAAM,qBAAqB,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;wBACrD,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC;4BACX,EAAE,EAAE,KAAK,CAAC,EAAE;4BACZ,QAAQ;4BACR,MAAM,EAAE,SAAS;4BACjB,IAAI,EAAE,EAAE;4BACR,UAAU,EAAE,2CAA2C;4BACvD,QAAQ,EAAE,iBAAiB;yBAC5B,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBAED,6BAA6B;oBAC7B,MAAM,YAAY,GAAG,eAAe,IAAI,QAAQ,CAAC,gBAAgB,CAAC;oBAElE,iCAAiC;oBACjC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;oBAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACvD,CAAC;oBAED,mCAAmC;oBACnC,+EAA+E;oBAC/E,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,UAAU,CAC3C,GAAG,CAAC,OAAO,EACX,WAAW,EACX,KAAK,CAAC,EAAE,EACR,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CACrD,CAAC;oBAEF,wEAAwE;oBACxE,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;wBACxC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,WAAW,EACX,YAAY,EACZ,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,EAChD,UAAU,CACX,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC;4BACX,EAAE,EAAE,KAAK,CAAC,EAAE;4BACZ,QAAQ;4BACR,MAAM,EAAE,SAAS;4BACjB,IAAI,EAAE,YAAY;4BAClB,UAAU,EAAE,oCAAoC;yBACjD,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBAED,4EAA4E;oBAC5E,0EAA0E;oBAC1E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE;wBAC5D,MAAM;wBACN,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,eAAe;qBAC3B,CAAC,CAAC;oBAEH,OAAO,CAAC,IAAI,CAAC;wBACX,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;wBAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;qBAC1B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,8DAA8D;YAC9D,kCAAkC;YAClC,6DAA6D;YAC7D,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,4EAA4E;gBAC5E,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAuB,CAAC;gBAC/D,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;wBACvC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC3C,uBAAuB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;wBACnD,CAAC;wBACD,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,GAAG,CACxC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CACjD,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,8CAA8C;gBAC9C,KAAK,UAAU,aAAa,CAC1B,OAAe,EACf,QAAgB,EAChB,aAA0B,EAC1B,MAAc,EACd,QAAgB,EAChB,eAAyB;oBAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;oBAEpD,uDAAuD;oBACvD,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;wBAAE,OAAO;oBAEtC,iEAAiE;oBACjE,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;oBAEpD,IAAI,SAAS,EAAE,CAAC;wBACd,wDAAwD;wBACxD,8EAA8E;wBAC9E,IAAI,CAAC,MAAM,EAAE,CAAC;4BACZ,IAAI,eAAe,EAAE,CAAC;gCACpB,+DAA+D;gCAC/D,gCAAgC;gCAChC,MAAM,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC5C,CAAC;iCAAM,CAAC;gCACN,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC1D,CAAC;wBACH,CAAC;wBACD,YAAY,CAAC,IAAI,CAAC;4BAChB,EAAE,EAAE,OAAO;4BACX,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;4BAC9C,MAAM,EAAE,SAAS;4BACjB,QAAQ;yBACT,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,YAAY,CAAC,IAAI,CAAC;4BAChB,EAAE,EAAE,OAAO;4BACX,IAAI,EAAE,QAAQ;4BACd,MAAM,EAAE,SAAS;4BACjB,MAAM,EAAE,sBAAsB;4BAC9B,QAAQ;yBACT,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,0DAA0D;gBAC1D,KAAK,UAAU,YAAY,CACzB,eAAuB,EACvB,aAA0B,EAC1B,QAAgB;oBAEhB,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE;4BAChD,aAAa,EAAE,IAAI;yBACpB,CAAC,CAAC;wBAEH,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;4BAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gCAAE,SAAS;4BAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;4BAExD,uCAAuC;4BACvC,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;4BAClG,IAAI,UAAU,EAAE,CAAC;gCACf,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;4BACjF,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,mDAAmD;oBACrD,CAAC;gBACH,CAAC;gBAED,2DAA2D;gBAC3D,8EAA8E;gBAC9E,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAuB,CAAC;gBAC/D,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAuB,CAAC;gBAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;wBACvC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;4BAC1D,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gCACxC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;4BAChD,CAAC;4BACD,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACpD,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gCAC3C,uBAAuB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;4BACnD,CAAC;4BACD,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,GAAG,CACxC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CACjD,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,yCAAyC;gBACzC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;gBACpC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,+DAA+D;oBAC/D,MAAM,aAAa,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;oBAClF,MAAM,SAAS,GAAG,eAAe,IAAI,QAAQ,CAAC,gBAAgB,CAAC;oBAC/D,MAAM,YAAY,CAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EACjC,aAAa,EACb,QAAQ,CAAC,QAAQ,CAClB,CAAC;oBAEF,sDAAsD;oBACtD,8DAA8D;oBAC9D,IAAI,QAAQ,CAAC,QAAQ,KAAK,aAAa,IAAI,CAAC,eAAe,EAAE,CAAC;wBAC5D,yFAAyF;wBACzF,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;wBAC5E,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;wBAC9F,MAAM,YAAY,CAAC,qBAAqB,EAAE,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBAEzE,sFAAsF;wBACtF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;wBACnF,IAAI,CAAC;4BACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC3E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gCAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oCACzB,6CAA6C;oCAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wCAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;wCAC3D,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;wCACpD,IAAI,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;4CACzB,MAAM,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wCAC5C,CAAC;wCACD,IAAI,SAAS,EAAE,CAAC;4CACd,YAAY,CAAC,IAAI,CAAC;gDAChB,EAAE,EAAE,OAAO;gDACX,IAAI,EAAE,WAAW;gDACjB,MAAM,EAAE,SAAS;gDACjB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;6CAC5B,CAAC,CAAC;wCACL,CAAC;oCACH,CAAC;oCACD,SAAS;gCACX,CAAC;gCACD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gCACzD,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;gCACzG,IAAI,gBAAgB,EAAE,CAAC;oCACrB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;oCACzE,IAAI,SAAS,EAAE,CAAC;wCACd,IAAI,CAAC,MAAM,EAAE,CAAC;4CACZ,MAAM,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wCAC3D,CAAC;wCACD,YAAY,CAAC,IAAI,CAAC;4CAChB,EAAE,EAAE,KAAK,CAAC,IAAI;4CACd,IAAI,EAAE,SAAS;4CACf,MAAM,EAAE,SAAS;4CACjB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;yCAC5B,CAAC,CAAC;oCACL,CAAC;gCACH,CAAC;4BACH,CAAC;4BACD,2BAA2B;4BAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;gCACZ,IAAI,CAAC;oCACH,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;oCACpD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wCAC3B,MAAM,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oCACjE,CAAC;gCACH,CAAC;gCAAC,MAAM,CAAC;oCACP,mCAAmC;gCACrC,CAAC;4BACH,CAAC;wBACH,CAAC;wBAAC,MAAM,CAAC;4BACP,kCAAkC;wBACpC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iBAAiB;YACjB,+DAA+D;YAC/D,MAAM,CACJ;gBACE,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,YAAY;gBACrB,QAAQ;aACT,EACD,GAAG,EAAE;gBACH,+DAA+D;gBAC/D,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;oBACvD,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,CAAC;gBAED,iFAAiF;gBACjF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;oBACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;wBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;oBACnD,CAAC;oBACD,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,CAAC;gBAED,iBAAiB;gBACjB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;gBAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;gBAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;gBAClE,iEAAiE;gBACjE,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,CACnE,CAAC;gBACF,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,CACxE,CAAC;gBAEF,0EAA0E;gBAC1E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC;oBAChE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;wBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChF,CAAC;gBACH,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC;oBAC/D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;wBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC/E,CAAC;gBACH,CAAC;gBAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;oBACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,SAAS,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC;gBACrE,CAAC;gBAED,4EAA4E;gBAC5E,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,cAAc,CAAC,MAAM,mBAAmB,CAAC,CAAC,CAAC;oBAChF,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;wBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC,CAAC;oBAC/G,CAAC;oBACD,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAC;gBACvE,CAAC;gBAED,gBAAgB;gBAChB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;oBACnE,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;oBAEnE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACvB,OAAO,CAAC,GAAG,EAAE,CAAC;wBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC;wBACvE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;4BACxB,wEAAwE;4BACxE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;wBAC9E,CAAC;oBACH,CAAC;oBAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACvB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,MAAM,qBAAqB,CAAC,CAC5D,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,UAAU;gBACV,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,uDAAuD,CAAC,CACtE,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;oBACrD,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAC9B,CAAC,MAAM,CAAC;oBACT,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;wBACzC,OAAO,CACL,YAAY,YAAY,YAAY,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1F,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC;YACH,CAAC,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,kDAAkD;IAClD,iEAAiE;IACjE,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;YAEhC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBACtB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAC5D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;YAEhC,0CAA0C;YAC1C,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;YAErC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,6EAA6E;YAC7E,MAAM,aAAa,GAAgC,EAAE,CAAC;YAEtD,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;oBACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,+CAA+C;wBAC/C,aAAa,CAAC,IAAI,CAAC;4BACjB,EAAE,EAAE,KAAK,CAAC,EAAE;4BACZ,QAAQ;4BACR,MAAM,EAAE,cAAc;4BACtB,UAAU,EAAE,SAAS;4BACrB,OAAO,EAAE,0BAA0B,QAAQ,GAAG;yBAC/C,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBAED,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACnF,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,iBAAiB;YACjB,MAAM,CACJ,aAAa,EACb,GAAG,EAAE;gBACH,oEAAoE;gBACpE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;oBACtB,IAAI,EAAE;wBACJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;wBAChB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;wBACtB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;wBACpB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;qBACnB;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;qBACX;iBACF,CAAC,CAAC;gBAEH,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;oBACnC,MAAM,WAAW,GACf,MAAM,CAAC,MAAM,KAAK,SAAS;wBACzB,CAAC,CAAC,KAAK,CAAC,KAAK;wBACb,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;4BAC3B,CAAC,CAAC,KAAK,CAAC,MAAM;4BACd,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,iBAAiB;gCACnC,CAAC,CAAC,KAAK,CAAC,IAAI;gCACZ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;oBAErB,MAAM,eAAe,GACnB,MAAM,CAAC,UAAU,KAAK,SAAS;wBAC7B,CAAC,CAAC,KAAK,CAAC,KAAK;wBACb,CAAC,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;4BAC/B,CAAC,CAAC,KAAK,CAAC,MAAM;4BACd,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;oBAEnB,KAAK,CAAC,IAAI,CAAC;wBACT,MAAM,CAAC,EAAE;wBACT,MAAM,CAAC,QAAQ;wBACf,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBAC3D,eAAe,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;qBAC1C,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAE9B,UAAU;gBACV,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;gBAC1E,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;gBAC3E,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,MAAM,CAAC;gBACpF,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,MAAM,CAAC;gBAC1F,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;gBAEnE,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,sDAAsD,CAAC,CAAC,CAAC;gBAC9F,CAAC;gBACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,wBAAwB,CAAC,CAAC,CAAC;gBAClE,CAAC;gBACD,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,2BAA2B,CAAC,CAAC,CAAC;gBACxE,CAAC;gBACD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,YAAY,yBAAyB,CAAC,CAAC,CAAC;gBACtE,CAAC;gBACD,IAAI,MAAM,GAAG,cAAc,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;oBACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,gDAAgD;IAChD,KAAK;SACF,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;YAEhC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBACtB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAC5D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAE7C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBACjD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;YAED,+CAA+C;YAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,CAAC;gBACpC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,KAAK,GAAG,IAAmB,CAAC;YAClC,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;YAEhC,iDAAiD;YACjD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC5B,MAAM,CACJ;oBACE,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,EAAE;oBACR,cAAc,EAAE,IAAI;iBACrB,EACD,GAAG,EAAE;oBACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,6CAA6C,CAAC,CAAC,CAAC;gBACpF,CAAC,CACF,CAAC;gBACF,OAAO;YACT,CAAC;YAED,gCAAgC;YAChC,MAAM,eAAe,GAAG,MAAM,0BAA0B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAErE,8BAA8B;YAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,WAAW,EACX,gBAAgB,EAChB,KAAK,CAAC,EAAE,EACR,UAAU,CACX,CAAC;YAEF,IAAI,aAAa,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC3D,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;YAED,gBAAgB;YAChB,MAAM,IAAI,GAAG,mBAAmB,CAC9B,aAAa,EACb,eAAe,EACf,KAAK,KAAK,CAAC,EAAE,WAAW,EACxB,KAAK,KAAK,CAAC,EAAE,WAAW,CACzB,CAAC;YAEF,SAAS;YACT,MAAM,CACJ;gBACE,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;gBACxB,IAAI;aACL,EACD,GAAG,EAAE;gBACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;oBAClD,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,qBAAqB;oBACrB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;wBACxB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;4BACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;wBACjC,CAAC;6BAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;wBAC/B,CAAC;6BAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;4BACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBAChC,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACpB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,oEAAoE;IACpE,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yEAAyE,CAAC;SACtF,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;YAEhC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBACtB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAC5D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;YAChC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;YAErC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE;oBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAUD,MAAM,OAAO,GAAmB,EAAE,CAAC;YAEnC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;oBACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,OAAO,CAAC,IAAI,CAAC;4BACX,EAAE,EAAE,KAAK,CAAC,EAAE;4BACZ,QAAQ;4BACR,MAAM,EAAE,cAAc;4BACtB,QAAQ,EAAE,0BAA0B,QAAQ,2BAA2B;yBACxE,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,UAAU,CAC3C,GAAG,CAAC,OAAO,EACX,WAAW,EACX,KAAK,CAAC,EAAE,EACR,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CACzB,CAAC;oBAEF,QAAQ,WAAW,EAAE,CAAC;wBACpB,KAAK,SAAS;4BACZ,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;4BACvD,MAAM;wBACR,KAAK,SAAS;4BACZ,OAAO,CAAC,IAAI,CAAC;gCACX,EAAE,EAAE,KAAK,CAAC,EAAE;gCACZ,QAAQ;gCACR,MAAM,EAAE,SAAS;gCACjB,QAAQ,EAAE,4DAA4D,KAAK,CAAC,EAAE,4DAA4D,KAAK,CAAC,EAAE,sBAAsB;6BACzK,CAAC,CAAC;4BACH,MAAM;wBACR,KAAK,cAAc;4BACjB,OAAO,CAAC,IAAI,CAAC;gCACX,EAAE,EAAE,KAAK,CAAC,EAAE;gCACZ,QAAQ;gCACR,MAAM,EAAE,cAAc;gCACtB,QAAQ,EAAE,6CAA6C,KAAK,CAAC,EAAE,gBAAgB;6BAChF,CAAC,CAAC;4BACH,MAAM;wBACR,KAAK,SAAS;4BACZ,OAAO,CAAC,IAAI,CAAC;gCACX,EAAE,EAAE,KAAK,CAAC,EAAE;gCACZ,QAAQ;gCACR,MAAM,EAAE,SAAS;gCACjB,QAAQ,EAAE,kDAAkD,KAAK,CAAC,EAAE,6BAA6B;6BAClG,CAAC,CAAC;4BACH,MAAM;oBACV,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YACrE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;YAC3D,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC;YAC9E,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YAEpE,MAAM,CACJ,OAAO,EACP,GAAG,EAAE;gBACH,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,MAAM,kDAAkD,CAAC,CAAC,CAAC;oBACpG,OAAO;gBACT,CAAC;gBAED,oCAAoC;gBACpC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;oBACxE,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;wBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;wBAC9D,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAS,CAAC,EAAE,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;gBAED,oBAAoB;gBACpB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,kBAAkB,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;oBAC/E,KAAK,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;wBACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;wBAC5D,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAS,CAAC,EAAE,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;gBAED,eAAe;gBACf,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;oBACrE,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;wBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;wBAC5D,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAS,CAAC,EAAE,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;gBAED,eAAe;gBACf,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,MAAM,wBAAwB,CAAC,CAAC,CAAC;gBAC1E,CAAC;gBAED,qBAAqB;gBACrB,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,0DAA0D,CAAC,CACzE,CAAC;gBACJ,CAAC;YACH,CAAC,CACF,CAAC;YAEF,2CAA2C;YAC3C,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill core installation and update commands.
|
|
3
|
+
*
|
|
4
|
+
* AC: @core-skill-install ac-1 - meta entries created with origin core
|
|
5
|
+
* AC: @core-skill-install ac-2 - content files copied from templates to .kspec/skills/<id>/
|
|
6
|
+
* AC: @core-skill-install ac-3 - custom skills skipped with message
|
|
7
|
+
* AC: @core-skill-install ac-4 - --force overwrites custom forks
|
|
8
|
+
* AC: @core-skill-install ac-5 - version matches kspec package version
|
|
9
|
+
* AC: @core-skill-install ac-6 - marketplace registration in known_marketplaces.json
|
|
10
|
+
* AC: @core-skill-install ac-7 - plugin enabled in project settings
|
|
11
|
+
* AC: @core-skill-install ac-8 - idempotent marketplace registration
|
|
12
|
+
*
|
|
13
|
+
* AC: @core-skill-update ac-1 - skill content and version updated when version differs
|
|
14
|
+
* AC: @core-skill-update ac-2 - skill skipped when already at current version
|
|
15
|
+
* AC: @core-skill-update ac-3 - skills with origin custom/project not touched
|
|
16
|
+
*/
|
|
17
|
+
import type { Command } from "commander";
|
|
18
|
+
/**
|
|
19
|
+
* Core skill definition from manifest
|
|
20
|
+
*/
|
|
21
|
+
interface CoreSkillDefinition {
|
|
22
|
+
id: string;
|
|
23
|
+
name: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
platforms?: string[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the kspec package version from package.json
|
|
29
|
+
* AC: @core-skill-install ac-5
|
|
30
|
+
*/
|
|
31
|
+
export declare function getKspecPackageVersion(): Promise<string | null>;
|
|
32
|
+
/**
|
|
33
|
+
* Load core skills manifest from templates/skills/manifest.yaml
|
|
34
|
+
* AC: @core-skill-install ac-1, ac-2
|
|
35
|
+
*/
|
|
36
|
+
export declare function loadCoreSkillsManifest(): Promise<CoreSkillDefinition[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Load SKILL.md content for a core skill from templates
|
|
39
|
+
* AC: @core-skill-install ac-2
|
|
40
|
+
*/
|
|
41
|
+
export declare function loadCoreSkillContent(skillId: string): Promise<string | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Copy all files for a core skill from templates to .kspec/skills/<id>/.
|
|
44
|
+
* Copies SKILL.md and any supporting directories (docs/, references/, etc.).
|
|
45
|
+
* Skips writing files when content is unchanged to avoid unnecessary git diffs.
|
|
46
|
+
* AC: @core-skill-install ac-2
|
|
47
|
+
*/
|
|
48
|
+
export declare function copyCoreSkillFiles(skillId: string, targetDir: string): Promise<{
|
|
49
|
+
changed: boolean;
|
|
50
|
+
}>;
|
|
51
|
+
/**
|
|
52
|
+
* Register skill install/update commands (install-core, update)
|
|
53
|
+
*/
|
|
54
|
+
export declare function registerSkillInstallCommands(skill: Command): void;
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=skill-install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skill-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4CzC;;GAEG;AACH,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAMD;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAYrE;AAaD;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAoB7E;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQlF;AA0DD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAuD/B;AAMD;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CA6WjE"}
|
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill core installation and update commands.
|
|
3
|
+
*
|
|
4
|
+
* AC: @core-skill-install ac-1 - meta entries created with origin core
|
|
5
|
+
* AC: @core-skill-install ac-2 - content files copied from templates to .kspec/skills/<id>/
|
|
6
|
+
* AC: @core-skill-install ac-3 - custom skills skipped with message
|
|
7
|
+
* AC: @core-skill-install ac-4 - --force overwrites custom forks
|
|
8
|
+
* AC: @core-skill-install ac-5 - version matches kspec package version
|
|
9
|
+
* AC: @core-skill-install ac-6 - marketplace registration in known_marketplaces.json
|
|
10
|
+
* AC: @core-skill-install ac-7 - plugin enabled in project settings
|
|
11
|
+
* AC: @core-skill-install ac-8 - idempotent marketplace registration
|
|
12
|
+
*
|
|
13
|
+
* AC: @core-skill-update ac-1 - skill content and version updated when version differs
|
|
14
|
+
* AC: @core-skill-update ac-2 - skill skipped when already at current version
|
|
15
|
+
* AC: @core-skill-update ac-3 - skills with origin custom/project not touched
|
|
16
|
+
*/
|
|
17
|
+
import * as fs from "node:fs/promises";
|
|
18
|
+
import * as path from "node:path";
|
|
19
|
+
import chalk from "chalk";
|
|
20
|
+
import { ulid } from "ulid";
|
|
21
|
+
import yaml from "yaml";
|
|
22
|
+
import { markMutating } from "../command-annotations.js";
|
|
23
|
+
import { getSkillContentPath, initContext, loadMetaContext, saveMetaItem, } from "../../parser/index.js";
|
|
24
|
+
import { commitIfShadow } from "../../parser/shadow.js";
|
|
25
|
+
import { SkillSchema } from "../../schema/index.js";
|
|
26
|
+
import { errors } from "../../strings/errors.js";
|
|
27
|
+
import { EXIT_CODES } from "../exit-codes.js";
|
|
28
|
+
import { error, output, success } from "../output.js";
|
|
29
|
+
// ============================================================================
|
|
30
|
+
// Template Management Helpers
|
|
31
|
+
// ============================================================================
|
|
32
|
+
/**
|
|
33
|
+
* Get the kspec package version from package.json
|
|
34
|
+
* AC: @core-skill-install ac-5
|
|
35
|
+
*/
|
|
36
|
+
export async function getKspecPackageVersion() {
|
|
37
|
+
try {
|
|
38
|
+
// Try to find package.json relative to this module
|
|
39
|
+
const packagePath = path.resolve(import.meta.dirname || path.dirname(new URL(import.meta.url).pathname), "../../../package.json");
|
|
40
|
+
const packageJson = JSON.parse(await fs.readFile(packagePath, "utf-8"));
|
|
41
|
+
return packageJson.version || null;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get the templates directory path
|
|
49
|
+
*/
|
|
50
|
+
function getTemplatesDir() {
|
|
51
|
+
// Templates are at <package-root>/templates/skills/
|
|
52
|
+
return path.resolve(import.meta.dirname || path.dirname(new URL(import.meta.url).pathname), "../../../templates/skills");
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Load core skills manifest from templates/skills/manifest.yaml
|
|
56
|
+
* AC: @core-skill-install ac-1, ac-2
|
|
57
|
+
*/
|
|
58
|
+
export async function loadCoreSkillsManifest() {
|
|
59
|
+
try {
|
|
60
|
+
const templatesDir = getTemplatesDir();
|
|
61
|
+
const manifestPath = path.join(templatesDir, "manifest.yaml");
|
|
62
|
+
const content = await fs.readFile(manifestPath, "utf-8");
|
|
63
|
+
const parsed = yaml.parse(content);
|
|
64
|
+
if (!parsed || !Array.isArray(parsed.skills)) {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
return parsed.skills.map((s) => ({
|
|
68
|
+
id: String(s.id || ""),
|
|
69
|
+
name: String(s.name || s.id || ""),
|
|
70
|
+
description: s.description ? String(s.description) : undefined,
|
|
71
|
+
platforms: Array.isArray(s.platforms) ? s.platforms.map(String) : undefined,
|
|
72
|
+
})).filter((s) => s.id);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Load SKILL.md content for a core skill from templates
|
|
80
|
+
* AC: @core-skill-install ac-2
|
|
81
|
+
*/
|
|
82
|
+
export async function loadCoreSkillContent(skillId) {
|
|
83
|
+
try {
|
|
84
|
+
const templatesDir = getTemplatesDir();
|
|
85
|
+
const skillMdPath = path.join(templatesDir, skillId, "SKILL.md");
|
|
86
|
+
return await fs.readFile(skillMdPath, "utf-8");
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** Supporting directory names that may accompany a skill template. */
|
|
93
|
+
const SKILL_SUPPORTING_DIRS = ["docs", "references", "scripts", "assets"];
|
|
94
|
+
/**
|
|
95
|
+
* Recursively copy a directory tree.
|
|
96
|
+
* Only copies files; creates directories as needed.
|
|
97
|
+
*/
|
|
98
|
+
async function copyDirRecursive(src, dest) {
|
|
99
|
+
const entries = await fs.readdir(src, { withFileTypes: true });
|
|
100
|
+
await fs.mkdir(dest, { recursive: true });
|
|
101
|
+
for (const entry of entries) {
|
|
102
|
+
const srcPath = path.join(src, entry.name);
|
|
103
|
+
const destPath = path.join(dest, entry.name);
|
|
104
|
+
if (entry.isDirectory()) {
|
|
105
|
+
await copyDirRecursive(srcPath, destPath);
|
|
106
|
+
}
|
|
107
|
+
else if (entry.isFile()) {
|
|
108
|
+
await fs.copyFile(srcPath, destPath);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Check if all source entries exist in dest with identical content.
|
|
114
|
+
* Uses subset comparison: extra files in dest are ignored since
|
|
115
|
+
* copyDirRecursive is an overlay copy that doesn't delete extra files.
|
|
116
|
+
*/
|
|
117
|
+
async function sourceMatchesDest(src, dest) {
|
|
118
|
+
try {
|
|
119
|
+
const srcEntries = await fs.readdir(src);
|
|
120
|
+
const destEntries = new Set(await fs.readdir(dest));
|
|
121
|
+
for (const name of srcEntries) {
|
|
122
|
+
if (!destEntries.has(name))
|
|
123
|
+
return false;
|
|
124
|
+
const srcPath = path.join(src, name);
|
|
125
|
+
const destPath = path.join(dest, name);
|
|
126
|
+
const srcStat = await fs.stat(srcPath);
|
|
127
|
+
const destStat = await fs.stat(destPath);
|
|
128
|
+
if (srcStat.isDirectory() && destStat.isDirectory()) {
|
|
129
|
+
if (!(await sourceMatchesDest(srcPath, destPath)))
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
else if (srcStat.isFile() && destStat.isFile()) {
|
|
133
|
+
// Use Buffer comparison for binary safety (assets/ may contain images)
|
|
134
|
+
const srcBuf = await fs.readFile(srcPath);
|
|
135
|
+
const destBuf = await fs.readFile(destPath);
|
|
136
|
+
if (!srcBuf.equals(destBuf))
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
return false; // Type mismatch
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
catch (_err) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Copy all files for a core skill from templates to .kspec/skills/<id>/.
|
|
151
|
+
* Copies SKILL.md and any supporting directories (docs/, references/, etc.).
|
|
152
|
+
* Skips writing files when content is unchanged to avoid unnecessary git diffs.
|
|
153
|
+
* AC: @core-skill-install ac-2
|
|
154
|
+
*/
|
|
155
|
+
export async function copyCoreSkillFiles(skillId, targetDir) {
|
|
156
|
+
const templatesDir = getTemplatesDir();
|
|
157
|
+
const sourceDir = path.join(templatesDir, skillId);
|
|
158
|
+
let changed = false;
|
|
159
|
+
// Copy SKILL.md — skip if template doesn't exist, propagate real errors
|
|
160
|
+
const skillMdPath = path.join(sourceDir, "SKILL.md");
|
|
161
|
+
let content;
|
|
162
|
+
try {
|
|
163
|
+
content = await fs.readFile(skillMdPath, "utf-8");
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
if (err instanceof Error && "code" in err && err.code === "ENOENT") {
|
|
167
|
+
return { changed: false }; // No SKILL.md means nothing to copy
|
|
168
|
+
}
|
|
169
|
+
throw err;
|
|
170
|
+
}
|
|
171
|
+
// Compare before writing to avoid unnecessary git diffs
|
|
172
|
+
const targetSkillMd = path.join(targetDir, "SKILL.md");
|
|
173
|
+
let existingContent = null;
|
|
174
|
+
try {
|
|
175
|
+
existingContent = await fs.readFile(targetSkillMd, "utf-8");
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
// Target doesn't exist yet
|
|
179
|
+
}
|
|
180
|
+
if (existingContent !== content) {
|
|
181
|
+
await fs.mkdir(targetDir, { recursive: true });
|
|
182
|
+
await fs.writeFile(targetSkillMd, content, "utf-8");
|
|
183
|
+
changed = true;
|
|
184
|
+
}
|
|
185
|
+
// Copy supporting directories recursively, skipping when unchanged
|
|
186
|
+
for (const dirName of SKILL_SUPPORTING_DIRS) {
|
|
187
|
+
const srcSubDir = path.join(sourceDir, dirName);
|
|
188
|
+
try {
|
|
189
|
+
await fs.access(srcSubDir);
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
// ENOENT: directory doesn't exist in template, skip
|
|
193
|
+
if (err instanceof Error && "code" in err && err.code === "ENOENT") {
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
throw err; // Propagate real I/O errors
|
|
197
|
+
}
|
|
198
|
+
const destSubDir = path.join(targetDir, dirName);
|
|
199
|
+
if (await sourceMatchesDest(srcSubDir, destSubDir)) {
|
|
200
|
+
continue; // Content unchanged, skip copy
|
|
201
|
+
}
|
|
202
|
+
await copyDirRecursive(srcSubDir, destSubDir);
|
|
203
|
+
changed = true;
|
|
204
|
+
}
|
|
205
|
+
return { changed };
|
|
206
|
+
}
|
|
207
|
+
// ============================================================================
|
|
208
|
+
// Command Registration
|
|
209
|
+
// ============================================================================
|
|
210
|
+
/**
|
|
211
|
+
* Register skill install/update commands (install-core, update)
|
|
212
|
+
*/
|
|
213
|
+
export function registerSkillInstallCommands(skill) {
|
|
214
|
+
// AC: @core-skill-install - kspec skill install-core
|
|
215
|
+
markMutating(skill.command("install-core"))
|
|
216
|
+
.description("Install core skills from kspec package templates")
|
|
217
|
+
.option("--force", "Overwrite custom forks with core versions")
|
|
218
|
+
.option("--dry-run", "Show what would be installed without making changes")
|
|
219
|
+
.action(async (options) => {
|
|
220
|
+
try {
|
|
221
|
+
const ctx = await initContext();
|
|
222
|
+
if (!ctx.manifestPath) {
|
|
223
|
+
error(errors.project.noKspecProject);
|
|
224
|
+
console.log(chalk.gray("Try: kspec init to initialize a kspec project"));
|
|
225
|
+
process.exit(EXIT_CODES.ERROR);
|
|
226
|
+
}
|
|
227
|
+
const metaCtx = await loadMetaContext(ctx);
|
|
228
|
+
const dryRun = options.dryRun || false;
|
|
229
|
+
const force = options.force || false;
|
|
230
|
+
const results = [];
|
|
231
|
+
// Load core skills manifest
|
|
232
|
+
const coreSkills = await loadCoreSkillsManifest();
|
|
233
|
+
if (coreSkills.length === 0) {
|
|
234
|
+
console.log(chalk.yellow("No core skills found in kspec package templates"));
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
// Get kspec package version
|
|
238
|
+
// AC: @cross-platform-and-version-robustness ac-3
|
|
239
|
+
const kspecVersion = await getKspecPackageVersion();
|
|
240
|
+
if (!kspecVersion) {
|
|
241
|
+
console.log(chalk.yellow("Warning: Could not determine kspec version — skills installed without version tracking"));
|
|
242
|
+
}
|
|
243
|
+
// Process each core skill
|
|
244
|
+
for (const coreSkill of coreSkills) {
|
|
245
|
+
// AC: @core-skill-install ac-3 - Check if skill exists with custom origin
|
|
246
|
+
const existingSkill = metaCtx.skills.find((s) => s.id === coreSkill.id);
|
|
247
|
+
if (existingSkill) {
|
|
248
|
+
// Check origin - if "custom" or "project" and not forcing, skip
|
|
249
|
+
if (existingSkill.origin !== "core" && !force) {
|
|
250
|
+
results.push({
|
|
251
|
+
id: coreSkill.id,
|
|
252
|
+
action: "skipped",
|
|
253
|
+
reason: `existing ${existingSkill.origin} skill (use --force to overwrite)`,
|
|
254
|
+
});
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// AC: @core-skill-install ac-1 - Create/update meta entry with origin core
|
|
259
|
+
// AC: @core-skill-install ac-5 - Version matches kspec package version
|
|
260
|
+
// Schema provides defaults for platforms, depends_on
|
|
261
|
+
const skillData = {
|
|
262
|
+
_ulid: existingSkill?._ulid || ulid(),
|
|
263
|
+
id: coreSkill.id,
|
|
264
|
+
name: coreSkill.name,
|
|
265
|
+
description: coreSkill.description,
|
|
266
|
+
origin: "core",
|
|
267
|
+
...(kspecVersion && { version: kspecVersion }),
|
|
268
|
+
...(coreSkill.platforms && { platforms: coreSkill.platforms }),
|
|
269
|
+
allowed_tools: [],
|
|
270
|
+
tags: ["core"],
|
|
271
|
+
};
|
|
272
|
+
// Validate with schema
|
|
273
|
+
const parsed = SkillSchema.safeParse(skillData);
|
|
274
|
+
if (!parsed.success) {
|
|
275
|
+
const issues = parsed.error.issues
|
|
276
|
+
.map((i) => `${i.path.join(".")}: ${i.message}`)
|
|
277
|
+
.join("; ");
|
|
278
|
+
results.push({
|
|
279
|
+
id: coreSkill.id,
|
|
280
|
+
action: "failed",
|
|
281
|
+
reason: `validation error: ${issues}`,
|
|
282
|
+
});
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
const skill = { ...parsed.data };
|
|
286
|
+
// Save meta entry (if not dry run)
|
|
287
|
+
if (!dryRun) {
|
|
288
|
+
await saveMetaItem(ctx, skill, "skill");
|
|
289
|
+
// AC: @core-skill-install ac-2 - Copy skill files (SKILL.md + supporting dirs)
|
|
290
|
+
const targetDir = path.dirname(getSkillContentPath(ctx, skill.id));
|
|
291
|
+
await copyCoreSkillFiles(coreSkill.id, targetDir);
|
|
292
|
+
}
|
|
293
|
+
results.push({
|
|
294
|
+
id: coreSkill.id,
|
|
295
|
+
action: existingSkill ? "updated" : "created",
|
|
296
|
+
version: kspecVersion ?? undefined,
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
// Commit changes if not dry run
|
|
300
|
+
if (!dryRun && results.some((r) => r.action === "created" || r.action === "updated")) {
|
|
301
|
+
await commitIfShadow(ctx.shadow, "skill-install-core", `${results.filter((r) => r.action !== "skipped" && r.action !== "failed").length} core skills`);
|
|
302
|
+
}
|
|
303
|
+
// AC: @core-skill-install ac-6, ac-7 - Register marketplace and enable plugin
|
|
304
|
+
const { registerCorePluginMarketplace, enablePluginInProject } = await import("../../lib/claude-plugin-registry.js");
|
|
305
|
+
const marketplaceResult = await registerCorePluginMarketplace({ dryRun });
|
|
306
|
+
const enableResult = await enablePluginInProject(ctx.rootDir, { dryRun });
|
|
307
|
+
// Output results
|
|
308
|
+
output({
|
|
309
|
+
dry_run: dryRun,
|
|
310
|
+
results,
|
|
311
|
+
marketplace: marketplaceResult,
|
|
312
|
+
pluginEnabled: enableResult,
|
|
313
|
+
}, () => {
|
|
314
|
+
if (dryRun) {
|
|
315
|
+
console.log(chalk.yellow("DRY RUN - No changes made"));
|
|
316
|
+
console.log();
|
|
317
|
+
}
|
|
318
|
+
const created = results.filter((r) => r.action === "created");
|
|
319
|
+
const updated = results.filter((r) => r.action === "updated");
|
|
320
|
+
const skipped = results.filter((r) => r.action === "skipped");
|
|
321
|
+
const failed = results.filter((r) => r.action === "failed");
|
|
322
|
+
if (created.length > 0) {
|
|
323
|
+
console.log(chalk.green(`Created: ${created.length} skill(s)`));
|
|
324
|
+
for (const r of created) {
|
|
325
|
+
console.log(` ${chalk.green("+")} ${r.id}${r.version ? ` (v${r.version})` : ""}`);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
if (updated.length > 0) {
|
|
329
|
+
console.log(chalk.blue(`Updated: ${updated.length} skill(s)`));
|
|
330
|
+
for (const r of updated) {
|
|
331
|
+
console.log(` ${chalk.blue("~")} ${r.id}${r.version ? ` (v${r.version})` : ""}`);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
if (skipped.length > 0) {
|
|
335
|
+
console.log(chalk.yellow(`Skipped: ${skipped.length} skill(s)`));
|
|
336
|
+
for (const r of skipped) {
|
|
337
|
+
console.log(` ${chalk.yellow("!")} ${r.id}: ${r.reason}`);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
if (failed.length > 0) {
|
|
341
|
+
console.log(chalk.red(`Failed: ${failed.length} skill(s)`));
|
|
342
|
+
for (const r of failed) {
|
|
343
|
+
console.log(` ${chalk.red("x")} ${r.id}: ${r.reason}`);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
console.log();
|
|
347
|
+
if (dryRun) {
|
|
348
|
+
console.log(chalk.yellow("No changes were made. Run without --dry-run to apply."));
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
const changedCount = created.length + updated.length;
|
|
352
|
+
if (changedCount > 0) {
|
|
353
|
+
success(`Installed ${changedCount} core skill(s)`);
|
|
354
|
+
}
|
|
355
|
+
else if (skipped.length > 0) {
|
|
356
|
+
console.log(chalk.gray("No skills installed (all skipped or failed)"));
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// AC: @core-skill-install ac-6 - Report marketplace registration
|
|
360
|
+
if (marketplaceResult.success && marketplaceResult.action !== "skipped") {
|
|
361
|
+
console.log(chalk.green(`Plugin marketplace ${marketplaceResult.action}`));
|
|
362
|
+
}
|
|
363
|
+
else if (!marketplaceResult.success) {
|
|
364
|
+
console.log(chalk.red(`Marketplace registration failed: ${marketplaceResult.message}`));
|
|
365
|
+
}
|
|
366
|
+
// AC: @core-skill-install ac-7 - Report plugin enablement
|
|
367
|
+
if (enableResult.success && enableResult.action === "enabled") {
|
|
368
|
+
console.log(chalk.green("Plugin enabled in project settings"));
|
|
369
|
+
}
|
|
370
|
+
else if (!enableResult.success) {
|
|
371
|
+
console.log(chalk.red(`Plugin enablement failed: ${enableResult.message}`));
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
// Exit non-zero if plugin registration or enablement failed
|
|
375
|
+
if (!marketplaceResult.success || !enableResult.success) {
|
|
376
|
+
process.exit(EXIT_CODES.ERROR);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
catch (err) {
|
|
380
|
+
error("Failed to install core skills", err);
|
|
381
|
+
process.exit(EXIT_CODES.ERROR);
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
// AC: @core-skill-update - kspec skill update
|
|
385
|
+
markMutating(skill.command("update"))
|
|
386
|
+
.description("Update core skills to match the installed kspec package version")
|
|
387
|
+
.option("--dry-run", "Show what would be updated without making changes")
|
|
388
|
+
.action(async (options) => {
|
|
389
|
+
try {
|
|
390
|
+
const ctx = await initContext();
|
|
391
|
+
if (!ctx.manifestPath) {
|
|
392
|
+
error(errors.project.noKspecProject);
|
|
393
|
+
console.log(chalk.gray("Try: kspec init to initialize a kspec project"));
|
|
394
|
+
process.exit(EXIT_CODES.ERROR);
|
|
395
|
+
}
|
|
396
|
+
const metaCtx = await loadMetaContext(ctx);
|
|
397
|
+
const dryRun = options.dryRun || false;
|
|
398
|
+
const results = [];
|
|
399
|
+
// Get kspec package version
|
|
400
|
+
// AC: @cross-platform-and-version-robustness ac-3
|
|
401
|
+
const kspecVersion = await getKspecPackageVersion();
|
|
402
|
+
if (!kspecVersion) {
|
|
403
|
+
console.log(chalk.yellow("Warning: Could not determine kspec version — updating based on content changes only"));
|
|
404
|
+
}
|
|
405
|
+
// Load core skills manifest to get current content
|
|
406
|
+
const coreSkillsManifest = await loadCoreSkillsManifest();
|
|
407
|
+
const coreSkillsMap = new Map(coreSkillsManifest.map((s) => [s.id, s]));
|
|
408
|
+
// AC: @core-skill-update ac-3 - Only process skills with origin core
|
|
409
|
+
const coreSkills = metaCtx.skills.filter((s) => s.origin === "core");
|
|
410
|
+
for (const skill of coreSkills) {
|
|
411
|
+
// AC: @core-skill-update ac-2 - Skip if already at current version
|
|
412
|
+
// If kspecVersion is null or skill has no version, always update
|
|
413
|
+
if (kspecVersion && skill.version === kspecVersion) {
|
|
414
|
+
results.push({
|
|
415
|
+
id: skill.id,
|
|
416
|
+
action: "skipped",
|
|
417
|
+
reason: "already at current version",
|
|
418
|
+
currentVersion: skill.version,
|
|
419
|
+
});
|
|
420
|
+
continue;
|
|
421
|
+
}
|
|
422
|
+
// Check if skill exists in core manifest
|
|
423
|
+
const coreSkill = coreSkillsMap.get(skill.id);
|
|
424
|
+
if (!coreSkill) {
|
|
425
|
+
results.push({
|
|
426
|
+
id: skill.id,
|
|
427
|
+
action: "skipped",
|
|
428
|
+
reason: "not found in core skills manifest",
|
|
429
|
+
currentVersion: skill.version,
|
|
430
|
+
});
|
|
431
|
+
continue;
|
|
432
|
+
}
|
|
433
|
+
// AC: @core-skill-update ac-1 - Update content and version
|
|
434
|
+
const oldVersion = skill.version;
|
|
435
|
+
if (!dryRun) {
|
|
436
|
+
// Clone before mutating to protect against partial save failure
|
|
437
|
+
const updated = structuredClone(skill);
|
|
438
|
+
if (kspecVersion) {
|
|
439
|
+
updated.version = kspecVersion;
|
|
440
|
+
}
|
|
441
|
+
updated.name = coreSkill.name;
|
|
442
|
+
if (coreSkill.description) {
|
|
443
|
+
updated.description = coreSkill.description;
|
|
444
|
+
}
|
|
445
|
+
if (coreSkill.platforms) {
|
|
446
|
+
updated.platforms = coreSkill.platforms;
|
|
447
|
+
}
|
|
448
|
+
// Save updated metadata
|
|
449
|
+
await saveMetaItem(ctx, updated, "skill");
|
|
450
|
+
// Update skill files from templates (SKILL.md + supporting dirs)
|
|
451
|
+
const targetDir = path.dirname(getSkillContentPath(ctx, skill.id));
|
|
452
|
+
await copyCoreSkillFiles(skill.id, targetDir);
|
|
453
|
+
}
|
|
454
|
+
results.push({
|
|
455
|
+
id: skill.id,
|
|
456
|
+
action: "updated",
|
|
457
|
+
previousVersion: oldVersion,
|
|
458
|
+
newVersion: kspecVersion ?? undefined,
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
// Commit changes if not dry run and there are updates
|
|
462
|
+
if (!dryRun && results.some((r) => r.action === "updated")) {
|
|
463
|
+
await commitIfShadow(ctx.shadow, "skill-update", `${results.filter((r) => r.action === "updated").length} core skills`);
|
|
464
|
+
}
|
|
465
|
+
// Output results
|
|
466
|
+
output({
|
|
467
|
+
dry_run: dryRun,
|
|
468
|
+
kspec_version: kspecVersion,
|
|
469
|
+
results,
|
|
470
|
+
}, () => {
|
|
471
|
+
if (dryRun) {
|
|
472
|
+
console.log(chalk.yellow("DRY RUN - No changes made"));
|
|
473
|
+
console.log();
|
|
474
|
+
}
|
|
475
|
+
console.log(`kspec version: ${kspecVersion ?? "unavailable"}`);
|
|
476
|
+
console.log();
|
|
477
|
+
const updated = results.filter((r) => r.action === "updated");
|
|
478
|
+
const skipped = results.filter((r) => r.action === "skipped");
|
|
479
|
+
if (updated.length > 0) {
|
|
480
|
+
console.log(chalk.green(`Updated: ${updated.length} skill(s)`));
|
|
481
|
+
for (const r of updated) {
|
|
482
|
+
console.log(` ${chalk.green("~")} ${r.id}: ${r.previousVersion || "unknown"} → ${r.newVersion || "unavailable"}`);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
if (skipped.length > 0) {
|
|
486
|
+
console.log(chalk.gray(`Skipped: ${skipped.length} skill(s)`));
|
|
487
|
+
for (const r of skipped) {
|
|
488
|
+
console.log(` ${chalk.gray("-")} ${r.id}: ${r.reason}${r.currentVersion ? ` (v${r.currentVersion})` : ""}`);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
console.log();
|
|
492
|
+
if (dryRun) {
|
|
493
|
+
console.log(chalk.yellow("No changes were made. Run without --dry-run to apply."));
|
|
494
|
+
}
|
|
495
|
+
else if (updated.length > 0) {
|
|
496
|
+
success(`Updated ${updated.length} core skill(s)`);
|
|
497
|
+
}
|
|
498
|
+
else {
|
|
499
|
+
console.log(chalk.gray("No skills needed updating"));
|
|
500
|
+
}
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
catch (err) {
|
|
504
|
+
error("Failed to update core skills", err);
|
|
505
|
+
process.exit(EXIT_CODES.ERROR);
|
|
506
|
+
}
|
|
507
|
+
});
|
|
508
|
+
}
|
|
509
|
+
//# sourceMappingURL=skill-install.js.map
|