@keystrokehq/cli 0.0.15 → 0.0.16

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 (81) hide show
  1. package/README.md +11 -1
  2. package/dist/{admin-CXQezpQA.mjs → admin-Bb9Hx-gO.mjs} +1 -1
  3. package/dist/{agents-CWGz8CR-.mjs → agents-CbmvvOAx.mjs} +2 -2
  4. package/dist/{api-keys-BZmUiIEr.mjs → api-keys-DJlyIf10.mjs} +1 -1
  5. package/dist/{auth-CGBgi6PG.mjs → auth-DpDEkJz7.mjs} +1 -1
  6. package/dist/{build-agents-DseUtzd4-DBQ82ErJ.mjs → build-agents-DseUtzd4-VYWtIZy9.mjs} +2 -2
  7. package/dist/{build-tasks-GVuMLS0h-CWrrj8SF.mjs → build-tasks-GVuMLS0h-p08mMOyK.mjs} +2 -2
  8. package/dist/{build-workflows-CV4tBo6S-B4SPp86e.mjs → build-workflows-CV4tBo6S-knCnBKTc.mjs} +2 -2
  9. package/dist/{build.handler-DqnngAkl.mjs → build.handler-BNSC_zhQ.mjs} +1 -1
  10. package/dist/{commander-i-7LgOyc.mjs → commander-D15UZVjp.mjs} +1 -1
  11. package/dist/{connect-CS6sqNfA.mjs → connect-DzSNDSmI.mjs} +1 -1
  12. package/dist/{credentials-1CPFwx-k.mjs → credentials-VidBoOd7.mjs} +1 -1
  13. package/dist/{current-deployment-workflow-CUBHcdZl.mjs → current-deployment-workflow-BRUEdPrN.mjs} +1 -1
  14. package/dist/{deploy-DwRwyVwR.mjs → deploy-eshEEiP-.mjs} +2 -2
  15. package/dist/{deploy.handler-zMb-BHLo.mjs → deploy.handler-BxxWI7nV.mjs} +6 -6
  16. package/dist/{diff.handler-C-XqswH5.mjs → diff.handler-CzrKCj7N.mjs} +1 -1
  17. package/dist/{init-QhRFud0x.mjs → init-PTwX63_P.mjs} +15 -3
  18. package/dist/{init.handler-Beu-vpIu.mjs → init.handler-CdytFiFt.mjs} +24 -61
  19. package/dist/{inspect.handler-ULT2jiVU.mjs → inspect.handler-umc7of-r.mjs} +1 -1
  20. package/dist/{integrations-6BiywCph.mjs → integrations-B0Gv-L0s.mjs} +4 -4
  21. package/dist/{invites-BlB-hKUE.mjs → invites-Cqi7iyIN.mjs} +4 -4
  22. package/dist/keystroke.mjs +21 -21
  23. package/dist/{list2.handler-L3BKR5ok.mjs → list2.handler-T5v4EK20.mjs} +1 -1
  24. package/dist/{listen-Tx2SrMyo.mjs → listen-rHLiCWbn.mjs} +2 -2
  25. package/dist/{listen.handler-C7AqsKLf.mjs → listen.handler-B9T58yAj.mjs} +1 -1
  26. package/dist/{logs-NI-DyeFY.mjs → logs-DUwdYZB-.mjs} +3 -3
  27. package/dist/{logs.handler-BGJU1p3H.mjs → logs.handler-DGcGN2qb.mjs} +1 -1
  28. package/dist/{org-8bkIZAJ4.mjs → org-DUCts2MV.mjs} +15 -15
  29. package/dist/{projects-B5MRnbHS.mjs → projects-CbquwUlm.mjs} +4 -4
  30. package/dist/{run-polling-BwyyKDwg.mjs → run-polling-BWcLQvm0.mjs} +1 -1
  31. package/dist/{run.handler-TJNyF_p_.mjs → run.handler-BiBDLoeH.mjs} +2 -2
  32. package/dist/{runs-Bs8VzL8P.mjs → runs-Bc3zjk7V.mjs} +1 -1
  33. package/dist/skill-installer-DkRJ6oLi.mjs +506 -0
  34. package/dist/{skills-sync.handler-DXF6IgEX.mjs → skills-sync.handler-C4ztv1Vu.mjs} +20 -7
  35. package/dist/skills.command-DuL4kLUi.mjs +49 -0
  36. package/dist/{skills.handler-CPKCf9ZK.mjs → skills.handler-R5KAbioE.mjs} +1 -1
  37. package/dist/{sync-BZj7Dkhq.mjs → sync-Pssitj6K.mjs} +2 -2
  38. package/dist/{sync.handler-Kk4R2lJ_.mjs → sync.handler-Be0U3x-n.mjs} +1 -1
  39. package/dist/{task-target-build-Du0ObGbb.mjs → task-target-build-BG6cC3bz.mjs} +3 -3
  40. package/dist/task-target-deploy-runner.mjs +4 -4
  41. package/dist/{test-CJ8Vx_h5.mjs → test-BISghlKg.mjs} +2 -2
  42. package/dist/{test.handler-BTn4NFmU.mjs → test.handler-DkizZhVu.mjs} +2 -2
  43. package/dist/{tool.handler-CuxoCstV.mjs → tool.handler-Bu130Vcz.mjs} +3 -3
  44. package/dist/{trigger-artifacts-RizI57RC-abdkW8-z.mjs → trigger-artifacts-RizI57RC-CxHwCkQ_.mjs} +2 -2
  45. package/dist/types-D04ah3uY.mjs +6 -0
  46. package/dist/{upgrade-CdA_Sw4F.mjs → upgrade-cH9I_pZq.mjs} +2 -2
  47. package/dist/{validate.handler-COJ53qWJ.mjs → validate.handler-I8LY-UkG.mjs} +1 -1
  48. package/dist/{workflow-build-kNNcU-R8.mjs → workflow-build-C9rQQ4qU.mjs} +5 -5
  49. package/dist/{workflow-bundler-BzHk73PM-CRcJvu9a.mjs → workflow-bundler-BzHk73PM-AIB4-u4Y.mjs} +1 -1
  50. package/dist/{workflows-D04CqpO-.mjs → workflows-CL1jYSLR.mjs} +12 -12
  51. package/package.json +6 -6
  52. package/dist/skills.command-B8yExFCn.mjs +0 -35
  53. package/dist/sync-keystroke-agent-skills-ChUj1LnK.mjs +0 -66
  54. /package/dist/{accept.handler-BsZQqmzU.mjs → accept.handler-BPwp_UAE.mjs} +0 -0
  55. /package/dist/{build-metadata-C8Ra_Gi--CTCBRjFA.mjs → build-metadata-C8Ra_Gi--BdoyLQMl.mjs} +0 -0
  56. /package/dist/{clear-cache.handler-Bkt6GKnF.mjs → clear-cache.handler-gr5VmEYB.mjs} +0 -0
  57. /package/dist/{clear.handler-BieI9Oix.mjs → clear.handler-CtOZ4aRn.mjs} +0 -0
  58. /package/dist/{current.handler-C48q2mBd.mjs → current.handler-QZQ-l84v.mjs} +0 -0
  59. /package/dist/{deploy-D4ILrWpx.mjs → deploy-CJbVB7e2.mjs} +0 -0
  60. /package/dist/{detect-env-access-CwkOYeYM-BLtKepjx.mjs → detect-env-access-CwkOYeYM-CZIixHeR.mjs} +0 -0
  61. /package/dist/{env.handler-DK3B7MLl.mjs → env.handler-B3YDQIVE.mjs} +0 -0
  62. /package/dist/{invites.list.handler-DmeMcezN.mjs → invites.list.handler-CErgY35S.mjs} +0 -0
  63. /package/dist/{invites.resend.handler-pJTPtKHE.mjs → invites.resend.handler-DRCRIA4F.mjs} +0 -0
  64. /package/dist/{invites.revoke.handler-4NgnnfiU.mjs → invites.revoke.handler-C0FZdAR0.mjs} +0 -0
  65. /package/dist/{list.handler-C7AChEPW.mjs → list.handler-BjutlIkE.mjs} +0 -0
  66. /package/dist/{list.handler-BuX-bb2y.mjs → list.handler-Cr_DFAae.mjs} +0 -0
  67. /package/dist/{list.handler-BSyrxCma.mjs → list.handler-FlchXrKz.mjs} +0 -0
  68. /package/dist/{list.handler-U9-KuVlh.mjs → list.handler-c-8RpgB9.mjs} +0 -0
  69. /package/dist/{logs.handler-BqmZ4eLx.mjs → logs.handler-dcRq-zoc.mjs} +0 -0
  70. /package/dist/{members.add.handler-B4H8Hn6x.mjs → members.add.handler-DmYI43rZ.mjs} +0 -0
  71. /package/dist/{members.invite.handler-D8ONlt4Y.mjs → members.invite.handler-B_KVxv5m.mjs} +0 -0
  72. /package/dist/{members.list.handler-BHJTMMiA.mjs → members.list.handler-BtuuIgQS.mjs} +0 -0
  73. /package/dist/{members.remove.handler-_hKd_sFd.mjs → members.remove.handler-Lvg-CqVv.mjs} +0 -0
  74. /package/dist/{members.update.handler-CC7J0k8n.mjs → members.update.handler-D-8izeso.mjs} +0 -0
  75. /package/dist/{paused.handler-9ND-i2EN.mjs → paused.handler-ST9dCe8E.mjs} +0 -0
  76. /package/dist/{read-credential-keys-77a91T8M-COvwpok_.mjs → read-credential-keys-77a91T8M-DMmY6oDW.mjs} +0 -0
  77. /package/dist/{register.handler-CttgzybN.mjs → register.handler-BAx0IC-u.mjs} +0 -0
  78. /package/dist/{run-polling-B4KvySvp.mjs → run-polling-CwlzB5-9.mjs} +0 -0
  79. /package/dist/{switch.handler-BFBM8rSi.mjs → switch.handler-CTwhIcaQ.mjs} +0 -0
  80. /package/dist/{task-target-deploy-OyxLvh3a.mjs → task-target-deploy-gMQC8kXU.mjs} +0 -0
  81. /package/dist/{upgrade.handler-C2eZ_tg3.mjs → upgrade.handler-CXEF4ue0.mjs} +0 -0
package/README.md CHANGED
@@ -87,7 +87,7 @@ keystroke --api-key sk_... --server-url https://api.example.com workflows list
87
87
  | `keystroke projects` | List or clear locally tracked projects. |
88
88
  | `keystroke runs inspect` | Inspect workflow and agent runs. |
89
89
  | `keystroke logs` | View or clear local CLI logs. |
90
- | `keystroke skills sync` | Sync installed Keystroke agent skills into editor skill folders. |
90
+ | `keystroke skills sync` | Sync bundled Keystroke agent skills into selected agent skill folders. |
91
91
  | `keystroke upgrade` | Upgrade the installed Keystroke CLI package. |
92
92
 
93
93
  Run `keystroke <command> --help` for exact arguments and flags.
@@ -106,8 +106,18 @@ Create a new project:
106
106
 
107
107
  ```bash
108
108
  keystroke init --path ./my-automation --name my-automation
109
+ keystroke init --path ./my-automation --name my-automation --agent claude-code --agent cursor --method symlink
109
110
  ```
110
111
 
112
+ `keystroke init` always installs the bundled Keystroke skills into `.agents/skills` and writes Keystroke project guidance to `AGENTS.md`. Use repeatable `--agent <agent>` flags to provision additional agent-specific skill directories and guidance files, such as `.claude/skills` plus `CLAUDE.md` for Claude Code. Use `--agent '*'` to target all supported project agents.
113
+
114
+ Skill install methods:
115
+
116
+ - `--method symlink` links selected agent skill folders back to the canonical `.agents/skills` copy.
117
+ - `--method copy` writes independent copies for selected agent folders.
118
+
119
+ Run `keystroke skills sync` with the same `--agent` and `--method` flags to refresh skills in an existing project.
120
+
111
121
  Build locally:
112
122
 
113
123
  ```bash
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
4
- import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
4
+ import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
5
5
  import { t as OrgRoleSchema } from "./schema-_FQrHcIS.mjs";
6
6
  import { z } from "zod";
7
7
  //#region src/commands/admin/orgs.command.ts
@@ -3,11 +3,11 @@
3
3
  import { N as throwReportedCliExit, f as ANSI, n as ui, p as style, x as toErrorMessage } from "./keystroke.mjs";
4
4
  import { d as trackProject } from "./dist-BF6r1hfv.mjs";
5
5
  import { i as writeJson, n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
6
- import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
6
+ import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
7
7
  import { i as readAgentManifestsFromOutDir } from "./dist-FQYQ2FLm.mjs";
8
8
  import { t as requireWorkflowsDir } from "./resolve-project-CURYMjex.mjs";
9
9
  import { t as createSpinnerProgress } from "./spinner-progress-DfkMzwGx.mjs";
10
- import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-kNNcU-R8.mjs";
10
+ import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-C9rQQ4qU.mjs";
11
11
  import { i as resolveTypeHint } from "./schema-display-CNqiYBIb.mjs";
12
12
  import { z } from "zod";
13
13
  //#region src/commands/agents/inspect-display.ts
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
4
- import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
4
+ import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
5
5
  import { z } from "zod";
6
6
  //#region src/commands/api-keys/api-keys.command.ts
7
7
  const ApiKeysCreateOptionsSchema = JsonOptionSchema.extend({ name: z.string().optional() });
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { n as DEFAULT_CLI_WEB_URL } from "./default-urls-BS4twrsS.mjs";
4
4
  import { S as AUTH_TIMEOUT_SECONDS } from "./keystroke.mjs";
5
- import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
5
+ import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
6
6
  import { z } from "zod";
7
7
  //#region src/commands/auth/auth.command.ts
8
8
  const AuthOptionsSchema = z.object({
@@ -3,8 +3,8 @@
3
3
  import { n as readOptionalJsonSchemaKeys, t as manifestToDeclaredCredentialRequirement } from "./declared-credential-requirements-B6h4WRv4.mjs";
4
4
  import { t as AgentVersionManifestSchema } from "./agent-manifest-CZdlCTFs.mjs";
5
5
  import { i as createAgentSandboxPackage, n as AGENT_VM_PI_SKILLS_ROOT, r as AGENT_VM_TOOLS_RUNTIME_RELATIVE_PATH, t as AGENT_VM_HOST_CALL_RELATIVE_PATH } from "./agent-bundle-package-DWV6B_5q-rRTPU13L.mjs";
6
- import { t as readCredentialKeysFromSchemaObject } from "./read-credential-keys-77a91T8M-COvwpok_.mjs";
7
- import { t as bundleSandboxAgentTarget } from "./workflow-bundler-BzHk73PM-CRcJvu9a.mjs";
6
+ import { t as readCredentialKeysFromSchemaObject } from "./read-credential-keys-77a91T8M-DMmY6oDW.mjs";
7
+ import { t as bundleSandboxAgentTarget } from "./workflow-bundler-BzHk73PM-AIB4-u4Y.mjs";
8
8
  import { builtinModules } from "node:module";
9
9
  import { lstat, readFile, readdir, realpath } from "node:fs/promises";
10
10
  import path from "node:path";
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as TaskBuildManifestSchema } from "./task-BNXDZU71.mjs";
4
- import { n as bundleWorkflowTarget } from "./workflow-bundler-BzHk73PM-CRcJvu9a.mjs";
5
- import { t as buildTriggerArtifacts } from "./trigger-artifacts-RizI57RC-abdkW8-z.mjs";
4
+ import { n as bundleWorkflowTarget } from "./workflow-bundler-BzHk73PM-AIB4-u4Y.mjs";
5
+ import { t as buildTriggerArtifacts } from "./trigger-artifacts-RizI57RC-CxHwCkQ_.mjs";
6
6
  import { performance } from "node:perf_hooks";
7
7
  //#region ../../packages/workflow-builder/dist/build-tasks-GVuMLS0h.mjs
8
8
  async function buildTaskArtifact(options) {
@@ -6,8 +6,8 @@ import { a as MANIFEST_FILE_NAME, i as FLOW_FILE_NAME, r as BUNDLE_FILE_NAME, s
6
6
  import { t as runWithConcurrency } from "./concurrency-gXn9Rw8x-BI6HQNfC.mjs";
7
7
  import { n as WorkflowLoaderProtocolError, r as WorkflowMetadataLoadError, s as createLoaderProtocolFailure } from "./import-module--8x5SLum-DaUNACER.mjs";
8
8
  import { r as toRelativeFilePath } from "./normalize-path-CojS-CgQ-DFTvyA27.mjs";
9
- import { n as bundleWorkflowTarget } from "./workflow-bundler-BzHk73PM-CRcJvu9a.mjs";
10
- import { t as buildTriggerArtifacts } from "./trigger-artifacts-RizI57RC-abdkW8-z.mjs";
9
+ import { n as bundleWorkflowTarget } from "./workflow-bundler-BzHk73PM-AIB4-u4Y.mjs";
10
+ import { t as buildTriggerArtifacts } from "./trigger-artifacts-RizI57RC-CxHwCkQ_.mjs";
11
11
  import { realpathSync } from "node:fs";
12
12
  import { readFile } from "node:fs/promises";
13
13
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@
3
3
  import { k as CliExitError } from "./keystroke.mjs";
4
4
  import { d as trackProject } from "./dist-BF6r1hfv.mjs";
5
5
  import { t as requireWorkflowsDir } from "./resolve-project-CURYMjex.mjs";
6
- import { a as runWorkflowBuild, i as renderBuildSummary, n as renderBuildFailure, r as renderBuildHeader } from "./workflow-build-kNNcU-R8.mjs";
6
+ import { a as runWorkflowBuild, i as renderBuildSummary, n as renderBuildFailure, r as renderBuildHeader } from "./workflow-build-C9rQQ4qU.mjs";
7
7
  import { t as createBuildProgress } from "./build-progress-BZivcVz4.mjs";
8
8
  import { t as withErrorBoundary } from "./error-boundary-CyLcinp1.mjs";
9
9
  //#region src/commands/workflows/build.handler.ts
@@ -20,7 +20,7 @@ function applyTypedOptionsToCommand(command, schema, optionsConfig, skipKeys) {
20
20
  const config = optionsConfig[key];
21
21
  if (!config) throw new Error(`Missing option configuration for key: ${String(key)}`);
22
22
  if (config.collect) {
23
- command.option(config.flag, config.description, (value, previous) => [...previous ?? [], value], []);
23
+ command.option(config.flag, config.description, (value, previous) => [...previous ?? [], value]);
24
24
  continue;
25
25
  }
26
26
  command.option(config.flag, config.description);
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
4
- import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
4
+ import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
5
5
  import { z } from "zod";
6
6
  //#region src/commands/connect/connect.command.ts
7
7
  const ConnectOptionsSchema = JsonOptionSchema.extend({
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
4
- import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
4
+ import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
5
5
  import { i as CredentialScopeValues, r as CredentialScopeSchema } from "./schema-O9xTWad_.mjs";
6
6
  import { z } from "zod";
7
7
  //#region src/commands/credentials/list/list.command.ts
@@ -5,7 +5,7 @@ import { t as assertWorkflowProjectRoot } from "./project-config-CsBMT4TL.mjs";
5
5
  import { a as readManifestsFromOutDir } from "./dist-FQYQ2FLm.mjs";
6
6
  import { t as requireWorkflowsDir } from "./resolve-project-CURYMjex.mjs";
7
7
  import { t as createSpinnerProgress } from "./spinner-progress-DfkMzwGx.mjs";
8
- import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-kNNcU-R8.mjs";
8
+ import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-C9rQQ4qU.mjs";
9
9
  //#region src/commands/workflows/_shared/current-deployment-workflow.ts
10
10
  /**
11
11
  * Lightweight resolution: gets projectId from keystroke.config.ts and authoredWorkflowId
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
3
+ import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
4
4
  import { z } from "zod";
5
5
  //#region src/commands/deploy/deploy.command.ts
6
6
  /**
@@ -64,7 +64,7 @@ function createDeployCommand() {
64
64
  schema: DeployOptionsSchema,
65
65
  optionsConfig: DEPLOY_OPTIONS_CONFIG,
66
66
  contextMode: "auth",
67
- loadHandler: async () => (await import("./deploy.handler-zMb-BHLo.mjs")).handleDeploy
67
+ loadHandler: async () => (await import("./deploy.handler-BxxWI7nV.mjs")).handleDeploy
68
68
  });
69
69
  cmd.enablePositionalOptions();
70
70
  cmd.passThroughOptions();
@@ -6,11 +6,11 @@ import { t as assertWorkflowProjectRoot } from "./project-config-CsBMT4TL.mjs";
6
6
  import { r as requireAuthOptions, t as assertProjectConfigMatchesAuthenticatedOrg } from "./context-B1L8pZsH.mjs";
7
7
  import { i as readAgentManifestsFromOutDir, o as readWorkflowsFromDisk } from "./dist-FQYQ2FLm.mjs";
8
8
  import { t as requireWorkflowsDir } from "./resolve-project-CURYMjex.mjs";
9
- import { n as renderBuildFailure, r as renderBuildHeader } from "./workflow-build-kNNcU-R8.mjs";
9
+ import { n as renderBuildFailure, r as renderBuildHeader } from "./workflow-build-C9rQQ4qU.mjs";
10
10
  import { t as createBuildProgress } from "./build-progress-BZivcVz4.mjs";
11
11
  import { t as createDeployProgress } from "./deploy-progress-DJHph1Fz.mjs";
12
12
  import { t as withErrorBoundary } from "./error-boundary-CyLcinp1.mjs";
13
- import { t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-CUBHcdZl.mjs";
13
+ import { t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-BRUEdPrN.mjs";
14
14
  import { t as computeWorkflowDiff } from "./diff-utils-4OQTpP5s.mjs";
15
15
  import { access } from "node:fs/promises";
16
16
  import path from "node:path";
@@ -198,7 +198,7 @@ async function handleDeploy(options, ctx) {
198
198
  let outDir;
199
199
  let artifactFilter;
200
200
  try {
201
- const { runWorkflowBuild } = await import("./workflow-build-kNNcU-R8.mjs").then((n) => n.o);
201
+ const { runWorkflowBuild } = await import("./workflow-build-C9rQQ4qU.mjs").then((n) => n.o);
202
202
  const buildOutcome = await runWorkflowBuild({
203
203
  workflowsDir,
204
204
  verbose: options.verbose,
@@ -260,7 +260,7 @@ async function handleDeploy(options, ctx) {
260
260
  }
261
261
  async function handleTaskTargetDeploy(options) {
262
262
  renderBuildHeader(void 0);
263
- const buildResult = await (deployHandlerDependencies.buildTaskTargets ?? (await import("./task-target-build-Du0ObGbb.mjs")).buildTaskTargets)({
263
+ const buildResult = await (deployHandlerDependencies.buildTaskTargets ?? (await import("./task-target-build-BG6cC3bz.mjs")).buildTaskTargets)({
264
264
  projectRoot: options.workflowsDir,
265
265
  targetFiles: options.targetFiles,
266
266
  disableSourcemaps: options.options.disableSourcemaps
@@ -278,7 +278,7 @@ async function handleTaskTargetDeploy(options) {
278
278
  const progress = createDeployProgress();
279
279
  let result;
280
280
  try {
281
- result = await (deployHandlerDependencies.deployTaskTargets ?? (await import("./task-target-deploy-OyxLvh3a.mjs")).deployTaskTargets)({
281
+ result = await (deployHandlerDependencies.deployTaskTargets ?? (await import("./task-target-deploy-gMQC8kXU.mjs")).deployTaskTargets)({
282
282
  preparedTasks: buildResult.preparedTasks,
283
283
  client,
284
284
  organizationId: options.projectConfig.organizationId,
@@ -315,7 +315,7 @@ async function createFullDeployClient(ctx) {
315
315
  }
316
316
  async function createTaskDeployClient(ctx) {
317
317
  const authOptions = requireAuthOptions(ctx);
318
- return (deployHandlerDependencies.createDeployClient ?? (await import("./deploy-D4ILrWpx.mjs")).createDeployClient)(authOptions);
318
+ return (deployHandlerDependencies.createDeployClient ?? (await import("./deploy-CJbVB7e2.mjs")).createDeployClient)(authOptions);
319
319
  }
320
320
  function renderSuccessSummary(result) {
321
321
  const tasks = result.tasks || [];
@@ -4,7 +4,7 @@ import { N as throwReportedCliExit, k as CliExitError, n as ui, x as toErrorMess
4
4
  import { d as trackProject } from "./dist-BF6r1hfv.mjs";
5
5
  import { i as writeJson } from "./output-CGdYhH0p.mjs";
6
6
  import { i as requireClient, t as assertProjectConfigMatchesAuthenticatedOrg } from "./context-B1L8pZsH.mjs";
7
- import { n as resolveLocalWorkflowManifest, t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-CUBHcdZl.mjs";
7
+ import { n as resolveLocalWorkflowManifest, t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-BRUEdPrN.mjs";
8
8
  import { n as renderDiff, t as computeWorkflowDiff } from "./diff-utils-4OQTpP5s.mjs";
9
9
  //#region src/commands/workflows/diff/diff.handler.ts
10
10
  async function handleWorkflowsDiff(options, ctx) {
@@ -1,13 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
3
+ import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
4
+ import { t as SKILL_INSTALL_METHODS } from "./types-D04ah3uY.mjs";
4
5
  import { z } from "zod";
5
6
  //#region src/commands/init/init.command.ts
6
7
  const InitOptionsSchema = z.object({
7
8
  path: z.string().optional().describe("Directory to initialize (default: current directory)"),
8
9
  name: z.string().optional().describe("Project name (skips prompt; default: directory basename)"),
9
10
  description: z.string().optional().describe("Project description for the API (skips prompt when creating a new project)"),
10
- scaffold: z.boolean().default(true).describe("Scaffold project files (package.json, vitest.config.ts, etc.)")
11
+ scaffold: z.boolean().default(true).describe("Scaffold project files (package.json, vitest.config.ts, etc.)"),
12
+ agent: z.array(z.string()).optional().describe("Agent target to install Keystroke skills for. Repeat for multiple agents; '*' selects all."),
13
+ method: z.enum(SKILL_INSTALL_METHODS).optional().describe("Skill install method for agent-specific targets")
11
14
  });
12
15
  const INIT_OPTIONS_CONFIG = {
13
16
  path: {
@@ -25,6 +28,15 @@ const INIT_OPTIONS_CONFIG = {
25
28
  scaffold: {
26
29
  flag: "--no-scaffold",
27
30
  description: "Skip scaffolding project files (package.json, vitest.config.ts, etc.)"
31
+ },
32
+ agent: {
33
+ flag: "--agent <agent>",
34
+ description: "Install Keystroke skills for an agent target. Repeat for multiple agents; '*' selects all.",
35
+ collect: true
36
+ },
37
+ method: {
38
+ flag: "--method <symlink|copy>",
39
+ description: "Skill install method for agent-specific targets"
28
40
  }
29
41
  };
30
42
  function createInitCommand() {
@@ -33,7 +45,7 @@ function createInitCommand() {
33
45
  description: "Initialize a Keystroke project (creates keystroke.config.ts)",
34
46
  schema: InitOptionsSchema,
35
47
  optionsConfig: INIT_OPTIONS_CONFIG,
36
- loadHandler: async () => (await import("./init.handler-Beu-vpIu.mjs")).handleInit
48
+ loadHandler: async () => (await import("./init.handler-CdytFiFt.mjs")).handleInit
37
49
  });
38
50
  }
39
51
  //#endregion
@@ -4,13 +4,11 @@ import { k as CliExitError, n as ui, t as fetchLatestNpmPackageVersion } from ".
4
4
  import { d as trackProject } from "./dist-BF6r1hfv.mjs";
5
5
  import { a as writeProjectConfig, i as readProjectConfig, r as getProjectConfigPath } from "./project-config-CsBMT4TL.mjs";
6
6
  import { i as requireClient } from "./context-B1L8pZsH.mjs";
7
- import { t as syncKeystrokeAgentSkills } from "./sync-keystroke-agent-skills-ChUj1LnK.mjs";
7
+ import { i as UnknownSkillAgentError, n as resolveSkillInstallChoices, r as installKeystrokeAgentSkills, t as summarizeSkillInstall } from "./skill-installer-DkRJ6oLi.mjs";
8
8
  import { createRequire } from "node:module";
9
9
  import { readFileSync } from "node:fs";
10
10
  import { access, mkdir, readFile, writeFile } from "node:fs/promises";
11
- import * as path$1 from "node:path";
12
11
  import path from "node:path";
13
- import { fileURLToPath } from "node:url";
14
12
  import { cancel, isCancel, text } from "@clack/prompts";
15
13
  //#region src/lib/keystroke-scaffold-version-ranges.ts
16
14
  const WORKFLOW_CORE_PACKAGE_NAME = "@keystrokehq/core";
@@ -62,54 +60,6 @@ function readLocalConfigVersion() {
62
60
  return null;
63
61
  }
64
62
  //#endregion
65
- //#region src/commands/init/agents-md.ts
66
- const AGENTS_FILENAME = "AGENTS.md";
67
- const AGENTS_BLURB_PACKAGE_PATH = "AGENTS-blurb.md";
68
- function normalizeLineEndings(value) {
69
- return value.replace(/\r\n/g, "\n");
70
- }
71
- function normalizeBlurb(value) {
72
- return `${normalizeLineEndings(value).trim()}\n`;
73
- }
74
- function resolveMonorepoSkillsBlurbPath() {
75
- return fileURLToPath(new URL("../../../../../packages/skills/AGENTS-blurb.md", import.meta.url));
76
- }
77
- function resolveCliPackageSkillsBlurbPath() {
78
- const relativePath = import.meta.url.includes("/dist/") ? "../AGENTS-blurb.md" : "../../../AGENTS-blurb.md";
79
- return fileURLToPath(new URL(relativePath, import.meta.url));
80
- }
81
- function resolveBundledKeystrokeAgentsBlurbPath() {
82
- const require = createRequire(import.meta.url);
83
- try {
84
- const skillsPackageJsonPath = require.resolve("@keystrokehq/skills/package.json");
85
- return path$1.join(path$1.dirname(skillsPackageJsonPath), AGENTS_BLURB_PACKAGE_PATH);
86
- } catch {}
87
- try {
88
- return resolveCliPackageSkillsBlurbPath();
89
- } catch {}
90
- return resolveMonorepoSkillsBlurbPath();
91
- }
92
- async function loadKeystrokeAgentsBlurb() {
93
- try {
94
- return normalizeBlurb(await readFile(resolveBundledKeystrokeAgentsBlurbPath(), "utf-8"));
95
- } catch (error) {
96
- throw new CliExitError("Could not load the bundled Keystroke AGENTS.md blurb. Reinstall the CLI or republish @keystrokehq/cli with AGENTS-blurb.md.", { cause: error });
97
- }
98
- }
99
- async function ensureAgentsMarkdown(targetDir, blurb) {
100
- const agentsFilePath = path$1.join(targetDir, AGENTS_FILENAME);
101
- const normalizedBlurb = normalizeBlurb(blurb);
102
- try {
103
- const normalizedExisting = normalizeLineEndings(await readFile(agentsFilePath, "utf-8"));
104
- if (normalizedExisting.includes(normalizedBlurb.trim())) return "skipped";
105
- await writeFile(agentsFilePath, normalizedExisting.trim().length > 0 ? `${normalizedExisting.trimEnd()}\n\n${normalizedBlurb}` : normalizedBlurb, "utf-8");
106
- return "updated";
107
- } catch {
108
- await writeFile(agentsFilePath, normalizedBlurb, "utf-8");
109
- return "created";
110
- }
111
- }
112
- //#endregion
113
63
  //#region src/commands/init/templates/biome-config.ts
114
64
  /**
115
65
  * Template for generating biome.json for a new Keystroke project.
@@ -384,6 +334,28 @@ async function ensureScaffoldPackageJson(targetDir, projectName, workflowCoreRan
384
334
  return "created";
385
335
  }
386
336
  }
337
+ async function installAgentSkillsForInit(targetDir, options) {
338
+ try {
339
+ const choices = await resolveSkillInstallChoices({
340
+ agentSlugs: options.agent,
341
+ method: options.method
342
+ });
343
+ const result = await installKeystrokeAgentSkills({
344
+ projectDir: targetDir,
345
+ agentSlugs: choices.agentSlugs,
346
+ method: choices.method
347
+ });
348
+ if (result.ok) {
349
+ summarizeSkillInstall(result, "Installed");
350
+ return;
351
+ }
352
+ if (result.reason === "not_installed") throw new CliExitError("Could not resolve @keystrokehq/skills from the installed CLI. Reinstall the CLI, then run `keystroke skills sync`.");
353
+ throw new CliExitError(`@keystrokehq/skills is installed at ${result.packageRoot} but no skill directories with SKILL.md were found.`);
354
+ } catch (error) {
355
+ if (error instanceof UnknownSkillAgentError) throw new CliExitError(error.message, { cause: error });
356
+ throw error;
357
+ }
358
+ }
387
359
  async function handleInit(options, ctx) {
388
360
  const targetDir = path.resolve(options.path ?? process.cwd());
389
361
  const client = requireClient(ctx);
@@ -432,9 +404,7 @@ async function handleInit(options, ctx) {
432
404
  ui.hint(`Project "${projectName}" is now tracked.`);
433
405
  ui.hint(`Project ID: ${projectId}`);
434
406
  await trackProject(targetDir, { name: projectName });
435
- const agentsAction = await ensureAgentsMarkdown(targetDir, await loadKeystrokeAgentsBlurb());
436
- if (agentsAction === "created") ui.success("Created AGENTS.md with Keystroke project guidance.");
437
- else if (agentsAction === "updated") ui.success("Updated AGENTS.md with Keystroke project guidance.");
407
+ await installAgentSkillsForInit(targetDir, options);
438
408
  if (options.scaffold) {
439
409
  const [workflowCoreVersionRange, configVersionRange] = await Promise.all([workflowCoreScaffoldVersionRange(), configScaffoldVersionRange()]);
440
410
  await scaffoldProject(targetDir, projectName, workflowCoreVersionRange, configVersionRange);
@@ -450,12 +420,6 @@ async function writeIfMissing(filePath, content) {
450
420
  return true;
451
421
  }
452
422
  }
453
- async function trySyncAgentSkillsAfterScaffold(targetDir) {
454
- const syncResult = await syncKeystrokeAgentSkills(targetDir);
455
- if (syncResult.ok) ui.success(`Synced ${syncResult.copied.length} skill(s) to .cursor/skills and .claude/skills: ${syncResult.copied.join(", ")}`);
456
- else if (syncResult.reason === "not_installed") ui.hint("After install completes, run `keystroke skills sync` to copy @keystrokehq/skills for Cursor / Claude Code.");
457
- else ui.warn(`@keystrokehq/skills is installed at ${syncResult.packageRoot} but no skill directories with SKILL.md were found.`);
458
- }
459
423
  async function scaffoldProject(targetDir, projectName, workflowCoreVersionRange, configVersionRange) {
460
424
  const pkgAction = await ensureScaffoldPackageJson(targetDir, projectName, workflowCoreVersionRange, configVersionRange);
461
425
  ui.success(pkgAction === "created" ? `Created package.json (@keystrokehq/core ${workflowCoreVersionRange}, @keystrokehq/config ${configVersionRange})` : `Updated package.json (Keystroke deps -> core ${workflowCoreVersionRange}, config ${configVersionRange})`);
@@ -510,7 +474,6 @@ async function scaffoldProject(targetDir, projectName, workflowCoreVersionRange,
510
474
  if (created.length > 0) ui.success(`Scaffolded ${created.length} file(s): ${created.join(", ")}`);
511
475
  else ui.hint("Scaffold files already exist — skipped (package.json was still updated).");
512
476
  ui.hint("Run `pnpm install` to install dependencies, then `pnpm test` to run tests (or use your lockfile's package manager).");
513
- await trySyncAgentSkillsAfterScaffold(targetDir);
514
477
  }
515
478
  //#endregion
516
479
  export { handleInit };
@@ -5,7 +5,7 @@ import { d as trackProject } from "./dist-BF6r1hfv.mjs";
5
5
  import { i as writeJson } from "./output-CGdYhH0p.mjs";
6
6
  import { i as requireClient, t as assertProjectConfigMatchesAuthenticatedOrg } from "./context-B1L8pZsH.mjs";
7
7
  import { i as resolveTypeHint } from "./schema-display-CNqiYBIb.mjs";
8
- import { n as resolveLocalWorkflowManifest, r as resolveProjectContext, t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-CUBHcdZl.mjs";
8
+ import { n as resolveLocalWorkflowManifest, r as resolveProjectContext, t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-BRUEdPrN.mjs";
9
9
  import dayjs from "dayjs";
10
10
  //#region src/commands/workflows/inspect/inspect-display.ts
11
11
  function formatBuildTimestamp(iso) {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
4
- import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
4
+ import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
5
5
  import { t as ConnectionKindValues } from "./api-jkf0TTgD.mjs";
6
6
  import { z } from "zod";
7
7
  //#region src/commands/integrations/integrations.command.ts
@@ -47,20 +47,20 @@ function createIntegrationsCommand() {
47
47
  description: "List Keystroke integrations available to your organization",
48
48
  schema: IntegrationsListOptionsSchema,
49
49
  optionsConfig: INTEGRATIONS_LIST_OPTIONS_CONFIG,
50
- loadHandler: async () => (await import("./list.handler-C7AChEPW.mjs")).handleIntegrationsList,
50
+ loadHandler: async () => (await import("./list.handler-BjutlIkE.mjs")).handleIntegrationsList,
51
51
  subcommands: [createTypedCommand({
52
52
  name: "list",
53
53
  description: "List Keystroke integrations available to your organization",
54
54
  schema: IntegrationsListOptionsSchema,
55
55
  optionsConfig: INTEGRATIONS_LIST_OPTIONS_CONFIG,
56
- loadHandler: async () => (await import("./list.handler-C7AChEPW.mjs")).handleIntegrationsList
56
+ loadHandler: async () => (await import("./list.handler-BjutlIkE.mjs")).handleIntegrationsList
57
57
  }), createTypedCommand({
58
58
  name: "register",
59
59
  description: "Register a workspace provider app for future workspace-authored OAuth support",
60
60
  schema: IntegrationsRegisterOptionsSchema,
61
61
  optionsConfig: INTEGRATIONS_REGISTER_OPTIONS_CONFIG,
62
62
  handler: async (opts, ctx) => {
63
- const { handleIntegrationsRegister } = await import("./register.handler-CttgzybN.mjs");
63
+ const { handleIntegrationsRegister } = await import("./register.handler-BAx0IC-u.mjs");
64
64
  await handleIntegrationsRegister({
65
65
  integrationId: opts.integrationId,
66
66
  clientAppCredentialSetId: opts.clientApp,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
4
- import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
4
+ import { t as createTypedCommand } from "./commander-D15UZVjp.mjs";
5
5
  import { z } from "zod";
6
6
  //#region src/commands/invites/invites.command.ts
7
7
  const InvitesListOptionsSchema = JsonOptionSchema;
@@ -19,13 +19,13 @@ function createInvitesCommand() {
19
19
  description: "Manage invitations for the current user",
20
20
  schema: InvitesListOptionsSchema,
21
21
  optionsConfig: { ...JSON_OPTION_CONFIG },
22
- loadHandler: async () => (await import("./list.handler-BSyrxCma.mjs")).handleInvitesList,
22
+ loadHandler: async () => (await import("./list.handler-FlchXrKz.mjs")).handleInvitesList,
23
23
  subcommands: [createTypedCommand({
24
24
  name: "list",
25
25
  description: "List pending invites for the current user",
26
26
  schema: InvitesListOptionsSchema,
27
27
  optionsConfig: { ...JSON_OPTION_CONFIG },
28
- loadHandler: async () => (await import("./list.handler-BSyrxCma.mjs")).handleInvitesList
28
+ loadHandler: async () => (await import("./list.handler-FlchXrKz.mjs")).handleInvitesList
29
29
  }), createTypedCommand({
30
30
  name: "accept",
31
31
  description: "Accept a pending invite",
@@ -36,7 +36,7 @@ function createInvitesCommand() {
36
36
  description: "Invite ID to accept",
37
37
  key: "inviteId"
38
38
  },
39
- loadHandler: async () => (await import("./accept.handler-BsZQqmzU.mjs")).handleInvitesAccept
39
+ loadHandler: async () => (await import("./accept.handler-BPwp_UAE.mjs")).handleInvitesAccept
40
40
  })]
41
41
  });
42
42
  }
@@ -13,7 +13,7 @@ import { config } from "dotenv";
13
13
  import { z } from "zod";
14
14
  import { log } from "@clack/prompts";
15
15
  //#region package.json
16
- var version = "0.0.15";
16
+ var version = "0.0.16";
17
17
  //#endregion
18
18
  //#region src/command-registry.ts
19
19
  const ROOT_OPTIONS_WITH_VALUES$1 = new Set([
@@ -25,84 +25,84 @@ const ROOT_VERSION_FLAGS = new Set(["-V", "--version"]);
25
25
  const lazyCommandDefinitions = [
26
26
  {
27
27
  name: "agents",
28
- loadCommand: async () => (await import("./agents-CWGz8CR-.mjs")).createAgentsCommand()
28
+ loadCommand: async () => (await import("./agents-CbmvvOAx.mjs")).createAgentsCommand()
29
29
  },
30
30
  {
31
31
  name: "admin",
32
- loadCommand: async () => (await import("./admin-CXQezpQA.mjs")).createAdminCommand()
32
+ loadCommand: async () => (await import("./admin-Bb9Hx-gO.mjs")).createAdminCommand()
33
33
  },
34
34
  {
35
35
  name: "api-keys",
36
- loadCommand: async () => (await import("./api-keys-BZmUiIEr.mjs")).createApiKeysCommand()
36
+ loadCommand: async () => (await import("./api-keys-DJlyIf10.mjs")).createApiKeysCommand()
37
37
  },
38
38
  {
39
39
  name: "auth",
40
- loadCommand: async () => (await import("./auth-CGBgi6PG.mjs")).createAuthCommand()
40
+ loadCommand: async () => (await import("./auth-DpDEkJz7.mjs")).createAuthCommand()
41
41
  },
42
42
  {
43
43
  name: "connect",
44
- loadCommand: async () => (await import("./connect-CS6sqNfA.mjs")).createConnectCommand()
44
+ loadCommand: async () => (await import("./connect-DzSNDSmI.mjs")).createConnectCommand()
45
45
  },
46
46
  {
47
47
  name: "credentials",
48
- loadCommand: async () => (await import("./credentials-1CPFwx-k.mjs")).createCredentialsCommand(),
48
+ loadCommand: async () => (await import("./credentials-VidBoOd7.mjs")).createCredentialsCommand(),
49
49
  copyInheritedSettings: true
50
50
  },
51
51
  {
52
52
  name: "org",
53
- loadCommand: async () => (await import("./org-8bkIZAJ4.mjs")).createOrgCommand()
53
+ loadCommand: async () => (await import("./org-DUCts2MV.mjs")).createOrgCommand()
54
54
  },
55
55
  {
56
56
  name: "deploy",
57
- loadCommand: async () => (await import("./deploy-DwRwyVwR.mjs")).createDeployCommand()
57
+ loadCommand: async () => (await import("./deploy-eshEEiP-.mjs")).createDeployCommand()
58
58
  },
59
59
  {
60
60
  name: "init",
61
- loadCommand: async () => (await import("./init-QhRFud0x.mjs")).createInitCommand()
61
+ loadCommand: async () => (await import("./init-PTwX63_P.mjs")).createInitCommand()
62
62
  },
63
63
  {
64
64
  name: "integrations",
65
- loadCommand: async () => (await import("./integrations-6BiywCph.mjs")).createIntegrationsCommand()
65
+ loadCommand: async () => (await import("./integrations-B0Gv-L0s.mjs")).createIntegrationsCommand()
66
66
  },
67
67
  {
68
68
  name: "invites",
69
- loadCommand: async () => (await import("./invites-BlB-hKUE.mjs")).createInvitesCommand()
69
+ loadCommand: async () => (await import("./invites-Cqi7iyIN.mjs")).createInvitesCommand()
70
70
  },
71
71
  {
72
72
  name: "logs",
73
- loadCommand: async () => (await import("./logs-NI-DyeFY.mjs")).createLogsCommand()
73
+ loadCommand: async () => (await import("./logs-DUwdYZB-.mjs")).createLogsCommand()
74
74
  },
75
75
  {
76
76
  name: "listen",
77
- loadCommand: async () => (await import("./listen-Tx2SrMyo.mjs")).createListenCommand()
77
+ loadCommand: async () => (await import("./listen-rHLiCWbn.mjs")).createListenCommand()
78
78
  },
79
79
  {
80
80
  name: "projects",
81
- loadCommand: async () => (await import("./projects-B5MRnbHS.mjs")).createProjectsCommand()
81
+ loadCommand: async () => (await import("./projects-CbquwUlm.mjs")).createProjectsCommand()
82
82
  },
83
83
  {
84
84
  name: "runs",
85
- loadCommand: async () => (await import("./runs-Bs8VzL8P.mjs")).createRunsCommand()
85
+ loadCommand: async () => (await import("./runs-Bc3zjk7V.mjs")).createRunsCommand()
86
86
  },
87
87
  {
88
88
  name: "skills",
89
- loadCommand: async () => (await import("./skills.command-B8yExFCn.mjs")).createSkillsCommand()
89
+ loadCommand: async () => (await import("./skills.command-DuL4kLUi.mjs")).createSkillsCommand()
90
90
  },
91
91
  {
92
92
  name: "sync",
93
- loadCommand: async () => (await import("./sync-BZj7Dkhq.mjs")).createSyncCommand()
93
+ loadCommand: async () => (await import("./sync-Pssitj6K.mjs")).createSyncCommand()
94
94
  },
95
95
  {
96
96
  name: "test",
97
- loadCommand: async () => (await import("./test-CJ8Vx_h5.mjs")).createTestCommand()
97
+ loadCommand: async () => (await import("./test-BISghlKg.mjs")).createTestCommand()
98
98
  },
99
99
  {
100
100
  name: "upgrade",
101
- loadCommand: async () => (await import("./upgrade-CdA_Sw4F.mjs")).createUpgradeCommand()
101
+ loadCommand: async () => (await import("./upgrade-cH9I_pZq.mjs")).createUpgradeCommand()
102
102
  },
103
103
  {
104
104
  name: "workflows",
105
- loadCommand: async () => (await import("./workflows-D04CqpO-.mjs")).createWorkflowsCommand()
105
+ loadCommand: async () => (await import("./workflows-CL1jYSLR.mjs")).createWorkflowsCommand()
106
106
  }
107
107
  ];
108
108
  function selectCommandRegistration(argv, commandNames = new Set(lazyCommandDefinitions.map((definition) => definition.name))) {
@@ -5,7 +5,7 @@ import { d as trackProject } from "./dist-BF6r1hfv.mjs";
5
5
  import { i as writeJson } from "./output-CGdYhH0p.mjs";
6
6
  import { t as requireWorkflowsDir } from "./resolve-project-CURYMjex.mjs";
7
7
  import { t as createSpinnerProgress } from "./spinner-progress-DfkMzwGx.mjs";
8
- import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-kNNcU-R8.mjs";
8
+ import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-C9rQQ4qU.mjs";
9
9
  //#region src/commands/workflows/list.handler.ts
10
10
  function formatWorkflow(artifact) {
11
11
  const name = style(artifact.manifest.name, `${ANSI.bold}${ANSI.cyan}`);