@keystrokehq/cli 0.0.14 → 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 (101) hide show
  1. package/README.md +14 -4
  2. package/dist/{admin-CXQezpQA.mjs → admin-Bb9Hx-gO.mjs} +1 -1
  3. package/dist/{agents-BdzwXAI1.mjs → agents-CbmvvOAx.mjs} +6 -6
  4. package/dist/{api-Sf7A0I5T.mjs → api-jkf0TTgD.mjs} +1 -1
  5. package/dist/{api-keys-BZmUiIEr.mjs → api-keys-DJlyIf10.mjs} +1 -1
  6. package/dist/{auth-CGBgi6PG.mjs → auth-DpDEkJz7.mjs} +1 -1
  7. package/dist/{build-agents-DseUtzd4-DBQ82ErJ.mjs → build-agents-DseUtzd4-VYWtIZy9.mjs} +2 -2
  8. package/dist/{build-metadata-qebrtraZ-BL-fo8HW.mjs → build-metadata-C8Ra_Gi--BdoyLQMl.mjs} +4 -4
  9. package/dist/{build-progress-BataNqG-.mjs → build-progress-BZivcVz4.mjs} +1 -1
  10. package/dist/{build-tasks-GVuMLS0h-CWrrj8SF.mjs → build-tasks-GVuMLS0h-p08mMOyK.mjs} +2 -2
  11. package/dist/{build-workflows-Dmzay1vP-CAhb0BSk.mjs → build-workflows-CV4tBo6S-knCnBKTc.mjs} +5 -5
  12. package/dist/{build.handler-DTKBdDzF.mjs → build.handler-BNSC_zhQ.mjs} +3 -3
  13. package/dist/{commander-i-7LgOyc.mjs → commander-D15UZVjp.mjs} +1 -1
  14. package/dist/{connect-BcTkRZ10.mjs → connect-DzSNDSmI.mjs} +2 -2
  15. package/dist/{connect.handler-DilOwhlW.mjs → connect.handler-DRO05ak3.mjs} +1 -1
  16. package/dist/{credentials-BsEHWMBh.mjs → credentials-VidBoOd7.mjs} +6 -6
  17. package/dist/{current-deployment-workflow-Biw1zV7S.mjs → current-deployment-workflow-BRUEdPrN.mjs} +5 -5
  18. package/dist/{deploy-DVE7Mx_X.mjs → deploy-eshEEiP-.mjs} +2 -2
  19. package/dist/{deploy-progress-7qj5ek8b.mjs → deploy-progress-DJHph1Fz.mjs} +1 -1
  20. package/dist/{deploy.handler-B3E7uX-x.mjs → deploy.handler-BxxWI7nV.mjs} +12 -12
  21. package/dist/{diff.handler-BMNZ_3J_.mjs → diff.handler-CzrKCj7N.mjs} +1 -1
  22. package/dist/{dist-BVD3Ga_l.mjs → dist-FQYQ2FLm.mjs} +3 -3
  23. package/dist/{env.handler-BUBsjm1k.mjs → env.handler-B3YDQIVE.mjs} +3 -3
  24. package/dist/{import-module-DEI7R8Yh-L32hhSoh.mjs → import-module--8x5SLum-DaUNACER.mjs} +2 -2
  25. package/dist/{init-CxMQ2ysa.mjs → init-PTwX63_P.mjs} +15 -3
  26. package/dist/{init.handler-BPKxeGZS.mjs → init.handler-CdytFiFt.mjs} +61 -67
  27. package/dist/{inspect.handler-CJ7e6iFB.mjs → inspect.handler-umc7of-r.mjs} +2 -2
  28. package/dist/{integrations-DUlJhGUS.mjs → integrations-B0Gv-L0s.mjs} +5 -5
  29. package/dist/{invites-BlB-hKUE.mjs → invites-Cqi7iyIN.mjs} +4 -4
  30. package/dist/keystroke.mjs +21 -21
  31. package/dist/{list.handler-DhFni3rk.mjs → list.handler-D-YFoKLU.mjs} +2 -2
  32. package/dist/{list.handler-VGPaJzl-.mjs → list.handler-c-8RpgB9.mjs} +1 -1
  33. package/dist/{list.handler-K3x71Y4Z.mjs → list2.handler-T5v4EK20.mjs} +4 -4
  34. package/dist/{listen-drcHFcKq.mjs → listen-rHLiCWbn.mjs} +2 -2
  35. package/dist/{listen.handler-DjK6RlLf.mjs → listen.handler-B9T58yAj.mjs} +1 -1
  36. package/dist/{logs-NI-DyeFY.mjs → logs-DUwdYZB-.mjs} +3 -3
  37. package/dist/{logs.handler-PRYGI57p.mjs → logs.handler-DGcGN2qb.mjs} +1 -1
  38. package/dist/{metadata-layout-C6ed-9dl-DCTTsjiG.mjs → metadata-layout-Bv-B0nHj-CqlcZz_g.mjs} +1 -1
  39. package/dist/{org-8bkIZAJ4.mjs → org-DUCts2MV.mjs} +15 -15
  40. package/dist/{project-config-CJGSh2RQ.mjs → project-config-CsBMT4TL.mjs} +1 -13
  41. package/dist/{projects-Pp5ENoyh.mjs → projects-CbquwUlm.mjs} +4 -4
  42. package/dist/{requirements.handler-CZ53jJ_5.mjs → requirements.handler-D5dFi7XZ.mjs} +2 -2
  43. package/dist/{resolve-project-CI_PxRXi.mjs → resolve-project-CURYMjex.mjs} +1 -1
  44. package/dist/{run-polling-7YWCL6c-.mjs → run-polling-BWcLQvm0.mjs} +3 -3
  45. package/dist/{run-polling-BPmB5N5A.mjs → run-polling-CwlzB5-9.mjs} +1 -1
  46. package/dist/{run.handler-BNrAIXDG.mjs → run.handler-BiBDLoeH.mjs} +4 -4
  47. package/dist/{runs-Bs8VzL8P.mjs → runs-Bc3zjk7V.mjs} +1 -1
  48. package/dist/{schema-display-B0LmISCe.mjs → schema-display-CNqiYBIb.mjs} +4 -4
  49. package/dist/skill-installer-DkRJ6oLi.mjs +506 -0
  50. package/dist/{skills-sync.handler-DXF6IgEX.mjs → skills-sync.handler-C4ztv1Vu.mjs} +20 -7
  51. package/dist/skills.command-DuL4kLUi.mjs +49 -0
  52. package/dist/{skills.handler-CPKCf9ZK.mjs → skills.handler-R5KAbioE.mjs} +1 -1
  53. package/dist/{source-analysis-DTnwNwKq-BqHdBGtw.mjs → source-analysis-BBg2E_6G-BQqm16RR.mjs} +3 -3
  54. package/dist/{spinner-progress-DpL68vYK.mjs → spinner-progress-DfkMzwGx.mjs} +1 -1
  55. package/dist/spinner-worker.d.mts +3 -0
  56. package/dist/spinner-worker.mjs +203 -0
  57. package/dist/{sync-BSL1s6PR.mjs → sync-Pssitj6K.mjs} +2 -2
  58. package/dist/{sync.handler-BN9oDWVx.mjs → sync.handler-Be0U3x-n.mjs} +5 -5
  59. package/dist/{task-target-build-Du0ObGbb.mjs → task-target-build-BG6cC3bz.mjs} +3 -3
  60. package/dist/task-target-deploy-runner.mjs +5 -5
  61. package/dist/test-BISghlKg.mjs +74 -0
  62. package/dist/{try-deploy.handler-A16ahnCF.mjs → test.handler-DkizZhVu.mjs} +13 -15
  63. package/dist/{test-BIz-oBxy.mjs → tool.handler-Bu130Vcz.mjs} +8 -90
  64. package/dist/{trigger-artifacts-RizI57RC-abdkW8-z.mjs → trigger-artifacts-RizI57RC-CxHwCkQ_.mjs} +2 -2
  65. package/dist/types-D04ah3uY.mjs +6 -0
  66. package/dist/{upgrade-f97U8Rll.mjs → upgrade-cH9I_pZq.mjs} +1 -1
  67. package/dist/{upload.handler-CUtfr3hY.mjs → upload.handler-CpKuAaQ_.mjs} +3 -3
  68. package/dist/{utils-LlH3l_yT.mjs → utils-VC0Vl_pm.mjs} +2 -2
  69. package/dist/{validate.handler-CUP3SjzC.mjs → validate.handler-I8LY-UkG.mjs} +3 -3
  70. package/dist/{workflow-build-C_qkq7jk.mjs → workflow-build-C9rQQ4qU.mjs} +14 -14
  71. package/dist/{workflow-bundler-BzHk73PM-CRcJvu9a.mjs → workflow-bundler-BzHk73PM-AIB4-u4Y.mjs} +1 -1
  72. package/dist/{workflows-ixllXKLo.mjs → workflows-CL1jYSLR.mjs} +55 -17
  73. package/dist/{writer-CtvttJdP-BEJHbiLs.mjs → writer-B-SpZ0G2-olEAgSLc.mjs} +5 -5
  74. package/package.json +7 -7
  75. package/dist/options-BsIkm0Bb.mjs +0 -43
  76. package/dist/skills.command-B8yExFCn.mjs +0 -35
  77. package/dist/sync-keystroke-agent-skills-ChUj1LnK.mjs +0 -66
  78. /package/dist/{accept.handler-BsZQqmzU.mjs → accept.handler-BPwp_UAE.mjs} +0 -0
  79. /package/dist/{clear-cache.handler-Bkt6GKnF.mjs → clear-cache.handler-gr5VmEYB.mjs} +0 -0
  80. /package/dist/{clear.handler-BieI9Oix.mjs → clear.handler-CtOZ4aRn.mjs} +0 -0
  81. /package/dist/{current.handler-C48q2mBd.mjs → current.handler-QZQ-l84v.mjs} +0 -0
  82. /package/dist/{deploy-D4ILrWpx.mjs → deploy-CJbVB7e2.mjs} +0 -0
  83. /package/dist/{detect-env-access-CwkOYeYM-BLtKepjx.mjs → detect-env-access-CwkOYeYM-CZIixHeR.mjs} +0 -0
  84. /package/dist/{invites.list.handler-DmeMcezN.mjs → invites.list.handler-CErgY35S.mjs} +0 -0
  85. /package/dist/{invites.resend.handler-pJTPtKHE.mjs → invites.resend.handler-DRCRIA4F.mjs} +0 -0
  86. /package/dist/{invites.revoke.handler-4NgnnfiU.mjs → invites.revoke.handler-C0FZdAR0.mjs} +0 -0
  87. /package/dist/{layout-DaoP8bcD.mjs → layout-CXkZEsXI.mjs} +0 -0
  88. /package/dist/{list.handler-C7AChEPW.mjs → list.handler-BjutlIkE.mjs} +0 -0
  89. /package/dist/{list.handler-BuX-bb2y.mjs → list.handler-Cr_DFAae.mjs} +0 -0
  90. /package/dist/{list.handler-BSyrxCma.mjs → list.handler-FlchXrKz.mjs} +0 -0
  91. /package/dist/{logs.handler-BqmZ4eLx.mjs → logs.handler-dcRq-zoc.mjs} +0 -0
  92. /package/dist/{members.add.handler-B4H8Hn6x.mjs → members.add.handler-DmYI43rZ.mjs} +0 -0
  93. /package/dist/{members.invite.handler-D8ONlt4Y.mjs → members.invite.handler-B_KVxv5m.mjs} +0 -0
  94. /package/dist/{members.list.handler-BHJTMMiA.mjs → members.list.handler-BtuuIgQS.mjs} +0 -0
  95. /package/dist/{members.remove.handler-_hKd_sFd.mjs → members.remove.handler-Lvg-CqVv.mjs} +0 -0
  96. /package/dist/{members.update.handler-CC7J0k8n.mjs → members.update.handler-D-8izeso.mjs} +0 -0
  97. /package/dist/{read-credential-keys-77a91T8M-COvwpok_.mjs → read-credential-keys-77a91T8M-DMmY6oDW.mjs} +0 -0
  98. /package/dist/{register.handler-CttgzybN.mjs → register.handler-BAx0IC-u.mjs} +0 -0
  99. /package/dist/{schema-BjH_e4Fo.mjs → schema-O9xTWad_.mjs} +0 -0
  100. /package/dist/{switch.handler-BFBM8rSi.mjs → switch.handler-CTwhIcaQ.mjs} +0 -0
  101. /package/dist/{task-target-deploy-OyxLvh3a.mjs → task-target-deploy-gMQC8kXU.mjs} +0 -0
@@ -3,18 +3,18 @@
3
3
  import { i as __toESM, n as __exportAll } from "./chunk-CH6r78ws.mjs";
4
4
  import { d as originalConsole, f as ANSI, n as ui, p as style, u as logger, x as toErrorMessage } from "./keystroke.mjs";
5
5
  import { a as getKeystrokeTmpDir } from "./dist-BF6r1hfv.mjs";
6
- import { t as assertWorkflowProjectRoot } from "./project-config-CJGSh2RQ.mjs";
6
+ import { t as assertWorkflowProjectRoot } from "./project-config-CsBMT4TL.mjs";
7
7
  import { a as FlowGraphSchema, r as WorkflowBuildManifestSchema } from "./workflow-build-manifest-OPFqFD6f.mjs";
8
8
  import { t as AgentVersionManifestSchema } from "./agent-manifest-CZdlCTFs.mjs";
9
9
  import { r as RelativeFilePathSchema } from "./file-metadata-DaPPpiTh.mjs";
10
- import { c as createArtifactOutputFiles, l as createMetadataOutputFile, o as METADATA_ROOT_DIR_NAME, p as getWorkflowArtifactPaths, t as BUILD_DIR_NAME } from "./layout-DaoP8bcD.mjs";
11
- import { t as resolveConfiguredBuildOutputDir } from "./utils-LlH3l_yT.mjs";
10
+ import { c as createArtifactOutputFiles, l as createMetadataOutputFile, o as METADATA_ROOT_DIR_NAME, p as getWorkflowArtifactPaths, t as BUILD_DIR_NAME } from "./layout-CXkZEsXI.mjs";
11
+ import { t as resolveConfiguredBuildOutputDir } from "./utils-VC0Vl_pm.mjs";
12
12
  import { a as readAgentSandboxPackage, r as AGENT_VM_TOOLS_RUNTIME_RELATIVE_PATH } from "./agent-bundle-package-DWV6B_5q-rRTPU13L.mjs";
13
- import { a as prewarmFileContentCache, c as typedEntries, i as createFileContentCache, l as require_out, n as computeBuilderFingerprint, o as resetFileContentCache, r as computeWorkflowFingerprint, s as sha256String } from "./metadata-layout-C6ed-9dl-DCTTsjiG.mjs";
14
- import { a as getAgentArtifactPaths, c as hashWorkflowManifestForDisk, d as resolveOutputDir, i as createAgentOutputFiles, l as removeAgentArtifacts, n as BUILD_CACHE_FILE_NAME, o as hashAgentManifestForDisk, r as allOutputFilesExist, s as hashWorkflowFlowForDisk, t as AGENT_ARTIFACT_DIR_PREFIX, u as removeWorkflowArtifacts } from "./writer-CtvttJdP-BEJHbiLs.mjs";
15
- import { a as createDiscoveryFailure, c as createNamespaceStarExportDiscoveryError, d as isWorkflowLoadResult, f as loadWorkflowMetadataBatch, i as createAmbiguousExportDiscoveryError, l as isAgentLoadResult, o as createDuplicateWorkflowIdFailure, t as DuplicateWorkflowIdError, u as isTaskLoadResult } from "./import-module-DEI7R8Yh-L32hhSoh.mjs";
13
+ import { a as prewarmFileContentCache, c as typedEntries, i as createFileContentCache, l as require_out, n as computeBuilderFingerprint, o as resetFileContentCache, r as computeWorkflowFingerprint, s as sha256String } from "./metadata-layout-Bv-B0nHj-CqlcZz_g.mjs";
14
+ import { a as getAgentArtifactPaths, c as hashWorkflowManifestForDisk, d as resolveOutputDir, i as createAgentOutputFiles, l as removeAgentArtifacts, n as BUILD_CACHE_FILE_NAME, o as hashAgentManifestForDisk, r as allOutputFilesExist, s as hashWorkflowFlowForDisk, t as AGENT_ARTIFACT_DIR_PREFIX, u as removeWorkflowArtifacts } from "./writer-B-SpZ0G2-olEAgSLc.mjs";
15
+ import { a as createDiscoveryFailure, c as createNamespaceStarExportDiscoveryError, d as isWorkflowLoadResult, f as loadWorkflowMetadataBatch, i as createAmbiguousExportDiscoveryError, l as isAgentLoadResult, o as createDuplicateWorkflowIdFailure, t as DuplicateWorkflowIdError, u as isTaskLoadResult } from "./import-module--8x5SLum-DaUNACER.mjs";
16
16
  import { a as literalString, n as identifierName, o as parseSourceFile, r as isNode } from "./oxc-B3KI3rf_-DdiZWqe2.mjs";
17
- import { a as getLocalModuleSpecifier, c as removeAllMetadataArtifacts, d as resolveDefaultExportAssignment, f as resolveLocalModulePath, i as collectWorkflowImportNames, n as DISCOVERY_IGNORE, o as getVariableDeclarators, r as collectLocalWorkflowBindings, s as isExportedVariableStatement, t as DISCOVERY_GLOB, u as removeMetadataArtifacts } from "./source-analysis-DTnwNwKq-BqHdBGtw.mjs";
17
+ import { a as getLocalModuleSpecifier, c as removeAllMetadataArtifacts, d as resolveDefaultExportAssignment, f as resolveLocalModulePath, i as collectWorkflowImportNames, n as DISCOVERY_IGNORE, o as getVariableDeclarators, r as collectLocalWorkflowBindings, s as isExportedVariableStatement, t as DISCOVERY_GLOB, u as removeMetadataArtifacts } from "./source-analysis-BBg2E_6G-BQqm16RR.mjs";
18
18
  import { n as parseRelativeFilePath } from "./normalize-path-CojS-CgQ-DFTvyA27.mjs";
19
19
  import * as fs from "node:fs/promises";
20
20
  import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
@@ -70,7 +70,7 @@ function toCycleNode(node) {
70
70
  };
71
71
  }
72
72
  //#endregion
73
- //#region ../../packages/workflow-builder/dist/build-D3_BXR_1.mjs
73
+ //#region ../../packages/workflow-builder/dist/build-hHErF9f5.mjs
74
74
  var import_out = /* @__PURE__ */ __toESM(require_out(), 1);
75
75
  const DiscoveredWorkflowSchema = z.object({
76
76
  exportFilePath: z.string(),
@@ -978,7 +978,7 @@ async function buildDiscoveredWorkflows(options) {
978
978
  const failures = [...buildPlan.failures];
979
979
  const warnings = [];
980
980
  if (buildPlan.workflows.length > 0) {
981
- const { buildWorkflowArtifacts } = await import("./build-workflows-Dmzay1vP-CAhb0BSk.mjs");
981
+ const { buildWorkflowArtifacts } = await import("./build-workflows-CV4tBo6S-knCnBKTc.mjs");
982
982
  const result = await buildWorkflowArtifacts({
983
983
  entries: buildPlan.workflows,
984
984
  workflowsByKey,
@@ -993,7 +993,7 @@ async function buildDiscoveredWorkflows(options) {
993
993
  warnings.push(...result.warnings);
994
994
  }
995
995
  if (buildPlan.agents.length > 0) {
996
- const { buildAgentArtifacts } = await import("./build-agents-DseUtzd4-DBQ82ErJ.mjs");
996
+ const { buildAgentArtifacts } = await import("./build-agents-DseUtzd4-VYWtIZy9.mjs");
997
997
  const result = await buildAgentArtifacts({
998
998
  entries: buildPlan.agents,
999
999
  projectRoot: options.projectRoot
@@ -1002,7 +1002,7 @@ async function buildDiscoveredWorkflows(options) {
1002
1002
  failures.push(...result.failures);
1003
1003
  }
1004
1004
  if (buildPlan.tasks.length > 0) {
1005
- const { buildTaskArtifacts } = await import("./build-tasks-GVuMLS0h-CWrrj8SF.mjs");
1005
+ const { buildTaskArtifacts } = await import("./build-tasks-GVuMLS0h-p08mMOyK.mjs");
1006
1006
  const result = await buildTaskArtifacts({
1007
1007
  entries: buildPlan.tasks,
1008
1008
  projectRoot: options.projectRoot,
@@ -1110,7 +1110,7 @@ async function createBuildPlan(options) {
1110
1110
  const currentWorkflowIndex = workflowProgressIndex;
1111
1111
  workflowProgressIndex += 1;
1112
1112
  if (!loadResult?.ok) {
1113
- const { createWorkflowMetadataFailure } = await import("./build-workflows-Dmzay1vP-CAhb0BSk.mjs");
1113
+ const { createWorkflowMetadataFailure } = await import("./build-workflows-CV4tBo6S-knCnBKTc.mjs");
1114
1114
  plan.failures.push(createWorkflowMetadataFailure(discoveredWorkflow, loadResult?.error));
1115
1115
  continue;
1116
1116
  }
@@ -1308,7 +1308,7 @@ async function runBuild(config, initialTargetBindingKeys, metadataRebuildDecisio
1308
1308
  cacheResolvedBindingKeys,
1309
1309
  releaseBundleMemory: config.releaseBundleMemory
1310
1310
  };
1311
- const { writeBuildOutput, writeTargetedBuildOutput } = await import("./writer-CtvttJdP-BEJHbiLs.mjs").then((n) => n.f).then((n) => n.t);
1311
+ const { writeBuildOutput, writeTargetedBuildOutput } = await import("./writer-B-SpZ0G2-olEAgSLc.mjs").then((n) => n.f).then((n) => n.t);
1312
1312
  const writeResult = targetBindingKeys ? await writeTargetedBuildOutput({
1313
1313
  artifacts: finalizedScopedArtifacts,
1314
1314
  agentArtifacts,
@@ -1333,7 +1333,7 @@ async function runBuild(config, initialTargetBindingKeys, metadataRebuildDecisio
1333
1333
  elapsedMs: performance.now() - writeStartedAt,
1334
1334
  ...writeResult.skippedWriteCount !== void 0 && writeResult.skippedWriteCount > 0 ? { skippedWriteCount: writeResult.skippedWriteCount } : {}
1335
1335
  });
1336
- const { buildMetadataArtifacts } = await import("./build-metadata-qebrtraZ-BL-fo8HW.mjs");
1336
+ const { buildMetadataArtifacts } = await import("./build-metadata-C8Ra_Gi--BdoyLQMl.mjs");
1337
1337
  const metadata = await buildMetadataArtifacts({
1338
1338
  projectRoot: config.projectRoot,
1339
1339
  outputDir,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as identifierName, o as parseSourceFile, r as isNode } from "./oxc-B3KI3rf_-DdiZWqe2.mjs";
4
- import { r as formatEnvAccessError, t as createEnvAccessPlugin } from "./detect-env-access-CwkOYeYM-BLtKepjx.mjs";
4
+ import { r as formatEnvAccessError, t as createEnvAccessPlugin } from "./detect-env-access-CwkOYeYM-CZIixHeR.mjs";
5
5
  import { existsSync, readFileSync, realpathSync } from "node:fs";
6
6
  import * as path$1 from "node:path";
7
7
  import { createHash } from "node:crypto";
@@ -1,11 +1,10 @@
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 { n as SHA256HashSchema, t as JsonSchemaSchema } from "./common-BaGFkj3n.mjs";
6
6
  import { c as TriggerUploadDataSchema } from "./credential-requirements-FtBk5JVB.mjs";
7
7
  import { a as FlowGraphSchema, r as WorkflowBuildManifestSchema } from "./workflow-build-manifest-OPFqFD6f.mjs";
8
- import { n as WorkflowsRunOptionsSchema, t as RUN_OPTIONS_CONFIG } from "./options-BsIkm0Bb.mjs";
9
8
  import { z } from "zod";
10
9
  const GitProviderSchema = z.enum(["codestorage", "github"]);
11
10
  const GitTreeEntryTypeSchema = z.enum(["file", "directory"]);
@@ -321,7 +320,7 @@ function createWorkflowsBuildCommand() {
321
320
  description: "Build workflows locally",
322
321
  schema: WorkflowsBuildOptionsSchema,
323
322
  optionsConfig: BUILD_OPTIONS_CONFIG,
324
- loadHandler: async () => (await import("./build.handler-DTKBdDzF.mjs")).handleWorkflowsBuild
323
+ loadHandler: async () => (await import("./build.handler-BNSC_zhQ.mjs")).handleWorkflowsBuild
325
324
  });
326
325
  }
327
326
  //#endregion
@@ -348,7 +347,7 @@ function createWorkflowsDiffCommand() {
348
347
  description: "Authored workflow id (preferred) or workflow name",
349
348
  key: "workflow"
350
349
  },
351
- loadHandler: async () => (await import("./diff.handler-BMNZ_3J_.mjs")).handleWorkflowsDiff
350
+ loadHandler: async () => (await import("./diff.handler-CzrKCj7N.mjs")).handleWorkflowsDiff
352
351
  });
353
352
  }
354
353
  //#endregion
@@ -381,7 +380,7 @@ function createWorkflowsEnvCommand() {
381
380
  key: "workflow",
382
381
  required: false
383
382
  },
384
- loadHandler: async () => (await import("./env.handler-BUBsjm1k.mjs")).handleWorkflowsEnv
383
+ loadHandler: async () => (await import("./env.handler-B3YDQIVE.mjs")).handleWorkflowsEnv
385
384
  });
386
385
  }
387
386
  //#endregion
@@ -413,7 +412,7 @@ function createWorkflowsInspectCommand() {
413
412
  description: "Authored workflow id (preferred) or workflow name",
414
413
  key: "workflow"
415
414
  },
416
- loadHandler: async () => (await import("./inspect.handler-CJ7e6iFB.mjs")).handleWorkflowsInspect
415
+ loadHandler: async () => (await import("./inspect.handler-umc7of-r.mjs")).handleWorkflowsInspect
417
416
  });
418
417
  }
419
418
  //#endregion
@@ -509,7 +508,7 @@ function createWorkflowsLogsCommand() {
509
508
  key: "workflow",
510
509
  required: false
511
510
  },
512
- loadHandler: async () => (await import("./logs.handler-PRYGI57p.mjs")).handleWorkflowsLogs
511
+ loadHandler: async () => (await import("./logs.handler-DGcGN2qb.mjs")).handleWorkflowsLogs
513
512
  });
514
513
  }
515
514
  //#endregion
@@ -793,15 +792,54 @@ function createWorkflowsRunCommand() {
793
792
  key: "payload",
794
793
  required: false
795
794
  }],
796
- loadHandler: async () => (await import("./run.handler-BNrAIXDG.mjs")).handleWorkflowsRun
795
+ loadHandler: async () => (await import("./run.handler-BiBDLoeH.mjs")).handleWorkflowsRun
797
796
  });
798
797
  }
799
798
  //#endregion
800
- //#region src/commands/workflows/try-deploy.command.ts
801
- function createWorkflowsTryDeployCommand() {
799
+ //#region src/commands/workflows/_shared/options.ts
800
+ /**
801
+ * Options schema for `workflows test` (build, upload, and run on server).
802
+ *
803
+ * Resolution order for workflow ref: authored workflow id (preferred) then name. If multiple workflows share a
804
+ * name, all are run sequentially. Use workflow id for exact targeting.
805
+ */
806
+ const WorkflowsRunOptionsSchema = z.object({
807
+ /** Authored workflow id (preferred) or workflow name. */
808
+ workflow: z.string(),
809
+ input: z.string().optional(),
810
+ inputFile: z.string().optional(),
811
+ path: z.string().optional(),
812
+ verbose: z.boolean().default(false),
813
+ timeout: z.coerce.number().int().default(120)
814
+ });
815
+ const RUN_OPTIONS_CONFIG = {
816
+ input: {
817
+ flag: "--input <json>",
818
+ description: "Workflow input as inline JSON string"
819
+ },
820
+ inputFile: {
821
+ flag: "--input-file <path>",
822
+ description: "Path to a JSON file containing workflow input"
823
+ },
824
+ path: {
825
+ flag: "--path <dir>",
826
+ description: "Path to project root (directory containing keystroke.config.ts); auto-discovered from CWD if omitted"
827
+ },
828
+ verbose: {
829
+ flag: "--verbose",
830
+ description: "Show detailed build and execution logs"
831
+ },
832
+ timeout: {
833
+ flag: "--timeout <seconds>",
834
+ description: "Max seconds to wait for workflow completion (default: 120)"
835
+ }
836
+ };
837
+ //#endregion
838
+ //#region src/commands/workflows/test.command.ts
839
+ function createWorkflowsTestCommand() {
802
840
  return createTypedCommand({
803
- name: "try-deploy",
804
- description: "Build, upload, and run a workflow on the server",
841
+ name: "test",
842
+ description: "Build, upload, and test a workflow on the server",
805
843
  schema: WorkflowsRunOptionsSchema,
806
844
  optionsConfig: RUN_OPTIONS_CONFIG,
807
845
  argument: {
@@ -809,7 +847,7 @@ function createWorkflowsTryDeployCommand() {
809
847
  description: "Authored workflow id (preferred) or workflow name. Multiple workflows with the same name run sequentially.",
810
848
  key: "workflow"
811
849
  },
812
- loadHandler: async () => (await import("./try-deploy.handler-A16ahnCF.mjs").then((n) => n.n)).handleWorkflowsTryDeploy
850
+ loadHandler: async () => (await import("./test.handler-DkizZhVu.mjs")).handleWorkflowsTest
813
851
  });
814
852
  }
815
853
  //#endregion
@@ -847,7 +885,7 @@ function createWorkflowsValidateCommand() {
847
885
  key: "workflow",
848
886
  required: false
849
887
  },
850
- loadHandler: async () => (await import("./validate.handler-CUP3SjzC.mjs")).handleWorkflowsValidate
888
+ loadHandler: async () => (await import("./validate.handler-I8LY-UkG.mjs")).handleWorkflowsValidate
851
889
  });
852
890
  }
853
891
  //#endregion
@@ -866,18 +904,18 @@ function createWorkflowsCommand() {
866
904
  description: "Manage, run, inspect, and debug workflows",
867
905
  schema: WorkflowsOptionsSchema,
868
906
  optionsConfig: WORKFLOWS_OPTIONS_CONFIG,
869
- loadHandler: async () => (await import("./list.handler-K3x71Y4Z.mjs")).handleWorkflowsList,
907
+ loadHandler: async () => (await import("./list2.handler-T5v4EK20.mjs")).handleWorkflowsList,
870
908
  subcommands: [
871
909
  createTypedCommand({
872
910
  name: "list",
873
911
  description: "List all workflows in the project",
874
912
  schema: WorkflowsOptionsSchema,
875
913
  optionsConfig: WORKFLOWS_OPTIONS_CONFIG,
876
- loadHandler: async () => (await import("./list.handler-K3x71Y4Z.mjs")).handleWorkflowsList
914
+ loadHandler: async () => (await import("./list2.handler-T5v4EK20.mjs")).handleWorkflowsList
877
915
  }),
878
916
  createWorkflowsBuildCommand(),
917
+ createWorkflowsTestCommand(),
879
918
  createWorkflowsRunCommand(),
880
- createWorkflowsTryDeployCommand(),
881
919
  createWorkflowsInspectCommand(),
882
920
  createWorkflowsValidateCommand(),
883
921
  createWorkflowsDiffCommand(),
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { n as __exportAll } from "./chunk-CH6r78ws.mjs";
4
- import { f as getTriggersDir, n as BUILD_OUTPUT_DIR_NAME, p as getWorkflowArtifactPaths, t as BUILD_DIR_NAME } from "./layout-DaoP8bcD.mjs";
4
+ import { f as getTriggersDir, n as BUILD_OUTPUT_DIR_NAME, p as getWorkflowArtifactPaths, t as BUILD_DIR_NAME } from "./layout-CXkZEsXI.mjs";
5
5
  import { t as TriggerBuildManifestSchema } from "./trigger-manifest-PTjVYL1r.mjs";
6
6
  import { t as __exportAll$1 } from "./rolldown-runtime-twds-ZHy-CO5ir_za.mjs";
7
- import { s as sha256String } from "./metadata-layout-C6ed-9dl-DCTTsjiG.mjs";
7
+ import { s as sha256String } from "./metadata-layout-Bv-B0nHj-CqlcZz_g.mjs";
8
8
  import { t as runWithConcurrency } from "./concurrency-gXn9Rw8x-BI6HQNfC.mjs";
9
9
  import { access, mkdir, readdir, rm, stat, writeFile } from "node:fs/promises";
10
10
  import path from "node:path";
11
11
  import { createHash } from "node:crypto";
12
- //#region ../../packages/workflow-builder/dist/writer-CtvttJdP.mjs
13
- var writer_CtvttJdP_exports = /* @__PURE__ */ __exportAll({
12
+ //#region ../../packages/workflow-builder/dist/writer-B-SpZ0G2.mjs
13
+ var writer_B_SpZ0G2_exports = /* @__PURE__ */ __exportAll({
14
14
  a: () => getAgentArtifactPaths,
15
15
  d: () => allOutputFilesExist,
16
16
  f: () => hashAgentManifestForDisk,
@@ -423,4 +423,4 @@ var writer_exports = /* @__PURE__ */ __exportAll$1({
423
423
  writeTargetedBuildOutput: () => writeTargetedBuildOutput
424
424
  });
425
425
  //#endregion
426
- export { getAgentArtifactPaths as a, hashWorkflowManifestForDisk as c, resolveOutputDir as d, writer_CtvttJdP_exports as f, createAgentOutputFiles as i, removeAgentArtifacts as l, BUILD_CACHE_FILE_NAME as n, hashAgentManifestForDisk as o, allOutputFilesExist as r, hashWorkflowFlowForDisk as s, AGENT_ARTIFACT_DIR_PREFIX as t, removeWorkflowArtifacts as u };
426
+ export { getAgentArtifactPaths as a, hashWorkflowManifestForDisk as c, resolveOutputDir as d, writer_B_SpZ0G2_exports as f, createAgentOutputFiles as i, removeAgentArtifacts as l, BUILD_CACHE_FILE_NAME as n, hashAgentManifestForDisk as o, allOutputFilesExist as r, hashWorkflowFlowForDisk as s, AGENT_ARTIFACT_DIR_PREFIX as t, removeWorkflowArtifacts as u };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keystrokehq/cli",
3
- "version": "0.0.14",
3
+ "version": "0.0.16",
4
4
  "private": false,
5
5
  "description": "Command-line interface for creating, managing, and deploying Keystroke automations.",
6
6
  "type": "module",
@@ -41,17 +41,17 @@
41
41
  "vitest": "^4.1.5",
42
42
  "@keystroke/env-utils": "0.0.0",
43
43
  "@keystroke/local-memory": "0.0.0",
44
- "@keystroke/project-config": "0.0.1",
45
- "@keystroke/shared-types": "0.0.3",
46
- "@keystroke/test-utils": "0.0.2",
44
+ "@keystrokehq/config": "0.0.2",
47
45
  "@keystroke/typescript-config": "0.0.0",
46
+ "@keystroke/shared-types": "0.0.3",
48
47
  "@keystroke/utils": "0.0.0",
49
- "@keystroke/workflow-builder": "0.0.4",
48
+ "@keystroke/workflow-builder": "0.0.5",
50
49
  "@keystrokehq/core": "0.0.6",
51
50
  "@keystrokehq/testing": "0.0.2",
51
+ "@keystroke/workflow-deploy": "0.0.4",
52
52
  "@keystrokehq/workflow-build-contracts": "0.0.2",
53
- "@keystroke/workflow-deploy": "0.0.3",
54
- "@keystroke/workflow-sdk": "0.0.2"
53
+ "@keystroke/workflow-sdk": "0.0.2",
54
+ "@keystroke/test-utils": "0.0.2"
55
55
  },
56
56
  "keywords": [
57
57
  "automation",
@@ -1,43 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { z } from "zod";
4
- //#region src/commands/workflows/_shared/options.ts
5
- /**
6
- * Options schema for `workflows try-deploy` (build, upload, and run on server).
7
- *
8
- * Resolution order for workflow ref: authored workflow id (preferred) then name. If multiple workflows share a
9
- * name, all are run sequentially. Use workflow id for exact targeting.
10
- */
11
- const WorkflowsRunOptionsSchema = z.object({
12
- /** Authored workflow id (preferred) or workflow name. */
13
- workflow: z.string(),
14
- input: z.string().optional(),
15
- inputFile: z.string().optional(),
16
- path: z.string().optional(),
17
- verbose: z.boolean().default(false),
18
- timeout: z.coerce.number().int().default(120)
19
- });
20
- const RUN_OPTIONS_CONFIG = {
21
- input: {
22
- flag: "--input <json>",
23
- description: "Workflow input as inline JSON string"
24
- },
25
- inputFile: {
26
- flag: "--input-file <path>",
27
- description: "Path to a JSON file containing workflow input"
28
- },
29
- path: {
30
- flag: "--path <dir>",
31
- description: "Path to project root (directory containing keystroke.config.ts); auto-discovered from CWD if omitted"
32
- },
33
- verbose: {
34
- flag: "--verbose",
35
- description: "Show detailed build and execution logs"
36
- },
37
- timeout: {
38
- flag: "--timeout <seconds>",
39
- description: "Max seconds to wait for workflow completion (default: 120)"
40
- }
41
- };
42
- //#endregion
43
- export { WorkflowsRunOptionsSchema as n, RUN_OPTIONS_CONFIG as t };
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.mjs";
4
- import { t as createTypedCommand } from "./commander-i-7LgOyc.mjs";
5
- import { z } from "zod";
6
- //#region src/commands/skills/skills.command.ts
7
- const SkillsCommandOptionsSchema = JsonOptionSchema.extend({ path: z.string().optional().describe("Project root (default: current directory)") });
8
- const SKILLS_OPTIONS_CONFIG = {
9
- ...JSON_OPTION_CONFIG,
10
- path: {
11
- flag: "--path <dir>",
12
- description: "Project root (directory containing package.json; default: cwd)"
13
- }
14
- };
15
- function createSkillsCommand() {
16
- const cmd = createTypedCommand({
17
- name: "skills",
18
- description: "Sync Keystroke agent skills (SKILL.md) from @keystrokehq/skills",
19
- schema: SkillsCommandOptionsSchema,
20
- optionsConfig: SKILLS_OPTIONS_CONFIG,
21
- loadHandler: async () => (await import("./skills.handler-CPKCf9ZK.mjs")).handleSkillsParent,
22
- subcommands: [createTypedCommand({
23
- name: "sync",
24
- description: "Copy installed @keystrokehq/skills into .cursor/skills and .claude/skills",
25
- schema: SkillsCommandOptionsSchema,
26
- optionsConfig: SKILLS_OPTIONS_CONFIG,
27
- loadHandler: async () => (await import("./skills-sync.handler-DXF6IgEX.mjs")).handleSkillsSync
28
- })]
29
- });
30
- cmd.enablePositionalOptions();
31
- cmd.passThroughOptions();
32
- return cmd;
33
- }
34
- //#endregion
35
- export { createSkillsCommand };
@@ -1,66 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { createRequire } from "node:module";
4
- import { access, cp, mkdir, readdir } from "node:fs/promises";
5
- import path from "node:path";
6
- //#region src/lib/sync-keystroke-agent-skills.ts
7
- /**
8
- * Resolve the `@keystrokehq/skills` package root from the CLI's own node_modules.
9
- * Skills are distributed with the CLI release, so no npm install is needed.
10
- */
11
- async function resolveKeystrokeSkillsPackageRoot() {
12
- try {
13
- const require = createRequire(import.meta.url);
14
- return path.dirname(require.resolve("@keystrokehq/skills/package.json"));
15
- } catch {
16
- return null;
17
- }
18
- }
19
- async function listKeystrokeSkillDirectoryNames(skillsPackageRoot) {
20
- const entries = await readdir(skillsPackageRoot, { withFileTypes: true });
21
- const names = [];
22
- for (const e of entries) {
23
- if (!e.isDirectory()) continue;
24
- if (e.name.startsWith(".")) continue;
25
- try {
26
- await access(path.join(skillsPackageRoot, e.name, "SKILL.md"));
27
- names.push(e.name);
28
- } catch {}
29
- }
30
- return names.sort();
31
- }
32
- /**
33
- * Copy each skill directory from the resolved `@keystrokehq/skills` package into
34
- * `.cursor/skills` and `.claude/skills` under `projectDir`.
35
- */
36
- async function syncKeystrokeAgentSkills(projectDir) {
37
- const packageRoot = await resolveKeystrokeSkillsPackageRoot();
38
- if (!packageRoot) return {
39
- ok: false,
40
- reason: "not_installed"
41
- };
42
- const names = await listKeystrokeSkillDirectoryNames(packageRoot);
43
- if (names.length === 0) return {
44
- ok: false,
45
- reason: "no_skills_found",
46
- packageRoot
47
- };
48
- const root = path.resolve(projectDir);
49
- for (const name of names) {
50
- const src = path.join(packageRoot, name);
51
- for (const rel of [".cursor/skills", ".claude/skills"]) {
52
- const dest = path.join(root, rel, name);
53
- await mkdir(path.dirname(dest), { recursive: true });
54
- await cp(src, dest, {
55
- recursive: true,
56
- force: true
57
- });
58
- }
59
- }
60
- return {
61
- ok: true,
62
- copied: names
63
- };
64
- }
65
- //#endregion
66
- export { syncKeystrokeAgentSkills as t };