@kindgi/cli 0.1.7-rc.0 → 0.1.8-rc.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.
Files changed (222) hide show
  1. package/README.md +13 -13
  2. package/dist/api-address.d.ts +57 -0
  3. package/dist/api-address.d.ts.map +1 -0
  4. package/dist/api-address.js +144 -0
  5. package/dist/api-address.js.map +1 -0
  6. package/dist/build/defaults.d.ts +9 -0
  7. package/dist/build/defaults.d.ts.map +1 -1
  8. package/dist/build/defaults.js +132 -30
  9. package/dist/build/defaults.js.map +1 -1
  10. package/dist/build/hosted.d.ts +32 -0
  11. package/dist/build/hosted.d.ts.map +1 -0
  12. package/dist/build/hosted.js +62 -0
  13. package/dist/build/hosted.js.map +1 -0
  14. package/dist/build/runners.d.ts +10 -0
  15. package/dist/build/runners.d.ts.map +1 -1
  16. package/dist/commands/adapters.d.ts.map +1 -1
  17. package/dist/commands/adapters.js +5 -9
  18. package/dist/commands/adapters.js.map +1 -1
  19. package/dist/commands/agents.d.ts.map +1 -1
  20. package/dist/commands/agents.js +2 -1
  21. package/dist/commands/agents.js.map +1 -1
  22. package/dist/commands/artifacts.js +1 -1
  23. package/dist/commands/artifacts.js.map +1 -1
  24. package/dist/commands/auth.d.ts.map +1 -1
  25. package/dist/commands/auth.js +6 -5
  26. package/dist/commands/auth.js.map +1 -1
  27. package/dist/commands/blocks.d.ts.map +1 -1
  28. package/dist/commands/blocks.js +4 -3
  29. package/dist/commands/blocks.js.map +1 -1
  30. package/dist/commands/build.d.ts.map +1 -1
  31. package/dist/commands/build.js +191 -47
  32. package/dist/commands/build.js.map +1 -1
  33. package/dist/commands/conversations.js +1 -1
  34. package/dist/commands/conversations.js.map +1 -1
  35. package/dist/commands/deploy.d.ts.map +1 -1
  36. package/dist/commands/deploy.js +296 -36
  37. package/dist/commands/deploy.js.map +1 -1
  38. package/dist/commands/dev.d.ts +0 -2
  39. package/dist/commands/dev.d.ts.map +1 -1
  40. package/dist/commands/dev.js +74 -54
  41. package/dist/commands/dev.js.map +1 -1
  42. package/dist/commands/doctor.d.ts +1 -1
  43. package/dist/commands/doctor.d.ts.map +1 -1
  44. package/dist/commands/doctor.js +66 -3
  45. package/dist/commands/doctor.js.map +1 -1
  46. package/dist/commands/flows.d.ts.map +1 -1
  47. package/dist/commands/flows.js +2 -1
  48. package/dist/commands/flows.js.map +1 -1
  49. package/dist/commands/init.d.ts +1 -1
  50. package/dist/commands/init.js +13 -12
  51. package/dist/commands/init.js.map +1 -1
  52. package/dist/commands/license.d.ts.map +1 -1
  53. package/dist/commands/license.js +130 -5
  54. package/dist/commands/license.js.map +1 -1
  55. package/dist/commands/projects.d.ts.map +1 -1
  56. package/dist/commands/projects.js +67 -8
  57. package/dist/commands/projects.js.map +1 -1
  58. package/dist/commands/runs.d.ts.map +1 -1
  59. package/dist/commands/runs.js +2 -2
  60. package/dist/commands/runs.js.map +1 -1
  61. package/dist/commands/schedules.d.ts.map +1 -1
  62. package/dist/commands/schedules.js +30 -2
  63. package/dist/commands/schedules.js.map +1 -1
  64. package/dist/commands/secrets.js +1 -1
  65. package/dist/commands/secrets.js.map +1 -1
  66. package/dist/commands/skills.d.ts +42 -6
  67. package/dist/commands/skills.d.ts.map +1 -1
  68. package/dist/commands/skills.js +258 -158
  69. package/dist/commands/skills.js.map +1 -1
  70. package/dist/commands/sso.d.ts.map +1 -1
  71. package/dist/commands/sso.js +5 -2
  72. package/dist/commands/sso.js.map +1 -1
  73. package/dist/commands/webhooks.d.ts +0 -6
  74. package/dist/commands/webhooks.d.ts.map +1 -1
  75. package/dist/commands/webhooks.js +12 -85
  76. package/dist/commands/webhooks.js.map +1 -1
  77. package/dist/config.d.ts +34 -0
  78. package/dist/config.d.ts.map +1 -1
  79. package/dist/config.js +58 -20
  80. package/dist/config.js.map +1 -1
  81. package/dist/context.d.ts +8 -0
  82. package/dist/context.d.ts.map +1 -1
  83. package/dist/context.js +1 -0
  84. package/dist/context.js.map +1 -1
  85. package/dist/deploy/defaults.d.ts.map +1 -1
  86. package/dist/deploy/defaults.js +5 -1
  87. package/dist/deploy/defaults.js.map +1 -1
  88. package/dist/deploy/post.d.ts +9 -1
  89. package/dist/deploy/post.d.ts.map +1 -1
  90. package/dist/deploy/post.js +100 -2
  91. package/dist/deploy/post.js.map +1 -1
  92. package/dist/deploy/response.d.ts.map +1 -1
  93. package/dist/deploy/response.js +3 -0
  94. package/dist/deploy/response.js.map +1 -1
  95. package/dist/deploy/runners.d.ts +67 -0
  96. package/dist/deploy/runners.d.ts.map +1 -1
  97. package/dist/dev/blocked.d.ts +57 -0
  98. package/dist/dev/blocked.d.ts.map +1 -0
  99. package/dist/dev/blocked.js +127 -0
  100. package/dist/dev/blocked.js.map +1 -0
  101. package/dist/dev/defaults.d.ts +2 -1
  102. package/dist/dev/defaults.d.ts.map +1 -1
  103. package/dist/dev/defaults.js +20 -5
  104. package/dist/dev/defaults.js.map +1 -1
  105. package/dist/dev/port.d.ts +2 -1
  106. package/dist/dev/port.d.ts.map +1 -1
  107. package/dist/dev/port.js +11 -3
  108. package/dist/dev/port.js.map +1 -1
  109. package/dist/dev/preview-expiry.d.ts +35 -0
  110. package/dist/dev/preview-expiry.d.ts.map +1 -0
  111. package/dist/dev/preview-expiry.js +57 -0
  112. package/dist/dev/preview-expiry.js.map +1 -0
  113. package/dist/dev/runners.d.ts +6 -2
  114. package/dist/dev/runners.d.ts.map +1 -1
  115. package/dist/dev/runtime-container.d.ts +2 -0
  116. package/dist/dev/runtime-container.d.ts.map +1 -1
  117. package/dist/dev/runtime-container.js +18 -5
  118. package/dist/dev/runtime-container.js.map +1 -1
  119. package/dist/dev/runtime-image.d.ts +4 -3
  120. package/dist/dev/runtime-image.d.ts.map +1 -1
  121. package/dist/dev/runtime-image.js +4 -3
  122. package/dist/dev/runtime-image.js.map +1 -1
  123. package/dist/dev/runtime-registry.d.ts +6 -11
  124. package/dist/dev/runtime-registry.d.ts.map +1 -1
  125. package/dist/dev/runtime-registry.js +26 -17
  126. package/dist/dev/runtime-registry.js.map +1 -1
  127. package/dist/init/augment-scaffolder.d.ts +1 -1
  128. package/dist/init/augment-scaffolder.d.ts.map +1 -1
  129. package/dist/init/augment-scaffolder.js +5 -3
  130. package/dist/init/augment-scaffolder.js.map +1 -1
  131. package/dist/init/dependency-specs.d.ts +1 -1
  132. package/dist/init/dependency-specs.d.ts.map +1 -1
  133. package/dist/init/dependency-specs.js +1 -1
  134. package/dist/init/dependency-specs.js.map +1 -1
  135. package/dist/init/gitignore-patcher.d.ts +13 -3
  136. package/dist/init/gitignore-patcher.d.ts.map +1 -1
  137. package/dist/init/gitignore-patcher.js +8 -4
  138. package/dist/init/gitignore-patcher.js.map +1 -1
  139. package/dist/init/java-augment.js +1 -1
  140. package/dist/init/java-augment.js.map +1 -1
  141. package/dist/init/mode-detect.d.ts.map +1 -1
  142. package/dist/init/mode-detect.js +3 -2
  143. package/dist/init/mode-detect.js.map +1 -1
  144. package/dist/init/python-augment.d.ts.map +1 -1
  145. package/dist/init/python-augment.js +5 -4
  146. package/dist/init/python-augment.js.map +1 -1
  147. package/dist/init/scala-augment.js +2 -2
  148. package/dist/init/scala-augment.js.map +1 -1
  149. package/dist/license/expiry.d.ts +3 -1
  150. package/dist/license/expiry.d.ts.map +1 -1
  151. package/dist/license/expiry.js +4 -2
  152. package/dist/license/expiry.js.map +1 -1
  153. package/dist/license/license-key.d.ts.map +1 -1
  154. package/dist/license/license-key.js +2 -0
  155. package/dist/license/license-key.js.map +1 -1
  156. package/dist/license/protocol.d.ts +25 -0
  157. package/dist/license/protocol.d.ts.map +1 -1
  158. package/dist/license/protocol.js +65 -0
  159. package/dist/license/protocol.js.map +1 -1
  160. package/dist/license/renew.d.ts +18 -1
  161. package/dist/license/renew.d.ts.map +1 -1
  162. package/dist/license/renew.js +33 -4
  163. package/dist/license/renew.js.map +1 -1
  164. package/dist/license/stores.d.ts.map +1 -1
  165. package/dist/license/stores.js +2 -1
  166. package/dist/license/stores.js.map +1 -1
  167. package/dist/main.d.ts +3 -0
  168. package/dist/main.d.ts.map +1 -1
  169. package/dist/main.js +1 -0
  170. package/dist/main.js.map +1 -1
  171. package/dist/providers/models-guide.d.ts +7 -0
  172. package/dist/providers/models-guide.d.ts.map +1 -0
  173. package/dist/providers/models-guide.js +11 -0
  174. package/dist/providers/models-guide.js.map +1 -0
  175. package/dist/rate-limit-wait.d.ts +42 -0
  176. package/dist/rate-limit-wait.d.ts.map +1 -0
  177. package/dist/rate-limit-wait.js +104 -0
  178. package/dist/rate-limit-wait.js.map +1 -0
  179. package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +1 -1
  180. package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +1 -1
  181. package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +1 -1
  182. package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +1 -1
  183. package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +75 -5
  184. package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +4 -2
  185. package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +1 -1
  186. package/dist/sdk-skills/kindgi-getting-started/SKILL.md +37 -11
  187. package/dist/sdk-skills/kindgi-java-authoring-agents/SKILL.md +3 -3
  188. package/dist/sdk-skills/kindgi-java-authoring-flows/SKILL.md +9 -3
  189. package/dist/sdk-skills/kindgi-java-authoring-guardrails/SKILL.md +3 -3
  190. package/dist/sdk-skills/kindgi-java-authoring-tools/SKILL.md +9 -4
  191. package/dist/sdk-skills/kindgi-java-getting-started/SKILL.md +33 -8
  192. package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +1 -1
  193. package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +1 -1
  194. package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +1 -1
  195. package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +6 -2
  196. package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +33 -8
  197. package/dist/sdk-skills/kindgi-scala-authoring-agents/SKILL.md +3 -3
  198. package/dist/sdk-skills/kindgi-scala-authoring-flows/SKILL.md +9 -3
  199. package/dist/sdk-skills/kindgi-scala-authoring-guardrails/SKILL.md +3 -3
  200. package/dist/sdk-skills/kindgi-scala-authoring-tools/SKILL.md +9 -4
  201. package/dist/sdk-skills/kindgi-scala-getting-started/SKILL.md +33 -8
  202. package/dist/sdk-skills/kindgi-using/SKILL.md +1 -1
  203. package/dist/templates/drupal/AGENTS.md +40 -15
  204. package/dist/templates/drupal/README.md.tmpl +2 -3
  205. package/dist/templates/drupal/kindgi.config.ts.tmpl +23 -19
  206. package/dist/templates/java/AGENTS.md +32 -3
  207. package/dist/templates/java/README.md.tmpl +1 -1
  208. package/dist/templates/minimal/AGENTS.md +42 -17
  209. package/dist/templates/minimal/README.md.tmpl +11 -10
  210. package/dist/templates/minimal/kindgi.config.ts.tmpl +23 -22
  211. package/dist/templates/python/AGENTS.md +28 -8
  212. package/dist/templates/python/README.md.tmpl +1 -1
  213. package/dist/templates/python/pyproject.toml.tmpl +10 -6
  214. package/dist/templates/sample/AGENTS.md +42 -17
  215. package/dist/templates/sample/README.md.tmpl +1 -1
  216. package/dist/templates/sample/kindgi.config.ts.tmpl +23 -19
  217. package/dist/templates/scala/AGENTS.md +32 -3
  218. package/dist/templates/scala/README.md.tmpl +1 -1
  219. package/dist/templates/woocommerce/AGENTS.md +38 -13
  220. package/dist/templates/woocommerce/README.md.tmpl +28 -3
  221. package/dist/templates/woocommerce/kindgi.config.ts.tmpl +23 -19
  222. package/package.json +13 -13
@@ -1,10 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  // Copyright (C) 2026 Kindgi Inc.
3
3
  /**
4
- * `kindgi skills sync` — refresh a scaffolded pack's `.claude/skills/`
5
- * from the SDK skills bundled into the CLI.
4
+ * `kindgi skills sync` — refresh a scaffolded pack's skills from the SDK
5
+ * skills bundled into the CLI, in each of `SKILL_FOLDERS`: `.claude/skills/`
6
+ * and `.agents/skills/` hold the same copies, one per coding agent's way
7
+ * of finding them.
6
8
  *
7
- * Update semantics with version + hash tracking:
9
+ * Update semantics with version + hash tracking, for each folder's copy:
8
10
  *
9
11
  * - **Added** — bundled skill not present locally. Copy in.
10
12
  * - **Updated** — bundled skill differs from what was last installed
@@ -15,13 +17,13 @@
15
17
  * - **Skipped (modified)** — local copy has been edited since last
16
18
  * install; the user's edits would be lost. Skipped by default;
17
19
  * `--force` overwrites.
18
- * - **Local-only** — a skill in `.claude/skills/` that the bundle
19
- * doesn't ship. User-authored (or removed from a newer bundle).
20
- * Left untouched.
20
+ * - **Local-only** — a skill in the folder that the bundle doesn't
21
+ * ship. User-authored (or removed from a newer bundle). Left
22
+ * untouched.
21
23
  *
22
- * Sync state lives in `.claude/skills/.kindgi-manifest.json` — records
23
- * what version + hash of each skill was installed. Commit this file
24
- * to git so teammates see the same installed state.
24
+ * Sync state lives in `.claude/skills/.kindgi-manifest.json`, for both
25
+ * folders — records what version + hash of each skill was installed.
26
+ * Commit this file to git so teammates see the same installed state.
25
27
  *
26
28
  * A pack gets the skills written for its language: each skill lists
27
29
  * them in its frontmatter (`pack_languages: [node, python, java, scala]`); a
@@ -31,21 +33,34 @@ import { createHash } from 'node:crypto';
31
33
  import { mkdir, readFile, readdir, stat, writeFile } from 'node:fs/promises';
32
34
  import { dirname, join, relative, resolve } from 'node:path';
33
35
  import { packLanguage } from '@kindgi/handler-runtime';
36
+ import { FORMATTER_IGNORE_PATTERNS, patchPrettierignore } from '../init/gitignore-patcher.js';
34
37
  import { renderJson } from '../output.js';
35
38
  import { loadPackConfig } from '../pack-config.js';
36
39
  import { commandResultFromThrown, stringFlag } from './helpers.js';
37
40
  import { defaultSdkSkillsRoot } from './init.js';
41
+ /**
42
+ * The folders a pack's skills are copied into, from its root. Claude Code
43
+ * reads `.claude/skills/`; Codex and Gemini CLI read `.agents/skills/`
44
+ * (Cursor and VS Code's Copilot read either).
45
+ */
46
+ export const SKILL_FOLDERS = ['.claude/skills', '.agents/skills'];
38
47
  const MANIFEST_VERSION = 2;
39
- const MANIFEST_BASENAME = '.kindgi-manifest.json';
48
+ const MANIFEST_PATH = join(SKILL_FOLDERS[0], '.kindgi-manifest.json');
49
+ /** What `folder`'s copies were installed as. */
50
+ function installedIn(manifest, folder) {
51
+ return folder === '.claude/skills'
52
+ ? manifest.skills
53
+ : { ...manifest.skills, ...manifest.agentsSkills };
54
+ }
40
55
  const sync = {
41
56
  kind: 'leaf',
42
57
  name: 'sync',
43
- description: 'Refresh .claude/skills/ from the CLI-bundled SDK skills.',
58
+ description: 'Refresh .claude/skills/ and .agents/skills/ from the CLI-bundled SDK skills.',
44
59
  usage: 'kindgi skills sync [--path=<dir>] [--force] [--dry-run]',
45
60
  optionSpec: {
46
61
  path: {
47
62
  type: 'string',
48
- description: 'The pack root, whose `.claude/skills/` is refreshed. Default: the current directory.',
63
+ description: 'The pack root, whose `.claude/skills/` and `.agents/skills/` are refreshed. Default: the current directory.',
49
64
  },
50
65
  force: {
51
66
  type: 'boolean',
@@ -77,11 +92,16 @@ const sync = {
77
92
  const language = config.kind === 'ok' ? packLanguage(config.config) : 'node';
78
93
  const force = ctx.options.force === true;
79
94
  const dryRun = ctx.options['dry-run'] === true;
80
- const report = await syncSkills({ skillsRoot, targetDir, language, force, dryRun });
95
+ const synced = await syncSkills({ skillsRoot, targetDir, language, force, dryRun });
96
+ const prettierignore = dryRun ? undefined : await patchFormatterIgnore(targetDir, synced);
97
+ const report = prettierignore === undefined ? synced : { ...synced, prettierignore };
98
+ const json = renderJson(report, ctx.globals.format);
81
99
  return {
82
100
  kind: 'ok',
83
- rendered: renderJson(report, ctx.globals.format),
84
- ...(shouldRenderSummaryOnStderr(ctx) && { stderr: renderSummary(report) }),
101
+ rendered: {
102
+ stdout: json.stdout,
103
+ stderr: shouldRenderSummaryOnStderr(ctx) ? renderSummary(report) : json.stderr,
104
+ },
85
105
  };
86
106
  }
87
107
  catch (err) {
@@ -92,7 +112,7 @@ const sync = {
92
112
  export const skillsCommand = {
93
113
  kind: 'group',
94
114
  name: 'skills',
95
- description: "Manage the pack's `.claude/skills/` directory.",
115
+ description: "Manage the pack's skills, in `.claude/skills/` and `.agents/skills/`.",
96
116
  subcommands: [sync],
97
117
  };
98
118
  // -----------------------------------------------------------------------
@@ -100,99 +120,42 @@ export const skillsCommand = {
100
120
  // -----------------------------------------------------------------------
101
121
  export async function syncSkills(inputs) {
102
122
  const { skillsRoot, targetDir, language, force, dryRun } = inputs;
103
- const skillsDir = join(targetDir, '.claude', 'skills');
104
- const manifestPath = join(skillsDir, MANIFEST_BASENAME);
123
+ const manifestPath = join(targetDir, MANIFEST_PATH);
105
124
  const manifest = await readManifest(manifestPath);
106
- const bundledNames = await listBundledSkills(skillsRoot, language);
107
- const localNames = await listSkillDirs(skillsDir);
125
+ const bundled = await readBundledSkills(skillsRoot, language);
126
+ const bundledSet = new Set(bundled.map((skill) => skill.name));
108
127
  const outcomes = [];
109
- const nextEntries = { ...manifest.skills };
110
- for (const name of bundledNames) {
111
- const bundledPath = join(skillsRoot, name, 'SKILL.md');
112
- const bundledBytes = await readFile(bundledPath);
113
- const bundledHash = hashBytes(bundledBytes);
114
- const bundledText = bundledBytes.toString('utf8');
115
- const bundledVersion = parseFrontmatterField(bundledText, 'version');
116
- const bundledSdkVersion = parseFrontmatterField(bundledText, 'sdk_version');
117
- const localPath = join(skillsDir, name, 'SKILL.md');
118
- const localExists = await pathExists(localPath);
119
- if (!localExists) {
120
- if (!dryRun)
121
- await writeSkill(localPath, bundledBytes);
122
- nextEntries[name] = {
123
- installedVersion: bundledVersion,
124
- installedSdkVersion: bundledSdkVersion,
125
- installedHash: bundledHash,
126
- };
127
- outcomes.push({
128
- name,
129
- status: 'added',
130
- toVersion: bundledVersion,
131
- sdkVersion: bundledSdkVersion,
132
- });
133
- continue;
134
- }
135
- const localBytes = await readFile(localPath);
136
- const localHash = hashBytes(localBytes);
137
- const priorEntry = manifest.skills[name];
138
- // Content already matches bundle — nothing to do.
139
- if (localHash === bundledHash) {
140
- nextEntries[name] = {
141
- installedVersion: bundledVersion,
142
- installedSdkVersion: bundledSdkVersion,
143
- installedHash: bundledHash,
144
- };
145
- outcomes.push({
146
- name,
147
- status: 'unchanged',
148
- toVersion: bundledVersion,
149
- sdkVersion: bundledSdkVersion,
128
+ const next = {
129
+ '.claude/skills': { ...manifest.skills },
130
+ '.agents/skills': { ...manifest.agentsSkills },
131
+ };
132
+ for (const folder of SKILL_FOLDERS) {
133
+ const skillsDir = join(targetDir, folder);
134
+ const installed = installedIn(manifest, folder);
135
+ for (const skill of bundled) {
136
+ const synced = await syncCopy({
137
+ skill,
138
+ folder,
139
+ path: join(skillsDir, skill.name, 'SKILL.md'),
140
+ prior: installed[skill.name],
141
+ force,
142
+ dryRun,
150
143
  });
151
- continue;
144
+ outcomes.push(synced.outcome);
145
+ if (synced.installed !== undefined)
146
+ next[folder][skill.name] = synced.installed;
152
147
  }
153
- // Local differs from bundle. Determine if the user modified the
154
- // local copy or if the bundle simply advanced.
155
- const userModified = priorEntry === undefined || priorEntry.installedHash !== localHash;
156
- if (userModified && !force) {
157
- outcomes.push({
158
- name,
159
- status: 'skipped-modified',
160
- ...(priorEntry?.installedVersion !== undefined && {
161
- fromVersion: priorEntry.installedVersion,
162
- }),
163
- toVersion: bundledVersion,
164
- sdkVersion: bundledSdkVersion,
165
- reason: 'Local edits detected; --force to overwrite.',
166
- });
167
- continue;
148
+ for (const name of await listSkillDirs(skillsDir)) {
149
+ if (!bundledSet.has(name))
150
+ outcomes.push({ name, folder, status: 'local-only' });
168
151
  }
169
- if (!dryRun)
170
- await writeSkill(localPath, bundledBytes);
171
- const outcome = {
172
- name,
173
- status: 'updated',
174
- toVersion: bundledVersion,
175
- sdkVersion: bundledSdkVersion,
176
- ...(priorEntry?.installedVersion !== undefined && {
177
- fromVersion: priorEntry.installedVersion,
178
- }),
179
- ...(force && userModified && { reason: 'Overwrote local edits (--force)' }),
180
- };
181
- nextEntries[name] = {
182
- installedVersion: bundledVersion,
183
- installedSdkVersion: bundledSdkVersion,
184
- installedHash: bundledHash,
185
- };
186
- outcomes.push(outcome);
187
- }
188
- const bundledSet = new Set(bundledNames);
189
- for (const name of localNames) {
190
- if (bundledSet.has(name))
191
- continue;
192
- outcomes.push({ name, status: 'local-only' });
193
152
  }
194
153
  if (!dryRun) {
195
- await writeManifest(manifestPath, { v: MANIFEST_VERSION, skills: nextEntries });
154
+ await writeManifest(manifestPath, {
155
+ v: MANIFEST_VERSION,
156
+ skills: next['.claude/skills'],
157
+ agentsSkills: next['.agents/skills'],
158
+ });
196
159
  }
197
160
  return {
198
161
  targetDir: relative(process.cwd(), targetDir) || '.',
@@ -202,6 +165,89 @@ export async function syncSkills(inputs) {
202
165
  force,
203
166
  };
204
167
  }
168
+ async function readBundledSkills(root, language) {
169
+ const skills = [];
170
+ for (const name of await listBundledSkills(root, language)) {
171
+ const bytes = await readFile(join(root, name, 'SKILL.md'));
172
+ const text = bytes.toString('utf8');
173
+ skills.push({
174
+ name,
175
+ bytes,
176
+ entry: {
177
+ installedVersion: parseFrontmatterField(text, 'version'),
178
+ installedSdkVersion: parseFrontmatterField(text, 'sdk_version'),
179
+ installedHash: hashBytes(bytes),
180
+ },
181
+ });
182
+ }
183
+ return skills;
184
+ }
185
+ /**
186
+ * Brings one folder's copy of `skill` up to the bundle, unless it was
187
+ * edited since `prior` (what was last installed there) and `force` is
188
+ * off. `installed` is what the copy is now, for the manifest; `undefined`
189
+ * keeps the entry it had.
190
+ */
191
+ async function syncCopy(inputs) {
192
+ const { skill, folder, path, prior, force, dryRun } = inputs;
193
+ const which = { name: skill.name, folder };
194
+ const to = {
195
+ toVersion: skill.entry.installedVersion,
196
+ sdkVersion: skill.entry.installedSdkVersion,
197
+ };
198
+ if (!(await pathExists(path))) {
199
+ if (!dryRun)
200
+ await writeSkill(path, skill.bytes);
201
+ return { outcome: { ...which, status: 'added', ...to }, installed: skill.entry };
202
+ }
203
+ const localHash = hashBytes(await readFile(path));
204
+ // Content already matches bundle — nothing to do.
205
+ if (localHash === skill.entry.installedHash) {
206
+ return { outcome: { ...which, status: 'unchanged', ...to }, installed: skill.entry };
207
+ }
208
+ // Local differs from bundle. Determine if the user modified the
209
+ // local copy or if the bundle simply advanced.
210
+ const userModified = prior === undefined || prior.installedHash !== localHash;
211
+ const from = prior !== undefined && { fromVersion: prior.installedVersion };
212
+ if (userModified && !force) {
213
+ return {
214
+ outcome: {
215
+ ...which,
216
+ status: 'skipped-modified',
217
+ ...from,
218
+ ...to,
219
+ reason: 'Local edits detected; --force to overwrite.',
220
+ },
221
+ };
222
+ }
223
+ if (!dryRun)
224
+ await writeSkill(path, skill.bytes);
225
+ return {
226
+ outcome: {
227
+ ...which,
228
+ status: 'updated',
229
+ ...to,
230
+ ...from,
231
+ ...(force && userModified && { reason: 'Overwrote local edits (--force)' }),
232
+ },
233
+ installed: skill.entry,
234
+ };
235
+ }
236
+ /**
237
+ * Adds the skills' folders to the pack's `.prettierignore`, when it has one
238
+ * (`FormatterIgnoreOutcome`). `undefined` when there's none, or every line
239
+ * is there already.
240
+ */
241
+ async function patchFormatterIgnore(targetDir, report) {
242
+ const path = join(report.targetDir, '.prettierignore');
243
+ const patched = await patchPrettierignore(join(targetDir, '.prettierignore'));
244
+ if (patched.kind === 'patched')
245
+ return { path, status: 'patched', appended: patched.appended };
246
+ if (patched.kind === 'error') {
247
+ return { path, status: 'error', message: patched.message ?? `couldn't patch ${path}` };
248
+ }
249
+ return undefined;
250
+ }
205
251
  // -----------------------------------------------------------------------
206
252
  // Helpers
207
253
  // -----------------------------------------------------------------------
@@ -228,26 +274,36 @@ async function readManifest(path) {
228
274
  if (typeof skillsField !== 'object' || skillsField === null) {
229
275
  return { v: MANIFEST_VERSION, skills: {} };
230
276
  }
231
- const out = {};
232
- for (const [k, v] of Object.entries(skillsField)) {
233
- if (typeof v === 'object' &&
234
- v !== null &&
235
- typeof v.installedVersion === 'string' &&
236
- typeof v.installedHash === 'string') {
237
- const sdkVer = v.installedSdkVersion;
238
- out[k] = {
239
- installedVersion: v.installedVersion,
240
- installedSdkVersion: typeof sdkVer === 'string' ? sdkVer : 'unknown',
241
- installedHash: v.installedHash,
242
- };
243
- }
244
- }
245
- return { v: MANIFEST_VERSION, skills: out };
277
+ return {
278
+ v: MANIFEST_VERSION,
279
+ skills: readEntries(skillsField),
280
+ agentsSkills: readEntries(parsedRec.agentsSkills),
281
+ };
246
282
  }
247
283
  catch {
248
284
  return { v: MANIFEST_VERSION, skills: {} };
249
285
  }
250
286
  }
287
+ /** A manifest field's well-formed entries; anything else counts as none. */
288
+ function readEntries(field) {
289
+ const out = {};
290
+ if (typeof field !== 'object' || field === null)
291
+ return out;
292
+ for (const [k, v] of Object.entries(field)) {
293
+ if (typeof v === 'object' &&
294
+ v !== null &&
295
+ typeof v.installedVersion === 'string' &&
296
+ typeof v.installedHash === 'string') {
297
+ const sdkVer = v.installedSdkVersion;
298
+ out[k] = {
299
+ installedVersion: v.installedVersion,
300
+ installedSdkVersion: typeof sdkVer === 'string' ? sdkVer : 'unknown',
301
+ installedHash: v.installedHash,
302
+ };
303
+ }
304
+ }
305
+ return out;
306
+ }
251
307
  async function writeManifest(path, manifest) {
252
308
  await mkdir(dirname(path), { recursive: true });
253
309
  await writeFile(path, `${JSON.stringify(manifest, null, 2)}\n`, 'utf8');
@@ -341,14 +397,16 @@ async function writeSkill(path, bytes) {
341
397
  await mkdir(dirname(path), { recursive: true });
342
398
  await writeFile(path, bytes);
343
399
  }
400
+ /** The summary is for people: shown unless the caller asked for JSON, or for quiet. */
344
401
  function shouldRenderSummaryOnStderr(ctx) {
345
- return ctx.globals.format !== 'json';
402
+ const { format, formatRequested } = ctx.globals;
403
+ return !(formatRequested && (format === 'json' || format === 'quiet'));
346
404
  }
347
405
  /**
348
406
  * Cheap drift check for `kindgi dev` boot. Compares the pack's
349
- * installed skills (via `.claude/skills/.kindgi-manifest.json`)
350
- * against the SDK-bundled skill versions from the CLI's shipped
351
- * skills root.
407
+ * installed skills, in each of `SKILL_FOLDERS` (via
408
+ * `.claude/skills/.kindgi-manifest.json`), against the SDK-bundled
409
+ * skill versions from the CLI's shipped skills root.
352
410
  *
353
411
  * Read-only: never writes to disk, never mutates the manifest. If
354
412
  * anything fails (missing manifest, unreadable bundle) it returns
@@ -356,9 +414,7 @@ function shouldRenderSummaryOnStderr(ctx) {
356
414
  * blocking on a check that can't run.
357
415
  */
358
416
  export async function detectSkillDrift(inputs) {
359
- const skillsDir = join(inputs.targetDir, '.claude', 'skills');
360
- const manifestPath = join(skillsDir, MANIFEST_BASENAME);
361
- const manifest = await readManifest(manifestPath);
417
+ const manifest = await readManifest(join(inputs.targetDir, MANIFEST_PATH));
362
418
  const bundledNames = await listBundledSkills(inputs.skillsRoot, inputs.language);
363
419
  const missing = [];
364
420
  const outdated = [];
@@ -371,24 +427,58 @@ export async function detectSkillDrift(inputs) {
371
427
  continue;
372
428
  }
373
429
  const bundledVersion = parseFrontmatterField(bundledText, 'version');
374
- const installed = manifest.skills[name];
375
- if (installed === undefined) {
376
- // Skill exists in the bundle but was never synced. Might not
377
- // yet exist on disk either — either way, the pack is behind.
378
- const localExists = await pathExists(join(skillsDir, name, 'SKILL.md'));
379
- if (!localExists)
380
- missing.push(name);
381
- else
382
- outdated.push({ name, from: 'untracked', to: bundledVersion });
383
- continue;
384
- }
385
- if (installed.installedVersion !== bundledVersion) {
386
- outdated.push({ name, from: installed.installedVersion, to: bundledVersion });
430
+ for (const folder of SKILL_FOLDERS) {
431
+ const local = join(inputs.targetDir, folder, name, 'SKILL.md');
432
+ // A copy that's gone is behind, whatever the manifest says.
433
+ if (!(await pathExists(local))) {
434
+ missing.push({ name, folder });
435
+ continue;
436
+ }
437
+ const installed = installedIn(manifest, folder)[name];
438
+ if (installed === undefined) {
439
+ outdated.push({ name, folder, from: 'untracked', to: bundledVersion });
440
+ }
441
+ else if (installed.installedVersion !== bundledVersion) {
442
+ outdated.push({ name, folder, from: installed.installedVersion, to: bundledVersion });
443
+ }
387
444
  }
388
445
  }
389
446
  return { missing, outdated };
390
447
  }
391
- function renderSummary(report) {
448
+ /**
449
+ * The drift in words for `kindgi dev` ("2 out of date, 1 not yet
450
+ * installed"), by skill: one behind in both folders counts once.
451
+ * `undefined` when nothing is behind.
452
+ */
453
+ export function describeSkillDrift(drift) {
454
+ const outdated = new Set(drift.outdated.map((d) => d.name)).size;
455
+ const missing = new Set(drift.missing.map((d) => d.name)).size;
456
+ const parts = [];
457
+ if (outdated > 0)
458
+ parts.push(`${outdated} out of date`);
459
+ if (missing > 0)
460
+ parts.push(`${missing} not yet installed`);
461
+ return parts.length > 0 ? parts.join(', ') : undefined;
462
+ }
463
+ const STATUS_SYMBOLS = {
464
+ added: '+',
465
+ updated: '↑',
466
+ unchanged: '=',
467
+ 'skipped-modified': '!',
468
+ 'local-only': '·',
469
+ };
470
+ /** One outcome's line: its symbol, name, version (or the move between two) and reason. */
471
+ function renderOutcome(o) {
472
+ const version = o.fromVersion !== undefined && o.toVersion !== undefined && o.fromVersion !== o.toVersion
473
+ ? ` @${o.fromVersion}→${o.toVersion}`
474
+ : o.toVersion !== undefined
475
+ ? ` @${o.toVersion}`
476
+ : '';
477
+ const reason = o.reason !== undefined ? ` — ${o.reason}` : '';
478
+ return ` ${STATUS_SYMBOLS[o.status]} ${o.name}${version}${reason}`;
479
+ }
480
+ /** One folder's block: a line per outcome, then the folder's counts. */
481
+ function renderFolder(outcomes, folder) {
392
482
  const counts = {
393
483
  added: 0,
394
484
  updated: 0,
@@ -396,35 +486,45 @@ function renderSummary(report) {
396
486
  'skipped-modified': 0,
397
487
  'local-only': 0,
398
488
  };
399
- for (const o of report.outcomes)
489
+ const lines = ['', `${folder}/`];
490
+ for (const o of outcomes) {
491
+ if (o.folder !== folder)
492
+ continue;
400
493
  counts[o.status] += 1;
494
+ lines.push(renderOutcome(o));
495
+ }
496
+ lines.push(` ${counts.added} added, ${counts.updated} updated, ${counts.unchanged} unchanged, ` +
497
+ `${counts['skipped-modified']} skipped-modified, ${counts['local-only']} local-only`);
498
+ return lines;
499
+ }
500
+ /** What sync did to the pack's `.prettierignore`, as lines; none when it left the file alone. */
501
+ function renderFormatterIgnore(outcome) {
502
+ if (outcome === undefined)
503
+ return [];
504
+ if (outcome.status === 'patched') {
505
+ return [
506
+ '',
507
+ `Added ${outcome.appended.join(' and ')} to ${outcome.path}, so the formatter leaves the skills as they are.`,
508
+ ];
509
+ }
510
+ return [
511
+ '',
512
+ `Couldn't add the skills' folders to ${outcome.path}: ${outcome.message}`,
513
+ ` Add ${FORMATTER_IGNORE_PATTERNS.join(' and ')} to it yourself: a skill the formatter rewrites, the next sync keeps as edited.`,
514
+ ];
515
+ }
516
+ function renderSummary(report) {
401
517
  const lines = [
402
- `Synced ${report.targetDir}/.claude/skills/${report.dryRun ? ' (dry-run)' : ''}`,
518
+ `Synced ${SKILL_FOLDERS.map((f) => `${report.targetDir}/${f}/`).join(' and ')}${report.dryRun ? ' (dry-run)' : ''}`,
519
+ ...SKILL_FOLDERS.flatMap((folder) => renderFolder(report.outcomes, folder)),
520
+ ...renderFormatterIgnore(report.prettierignore),
403
521
  '',
404
522
  ];
405
523
  const sdkVersions = new Set();
406
524
  for (const o of report.outcomes) {
407
525
  if (o.sdkVersion !== undefined && o.sdkVersion !== 'unknown')
408
526
  sdkVersions.add(o.sdkVersion);
409
- const symbol = o.status === 'added'
410
- ? '+'
411
- : o.status === 'updated'
412
- ? '↑'
413
- : o.status === 'unchanged'
414
- ? '='
415
- : o.status === 'skipped-modified'
416
- ? '!'
417
- : '·';
418
- const version = o.fromVersion !== undefined && o.toVersion !== undefined && o.fromVersion !== o.toVersion
419
- ? ` @${o.fromVersion}→${o.toVersion}`
420
- : o.toVersion !== undefined
421
- ? ` @${o.toVersion}`
422
- : '';
423
- lines.push(` ${symbol} ${o.name}${version}${o.reason !== undefined ? ` — ${o.reason}` : ''}`);
424
527
  }
425
- lines.push('');
426
- lines.push(`${counts.added} added, ${counts.updated} updated, ${counts.unchanged} unchanged, ` +
427
- `${counts['skipped-modified']} skipped-modified, ${counts['local-only']} local-only`);
428
528
  if (sdkVersions.size === 1) {
429
529
  lines.push(`SDK release: ${[...sdkVersions][0]}`);
430
530
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7D,OAAO,EAAwC,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAqB,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAWjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAU,CAAC;AAmB3E,MAAM,gBAAgB,GAAG,CAAU,CAAC;AACpC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;AAEtE,gDAAgD;AAChD,SAAS,WAAW,CAClB,QAAkB,EAClB,MAAmB;IAEnB,OAAO,MAAM,KAAK,gBAAgB;QAChC,CAAC,CAAC,QAAQ,CAAC,MAAM;QACjB,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;AACvD,CAAC;AAuCD,MAAM,IAAI,GAAgB;IACxB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,8EAA8E;IAC3F,KAAK,EAAE,yDAAyD;IAChE,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EACT,6GAA6G;SAChH;QACD,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,gEAAgE;SAC9E;QACD,SAAS,EAAE;YACT,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,oDAAoD;SAClE;KACF;IACD,GAAG,EAAE,KAAK,EAAE,GAAG,EAA0B,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC;YAC1C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO;oBACL,IAAI,EAAE,OAAO;oBACb,MAAM,EACJ,4EAA4E;wBAC5E,6EAA6E;wBAC7E,+BAA+B;oBACjC,QAAQ,EAAE,CAAC;iBACZ,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACpD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,uBAAuB,MAAM,CAAC,OAAO,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC3F,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAsB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7F,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC;YACzC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;YAC/C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACpF,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC1F,MAAM,MAAM,GAAG,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,CAAC;YACrF,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE;oBACR,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;iBAC/E;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,uEAAuE;IACpF,WAAW,EAAE,CAAC,IAAI,CAAC;CACpB,CAAC;AAEF,0EAA0E;AAC1E,cAAc;AACd,0EAA0E;AAE1E,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAMhC;IACC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAElE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,MAAM,IAAI,GAAuD;QAC/D,gBAAgB,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE;QACxC,gBAAgB,EAAE,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE;KAC/C,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;gBAC5B,KAAK;gBACL,MAAM;gBACN,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;gBAC7C,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC5B,KAAK;gBACL,MAAM;aACP,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAClF,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,aAAa,CAAC,YAAY,EAAE;YAChC,CAAC,EAAE,gBAAgB;YACnB,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC;YAC9B,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC;SACrC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,IAAI,GAAG;QACpD,YAAY,EAAE,QAAQ;QACtB,QAAQ;QACR,MAAM;QACN,KAAK;KACN,CAAC;AACJ,CAAC;AASD,KAAK,UAAU,iBAAiB,CAC9B,IAAY,EACZ,QAAsB;IAEtB,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,MAAM,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,KAAK;YACL,KAAK,EAAE;gBACL,gBAAgB,EAAE,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC;gBACxD,mBAAmB,EAAE,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC;gBAC/D,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC;aAChC;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,QAAQ,CAAC,MAOvB;IACC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC7D,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3C,MAAM,EAAE,GAAG;QACT,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB;QACvC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,mBAAmB;KAC5C,CAAC;IAEF,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM;YAAE,MAAM,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACnF,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,kDAAkD;IAClD,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACvF,CAAC;IAED,gEAAgE;IAChE,+CAA+C;IAC/C,MAAM,YAAY,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC;IAC9E,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAE5E,IAAI,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE;gBACP,GAAG,KAAK;gBACR,MAAM,EAAE,kBAAkB;gBAC1B,GAAG,IAAI;gBACP,GAAG,EAAE;gBACL,MAAM,EAAE,6CAA6C;aACtD;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM;QAAE,MAAM,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO;QACL,OAAO,EAAE;YACP,GAAG,KAAK;YACR,MAAM,EAAE,SAAS;YACjB,GAAG,EAAE;YACL,GAAG,IAAI;YACP,GAAG,CAAC,KAAK,IAAI,YAAY,IAAI,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;SAC5E;QACD,SAAS,EAAE,KAAK,CAAC,KAAK;KACvB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,oBAAoB,CACjC,SAAiB,EACjB,MAAuB;IAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9E,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC/F,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,kBAAkB,IAAI,EAAE,EAAE,CAAC;IACzF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,0EAA0E;AAC1E,UAAU;AACV,0EAA0E;AAE1E,SAAS,gBAAgB,CAAC,GAAW,EAAE,OAA2B;IAChE,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACtC,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClD,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC7C,CAAC;QACD,MAAM,SAAS,GAAG,MAAmE,CAAC;QACtF,+DAA+D;QAC/D,iEAAiE;QACjE,6DAA6D;QAC7D,IAAI,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC7C,CAAC;QACD,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC;QACrC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YAC5D,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO;YACL,CAAC,EAAE,gBAAgB;YACnB,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC;YAChC,YAAY,EAAE,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC;SAClD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,SAAS,WAAW,CAAC,KAAc;IACjC,MAAM,GAAG,GAAkC,EAAE,CAAC;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC;IAC5D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QACtE,IACE,OAAO,CAAC,KAAK,QAAQ;YACrB,CAAC,KAAK,IAAI;YACV,OAAQ,CAAoC,CAAC,gBAAgB,KAAK,QAAQ;YAC1E,OAAQ,CAAiC,CAAC,aAAa,KAAK,QAAQ,EACpE,CAAC;YACD,MAAM,MAAM,GAAI,CAAuC,CAAC,mBAAmB,CAAC;YAC5E,GAAG,CAAC,CAAC,CAAC,GAAG;gBACP,gBAAgB,EAAG,CAAkC,CAAC,gBAAgB;gBACtE,mBAAmB,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACpE,aAAa,EAAG,CAA+B,CAAC,aAAa;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,QAAkB;IAC3D,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;YAC/B,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC/C,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,MAAM,cAAc,GAAyC;IAC3D,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,6EAA6E;AAC7E,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,QAAsB;IACnE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,MAAM,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,WAAW,EAAE,KAAK,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,IAAI;SACR,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;SACtD,MAAM,CAAC,CAAC,IAAI,EAAwB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,CAAS;IACjC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACnE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAiB;IAClC,OAAO,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACnF,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,IAAY,EAAE,KAAa;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAClD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,OAAO,2BAA2B,EAAE,GAAG,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3C,OAAO,YAAY,KAAK,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9F,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,KAAiB;IACvD,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,uFAAuF;AACvF,SAAS,2BAA2B,CAAC,GAEpC;IACC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;IAChD,OAAO,CAAC,CAAC,eAAe,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC;AACzE,CAAC;AAcD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAItC;IACC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEjF,MAAM,OAAO,GAA4C,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAsE,EAAE,CAAC;IAEvF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,WAAW,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7F,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,cAAc,GAAG,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACrE,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YAC/D,4DAA4D;YAC5D,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YACzE,CAAC;iBAAM,IAAI,SAAS,CAAC,gBAAgB,KAAK,cAAc,EAAE,CAAC;gBACzD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,gBAAgB,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAuB;IACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,QAAQ,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,cAAc,CAAC,CAAC;IACxD,IAAI,OAAO,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,oBAAoB,CAAC,CAAC;IAC5D,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,MAAM,cAAc,GAAyD;IAC3E,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,GAAG;IACd,kBAAkB,EAAE,GAAG;IACvB,YAAY,EAAE,GAAG;CAClB,CAAC;AAEF,0FAA0F;AAC1F,SAAS,aAAa,CAAC,CAAmB;IACxC,MAAM,OAAO,GACX,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,SAAS;QACvF,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,SAAS,EAAE;QACrC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS;YACzB,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE;YACpB,CAAC,CAAC,EAAE,CAAC;IACX,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC;AACtE,CAAC;AAED,wEAAwE;AACxE,SAAS,YAAY,CAAC,QAAqC,EAAE,MAAmB;IAC9E,MAAM,MAAM,GAA+C;QACzD,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,CAAC;QACZ,kBAAkB,EAAE,CAAC;QACrB,YAAY,EAAE,CAAC;KAChB,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;YAAE,SAAS;QAClC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,KAAK,CAAC,IAAI,CACR,KAAK,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,SAAS,cAAc;QACnF,GAAG,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,MAAM,CAAC,YAAY,CAAC,aAAa,CACvF,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iGAAiG;AACjG,SAAS,qBAAqB,CAAC,OAA2C;IACxE,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO;YACL,EAAE;YACF,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,OAAO,CAAC,IAAI,mDAAmD;SAC9G,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE;QACF,uCAAuC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE;QACzE,SAAS,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,iFAAiF;KAClI,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAuB;IAC5C,MAAM,KAAK,GAAa;QACtB,UAAU,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE;QACnH,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3E,GAAG,qBAAqB,CAAC,MAAM,CAAC,cAAc,CAAC;QAC/C,EAAE;KACH,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS;YAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;SAAM,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sso.d.ts","sourceRoot":"","sources":["../../src/commands/sso.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,gCAAgC,EAEjC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,KAAK,sBAAsB,EAG5B,MAAM,4BAA4B,CAAC;AAapC,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,YAAY,CAAC;AA0FvD,uEAAuE;AACvE,wBAAgB,WAAW,CACzB,IAAI,EAAE,gCAAgC,EACtC,GAAG,CAAC,EAAE,sBAAsB,GAC3B,MAAM,CAiBR;AAgMD,eAAO,MAAM,UAAU,EAAE,OAKxB,CAAC"}
1
+ {"version":3,"file":"sso.d.ts","sourceRoot":"","sources":["../../src/commands/sso.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,gCAAgC,EAEjC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,KAAK,sBAAsB,EAG5B,MAAM,4BAA4B,CAAC;AAapC,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,YAAY,CAAC;AA0FvD,uEAAuE;AACvE,wBAAgB,WAAW,CACzB,IAAI,EAAE,gCAAgC,EACtC,GAAG,CAAC,EAAE,sBAAsB,GAC3B,MAAM,CAiBR;AAoMD,eAAO,MAAM,UAAU,EAAE,OAKxB,CAAC"}
@@ -97,9 +97,12 @@ const start = {
97
97
  kind: 'leaf',
98
98
  name: 'start',
99
99
  description: 'Get the URLs to give your identity provider, before registering anything, and a message to send IT.',
100
- usage: 'kindgi sso providers start <provider-id> --kind=oidc|saml [--idp=google|entra|okta|keycloak]',
100
+ usage: 'kindgi sso providers start <provider-id> [--kind=oidc|saml] [--idp=google|entra|okta|keycloak]',
101
101
  optionSpec: {
102
- ...kindOption,
102
+ kind: {
103
+ type: 'string',
104
+ description: "`oidc` (OpenID Connect) or `saml`. Needed until the provider is registered, unless `--idp` gives it; after that, the registered provider's kind.",
105
+ },
103
106
  idp: {
104
107
  type: 'string',
105
108
  description: 'Add the click-by-click steps for `google`, `entra`, `okta` or `keycloak` (OIDC).',