@keystrokehq/cli 0.0.15 → 0.0.17

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-CWFJdKNs.mjs} +15 -3
  18. package/dist/{init.handler-Beu-vpIu.mjs → init.handler-BZSoM76V.mjs} +27 -62
  19. package/dist/{inspect.handler-ULT2jiVU.mjs → inspect.handler-umc7of-r.mjs} +1 -1
  20. package/dist/{integrations-6BiywCph.mjs → integrations-DKtl_aES.mjs} +10 -5
  21. package/dist/{invites-BlB-hKUE.mjs → invites-Cqi7iyIN.mjs} +4 -4
  22. package/dist/keystroke.mjs +21 -21
  23. package/dist/{list.handler-C7AChEPW.mjs → list.handler-DYdNWjgk.mjs} +55 -9
  24. package/dist/{list2.handler-L3BKR5ok.mjs → list2.handler-T5v4EK20.mjs} +1 -1
  25. package/dist/{listen-Tx2SrMyo.mjs → listen-rHLiCWbn.mjs} +2 -2
  26. package/dist/{listen.handler-C7AqsKLf.mjs → listen.handler-B9T58yAj.mjs} +1 -1
  27. package/dist/{logs-NI-DyeFY.mjs → logs-DUwdYZB-.mjs} +3 -3
  28. package/dist/{logs.handler-BGJU1p3H.mjs → logs.handler-DGcGN2qb.mjs} +1 -1
  29. package/dist/{org-8bkIZAJ4.mjs → org-DUCts2MV.mjs} +15 -15
  30. package/dist/{projects-B5MRnbHS.mjs → projects-CbquwUlm.mjs} +4 -4
  31. package/dist/{run-polling-BwyyKDwg.mjs → run-polling-BWcLQvm0.mjs} +1 -1
  32. package/dist/{run.handler-TJNyF_p_.mjs → run.handler-BiBDLoeH.mjs} +2 -2
  33. package/dist/{runs-Bs8VzL8P.mjs → runs-Bc3zjk7V.mjs} +1 -1
  34. package/dist/skill-installer-DkRJ6oLi.mjs +506 -0
  35. package/dist/{skills-sync.handler-DXF6IgEX.mjs → skills-sync.handler-C4ztv1Vu.mjs} +20 -7
  36. package/dist/skills.command-DuL4kLUi.mjs +49 -0
  37. package/dist/{skills.handler-CPKCf9ZK.mjs → skills.handler-R5KAbioE.mjs} +1 -1
  38. package/dist/{sync-BZj7Dkhq.mjs → sync-Pssitj6K.mjs} +2 -2
  39. package/dist/{sync.handler-Kk4R2lJ_.mjs → sync.handler-Be0U3x-n.mjs} +1 -1
  40. package/dist/{task-target-build-Du0ObGbb.mjs → task-target-build-BG6cC3bz.mjs} +3 -3
  41. package/dist/task-target-deploy-runner.mjs +4 -4
  42. package/dist/{test-CJ8Vx_h5.mjs → test-CKBpp1gg.mjs} +2 -2
  43. package/dist/{test.handler-BTn4NFmU.mjs → test.handler-DkizZhVu.mjs} +2 -2
  44. package/dist/{tool.handler-CuxoCstV.mjs → tool.handler--IzRGelu.mjs} +84 -84
  45. package/dist/{trigger-artifacts-RizI57RC-abdkW8-z.mjs → trigger-artifacts-RizI57RC-CxHwCkQ_.mjs} +2 -2
  46. package/dist/types-D04ah3uY.mjs +6 -0
  47. package/dist/{upgrade-CdA_Sw4F.mjs → upgrade-cH9I_pZq.mjs} +2 -2
  48. package/dist/{validate.handler-COJ53qWJ.mjs → validate.handler-I8LY-UkG.mjs} +1 -1
  49. package/dist/{workflow-build-kNNcU-R8.mjs → workflow-build-C9rQQ4qU.mjs} +5 -5
  50. package/dist/{workflow-bundler-BzHk73PM-CRcJvu9a.mjs → workflow-bundler-BzHk73PM-AIB4-u4Y.mjs} +1 -1
  51. package/dist/{workflows-D04CqpO-.mjs → workflows-CL1jYSLR.mjs} +12 -12
  52. package/package.json +6 -6
  53. package/dist/skills.command-B8yExFCn.mjs +0 -35
  54. package/dist/sync-keystroke-agent-skills-ChUj1LnK.mjs +0 -66
  55. /package/dist/{accept.handler-BsZQqmzU.mjs → accept.handler-BPwp_UAE.mjs} +0 -0
  56. /package/dist/{build-metadata-C8Ra_Gi--CTCBRjFA.mjs → build-metadata-C8Ra_Gi--BdoyLQMl.mjs} +0 -0
  57. /package/dist/{clear-cache.handler-Bkt6GKnF.mjs → clear-cache.handler-gr5VmEYB.mjs} +0 -0
  58. /package/dist/{clear.handler-BieI9Oix.mjs → clear.handler-CtOZ4aRn.mjs} +0 -0
  59. /package/dist/{current.handler-C48q2mBd.mjs → current.handler-QZQ-l84v.mjs} +0 -0
  60. /package/dist/{deploy-D4ILrWpx.mjs → deploy-CJbVB7e2.mjs} +0 -0
  61. /package/dist/{detect-env-access-CwkOYeYM-BLtKepjx.mjs → detect-env-access-CwkOYeYM-CZIixHeR.mjs} +0 -0
  62. /package/dist/{env.handler-DK3B7MLl.mjs → env.handler-B3YDQIVE.mjs} +0 -0
  63. /package/dist/{invites.list.handler-DmeMcezN.mjs → invites.list.handler-CErgY35S.mjs} +0 -0
  64. /package/dist/{invites.resend.handler-pJTPtKHE.mjs → invites.resend.handler-DRCRIA4F.mjs} +0 -0
  65. /package/dist/{invites.revoke.handler-4NgnnfiU.mjs → invites.revoke.handler-C0FZdAR0.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
@@ -116,7 +116,7 @@ function restartStage(options, projectRoot, stage) {
116
116
  }
117
117
  async function runBuildPhase(options, projectRoot) {
118
118
  const projectConfig = await assertWorkflowProjectRoot(projectRoot);
119
- const { buildTaskTargetEntries } = await import("./task-target-build-Du0ObGbb.mjs");
119
+ const { buildTaskTargetEntries } = await import("./task-target-build-BG6cC3bz.mjs");
120
120
  await writeBuildDescriptor(projectRoot, {
121
121
  projectRoot,
122
122
  projectConfig,
@@ -129,7 +129,7 @@ async function runBuildPhase(options, projectRoot) {
129
129
  }
130
130
  async function runPreparePhase(projectRoot) {
131
131
  const buildDescriptor = await readBuildDescriptor(projectRoot);
132
- const { prepareTaskTargetBuiltTasks } = await import("./task-target-build-Du0ObGbb.mjs");
132
+ const { prepareTaskTargetBuiltTasks } = await import("./task-target-build-BG6cC3bz.mjs");
133
133
  const prepareResult = await prepareTaskTargetBuiltTasks({
134
134
  builtTasks: buildDescriptor.builtTasks,
135
135
  projectRoot
@@ -158,11 +158,11 @@ async function resolveDeployAuthOptions(options) {
158
158
  }
159
159
  async function runDeployPhase(options, projectRoot) {
160
160
  const descriptor = await readDescriptor(projectRoot);
161
- const { createDeployClient } = await import("./deploy-D4ILrWpx.mjs");
161
+ const { createDeployClient } = await import("./deploy-CJbVB7e2.mjs");
162
162
  const client = createDeployClient(await resolveDeployAuthOptions(options));
163
163
  const auth = await client.public.auth.validate();
164
164
  if (auth.organizationId !== descriptor.projectConfig.organizationId) throw new Error(`Project organization mismatch: config=${descriptor.projectConfig.organizationId} auth=${auth.organizationId}`);
165
- const { deployTaskTargets } = await import("./task-target-deploy-OyxLvh3a.mjs");
165
+ const { deployTaskTargets } = await import("./task-target-deploy-gMQC8kXU.mjs");
166
166
  const result = await deployTaskTargets({
167
167
  preparedTasks: descriptor.preparedTasks,
168
168
  client,
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { n as ui } from "./keystroke.mjs";
4
4
  import { n as JsonOptionSchema, t as JSON_OPTION_CONFIG } from "./output-CGdYhH0p.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/test/test.command.ts
8
8
  const TestOptionsSchema = JsonOptionSchema;
@@ -63,7 +63,7 @@ function createTestCommand() {
63
63
  description: "Agent tool name from the built manifest",
64
64
  key: "toolName"
65
65
  },
66
- loadHandler: async () => (await import("./tool.handler-CuxoCstV.mjs")).handleTestTool
66
+ loadHandler: async () => (await import("./tool.handler--IzRGelu.mjs")).handleTestTool
67
67
  })]
68
68
  });
69
69
  cmd.enablePositionalOptions();
@@ -6,11 +6,11 @@ import { t as assertWorkflowProjectRoot } from "./project-config-CsBMT4TL.mjs";
6
6
  import { i as requireClient, t as assertProjectConfigMatchesAuthenticatedOrg } from "./context-B1L8pZsH.mjs";
7
7
  import { o as readWorkflowsFromDisk, s as uploadTestBundle } from "./dist-FQYQ2FLm.mjs";
8
8
  import { t as requireWorkflowsDir } from "./resolve-project-CURYMjex.mjs";
9
- import { a as runWorkflowBuild, t as WorkflowNotFoundError } from "./workflow-build-kNNcU-R8.mjs";
9
+ import { a as runWorkflowBuild, t as WorkflowNotFoundError } from "./workflow-build-C9rQQ4qU.mjs";
10
10
  import { r as isUnknownSchema } from "./schema-display-CNqiYBIb.mjs";
11
11
  import { t as createBuildProgress } from "./build-progress-BZivcVz4.mjs";
12
12
  import { t as withErrorBoundary } from "./error-boundary-CyLcinp1.mjs";
13
- import { a as tryReadExistingInputSchema, n as resolveInput, o as validateInputOrExit, t as pollForCompletion } from "./run-polling-BwyyKDwg.mjs";
13
+ import { a as tryReadExistingInputSchema, n as resolveInput, o as validateInputOrExit, t as pollForCompletion } from "./run-polling-BWcLQvm0.mjs";
14
14
  //#region src/lib/format.ts
15
15
  function formatBytes(bytes) {
16
16
  if (bytes < 1024) return `${bytes} B`;
@@ -7,13 +7,94 @@ import { i as writeJson } from "./output-CGdYhH0p.mjs";
7
7
  import { i as requireClient, t as assertProjectConfigMatchesAuthenticatedOrg } from "./context-B1L8pZsH.mjs";
8
8
  import { a as readManifestsFromOutDir } from "./dist-FQYQ2FLm.mjs";
9
9
  import { t as requireWorkflowsDir } from "./resolve-project-CURYMjex.mjs";
10
- import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-kNNcU-R8.mjs";
11
- import { t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-CUBHcdZl.mjs";
12
- import { n as resolveInput, o as validateInputOrExit, t as pollForCompletion } from "./run-polling-BwyyKDwg.mjs";
10
+ import { a as runWorkflowBuild, n as renderBuildFailure } from "./workflow-build-C9rQQ4qU.mjs";
11
+ import { t as lookupCurrentDeploymentWorkflow } from "./current-deployment-workflow-BRUEdPrN.mjs";
12
+ import { n as resolveInput, o as validateInputOrExit, t as pollForCompletion } from "./run-polling-BWcLQvm0.mjs";
13
13
  import { mkdtemp, rm, writeFile } from "node:fs/promises";
14
14
  import { tmpdir } from "node:os";
15
15
  import path from "node:path";
16
16
  import { pathToFileURL } from "node:url";
17
+ //#region ../../packages/testing/src/shared/create-mock-hook.ts
18
+ /** Creates a Hook that resolves immediately when awaited. */
19
+ function createMockHook() {
20
+ const resolved = Promise.resolve(void 0);
21
+ return {
22
+ then: (onfulfilled, onrejected) => resolved.then(onfulfilled, onrejected),
23
+ token: Promise.resolve("mock-token"),
24
+ resumeUrl: Promise.resolve("http://mock/resume"),
25
+ cancelUrl: Promise.resolve("http://mock/cancel"),
26
+ approvalPageUrl: Promise.resolve("http://mock/approve")
27
+ };
28
+ }
29
+ //#endregion
30
+ //#region ../../packages/testing/src/test-runtime/helpers/create-test-workflow-context.ts
31
+ function createTestWorkflowContext(options = {}) {
32
+ return {
33
+ createHook: options.createHook ?? ((_name) => createMockHook()),
34
+ stepContext: options.stepContext,
35
+ wait: options.wait ?? (async () => {}),
36
+ hasCredentialSet: options.hasCredentialSet ?? (() => false),
37
+ workflowGlobals: options.workflowGlobals,
38
+ workflowId: options.workflowId ?? "test-workflow-run"
39
+ };
40
+ }
41
+ //#endregion
42
+ //#region ../../packages/core/dist/chunks/execution-scope-BCDb3CU7.mjs
43
+ const SCOPE_STACK_KEY = "__ks_execution_scope_stack__";
44
+ function getScopeStack() {
45
+ const g = globalThis;
46
+ if (!g[SCOPE_STACK_KEY]) g[SCOPE_STACK_KEY] = [];
47
+ return g[SCOPE_STACK_KEY];
48
+ }
49
+ function getCurrentScope() {
50
+ const stack = getScopeStack();
51
+ return stack[stack.length - 1] ?? getDefaultScope();
52
+ }
53
+ const DEFAULT_SCOPE_KEY = "__ks_execution_scope_default__";
54
+ function getDefaultScope() {
55
+ const g = globalThis;
56
+ if (!g[DEFAULT_SCOPE_KEY]) g[DEFAULT_SCOPE_KEY] = { stepContextProviders: [] };
57
+ return g[DEFAULT_SCOPE_KEY];
58
+ }
59
+ function setExecutionScopeWorkflowRuntime(provider) {
60
+ const scope = getCurrentScope();
61
+ scope.workflowRuntimeProvider = provider;
62
+ }
63
+ function pushExecutionScopeStepContext(provider) {
64
+ const scope = getCurrentScope();
65
+ scope.stepContextProviders = [...scope.stepContextProviders, provider];
66
+ }
67
+ function clearExecutionScopeStepContexts() {
68
+ const scope = getCurrentScope();
69
+ scope.stepContextProviders = [];
70
+ }
71
+ function setExecutionScopeStepCredentialResolver(resolver) {
72
+ const scope = getCurrentScope();
73
+ scope.stepCredentialResolver = resolver;
74
+ }
75
+ //#endregion
76
+ //#region ../../packages/core/dist/chunks/credential-resolver-registry-BRH30wCz.mjs
77
+ function registerOperationContext(registry) {
78
+ pushExecutionScopeStepContext(registry.getOperationContext);
79
+ }
80
+ function clearOperationContext() {
81
+ clearExecutionScopeStepContexts();
82
+ }
83
+ function registerOperationCredentialResolver(resolver) {
84
+ setExecutionScopeStepCredentialResolver(resolver.resolveOperationCredentials);
85
+ }
86
+ function clearOperationCredentialResolver() {
87
+ setExecutionScopeStepCredentialResolver(void 0);
88
+ }
89
+ //#endregion
90
+ //#region ../../packages/core/dist/chunks/context-registry-DqNWcTgK.mjs
91
+ function registerRuntime(registry) {
92
+ setExecutionScopeWorkflowRuntime(registry.getRuntime);
93
+ }
94
+ function clearRuntime() {
95
+ setExecutionScopeWorkflowRuntime(void 0);
96
+ }
97
+ //#endregion
17
98
  //#region ../../packages/testing/src/test-runtime/credentials/env-resolver.ts
18
99
  /**
19
100
  * Computes the env var name for a credential key.
@@ -169,87 +250,6 @@ async function createTestCredentialResolver(options, _runtimeOptions = {}) {
169
250
  //#region ../../packages/testing/src/test-runtime/credentials/options.ts
170
251
  const DEFAULT_TEST_CREDENTIAL_MODE = "auto";
171
252
  //#endregion
172
- //#region ../../packages/testing/src/shared/create-mock-hook.ts
173
- /** Creates a Hook that resolves immediately when awaited. */
174
- function createMockHook() {
175
- const resolved = Promise.resolve(void 0);
176
- return {
177
- then: (onfulfilled, onrejected) => resolved.then(onfulfilled, onrejected),
178
- token: Promise.resolve("mock-token"),
179
- resumeUrl: Promise.resolve("http://mock/resume"),
180
- cancelUrl: Promise.resolve("http://mock/cancel"),
181
- approvalPageUrl: Promise.resolve("http://mock/approve")
182
- };
183
- }
184
- //#endregion
185
- //#region ../../packages/testing/src/test-runtime/helpers/create-test-workflow-context.ts
186
- function createTestWorkflowContext(options = {}) {
187
- return {
188
- createHook: options.createHook ?? ((_name) => createMockHook()),
189
- stepContext: options.stepContext,
190
- wait: options.wait ?? (async () => {}),
191
- hasCredentialSet: options.hasCredentialSet ?? (() => false),
192
- workflowGlobals: options.workflowGlobals,
193
- workflowId: options.workflowId ?? "test-workflow-run"
194
- };
195
- }
196
- //#endregion
197
- //#region ../../packages/core/dist/chunks/execution-scope-BCDb3CU7.mjs
198
- const SCOPE_STACK_KEY = "__ks_execution_scope_stack__";
199
- function getScopeStack() {
200
- const g = globalThis;
201
- if (!g[SCOPE_STACK_KEY]) g[SCOPE_STACK_KEY] = [];
202
- return g[SCOPE_STACK_KEY];
203
- }
204
- function getCurrentScope() {
205
- const stack = getScopeStack();
206
- return stack[stack.length - 1] ?? getDefaultScope();
207
- }
208
- const DEFAULT_SCOPE_KEY = "__ks_execution_scope_default__";
209
- function getDefaultScope() {
210
- const g = globalThis;
211
- if (!g[DEFAULT_SCOPE_KEY]) g[DEFAULT_SCOPE_KEY] = { stepContextProviders: [] };
212
- return g[DEFAULT_SCOPE_KEY];
213
- }
214
- function setExecutionScopeWorkflowRuntime(provider) {
215
- const scope = getCurrentScope();
216
- scope.workflowRuntimeProvider = provider;
217
- }
218
- function pushExecutionScopeStepContext(provider) {
219
- const scope = getCurrentScope();
220
- scope.stepContextProviders = [...scope.stepContextProviders, provider];
221
- }
222
- function clearExecutionScopeStepContexts() {
223
- const scope = getCurrentScope();
224
- scope.stepContextProviders = [];
225
- }
226
- function setExecutionScopeStepCredentialResolver(resolver) {
227
- const scope = getCurrentScope();
228
- scope.stepCredentialResolver = resolver;
229
- }
230
- //#endregion
231
- //#region ../../packages/core/dist/chunks/credential-resolver-registry-BRH30wCz.mjs
232
- function registerOperationContext(registry) {
233
- pushExecutionScopeStepContext(registry.getOperationContext);
234
- }
235
- function clearOperationContext() {
236
- clearExecutionScopeStepContexts();
237
- }
238
- function registerOperationCredentialResolver(resolver) {
239
- setExecutionScopeStepCredentialResolver(resolver.resolveOperationCredentials);
240
- }
241
- function clearOperationCredentialResolver() {
242
- setExecutionScopeStepCredentialResolver(void 0);
243
- }
244
- //#endregion
245
- //#region ../../packages/core/dist/chunks/context-registry-DqNWcTgK.mjs
246
- function registerRuntime(registry) {
247
- setExecutionScopeWorkflowRuntime(registry.getRuntime);
248
- }
249
- function clearRuntime() {
250
- setExecutionScopeWorkflowRuntime(void 0);
251
- }
252
- //#endregion
253
253
  //#region ../../packages/testing/src/test-runtime/runtime/create-keystroke-test-runtime.ts
254
254
  async function createKeystrokeTestRuntime(options = {}) {
255
255
  clearOperationCredentialResolver();
@@ -2,8 +2,8 @@
2
2
 
3
3
  import { n as readOptionalJsonSchemaKeys } from "./declared-credential-requirements-B6h4WRv4.mjs";
4
4
  import { t as __exportAll } from "./rolldown-runtime-twds-ZHy-CO5ir_za.mjs";
5
- import { t as readCredentialKeysFromSchemaObject } from "./read-credential-keys-77a91T8M-COvwpok_.mjs";
6
- import { r as formatEnvAccessError, t as createEnvAccessPlugin } from "./detect-env-access-CwkOYeYM-BLtKepjx.mjs";
5
+ import { t as readCredentialKeysFromSchemaObject } from "./read-credential-keys-77a91T8M-DMmY6oDW.mjs";
6
+ import { r as formatEnvAccessError, t as createEnvAccessPlugin } from "./detect-env-access-CwkOYeYM-CZIixHeR.mjs";
7
7
  import { createHash } from "node:crypto";
8
8
  import { rolldown } from "rolldown";
9
9
  //#region ../../packages/workflow-builder/dist/trigger-artifacts-RizI57RC.mjs
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+
3
+ //#region src/lib/skill-installer/types.ts
4
+ const SKILL_INSTALL_METHODS = ["symlink", "copy"];
5
+ //#endregion
6
+ export { SKILL_INSTALL_METHODS as t };
@@ -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/upgrade/upgrade.command.ts
6
6
  const PackageManagerSchema = z.enum([
@@ -34,7 +34,7 @@ function createUpgradeCommand() {
34
34
  description: "Upgrade the Keystroke CLI to the latest published version",
35
35
  schema: UpgradeOptionsSchema,
36
36
  optionsConfig: UPGRADE_OPTIONS_CONFIG,
37
- loadHandler: async () => (await import("./upgrade.handler-C2eZ_tg3.mjs")).handleUpgrade
37
+ loadHandler: async () => (await import("./upgrade.handler-CXEF4ue0.mjs")).handleUpgrade
38
38
  });
39
39
  }
40
40
  //#endregion
@@ -4,7 +4,7 @@ import { N as throwReportedCliExit, n as ui, x as toErrorMessage } from "./keyst
4
4
  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
- import { s as build, t as WorkflowNotFoundError } from "./workflow-build-kNNcU-R8.mjs";
7
+ import { s as build, t as WorkflowNotFoundError } from "./workflow-build-C9rQQ4qU.mjs";
8
8
  import { t as createBuildProgress } from "./build-progress-BZivcVz4.mjs";
9
9
  import { mkdtemp, rm } from "node:fs/promises";
10
10
  import * as os from "node:os";
@@ -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-CV4tBo6S-B4SPp86e.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-CV4tBo6S-B4SPp86e.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
  }
@@ -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-C8Ra_Gi--CTCBRjFA.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,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 { 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";
@@ -320,7 +320,7 @@ function createWorkflowsBuildCommand() {
320
320
  description: "Build workflows locally",
321
321
  schema: WorkflowsBuildOptionsSchema,
322
322
  optionsConfig: BUILD_OPTIONS_CONFIG,
323
- loadHandler: async () => (await import("./build.handler-DqnngAkl.mjs")).handleWorkflowsBuild
323
+ loadHandler: async () => (await import("./build.handler-BNSC_zhQ.mjs")).handleWorkflowsBuild
324
324
  });
325
325
  }
326
326
  //#endregion
@@ -347,7 +347,7 @@ function createWorkflowsDiffCommand() {
347
347
  description: "Authored workflow id (preferred) or workflow name",
348
348
  key: "workflow"
349
349
  },
350
- loadHandler: async () => (await import("./diff.handler-C-XqswH5.mjs")).handleWorkflowsDiff
350
+ loadHandler: async () => (await import("./diff.handler-CzrKCj7N.mjs")).handleWorkflowsDiff
351
351
  });
352
352
  }
353
353
  //#endregion
@@ -380,7 +380,7 @@ function createWorkflowsEnvCommand() {
380
380
  key: "workflow",
381
381
  required: false
382
382
  },
383
- loadHandler: async () => (await import("./env.handler-DK3B7MLl.mjs")).handleWorkflowsEnv
383
+ loadHandler: async () => (await import("./env.handler-B3YDQIVE.mjs")).handleWorkflowsEnv
384
384
  });
385
385
  }
386
386
  //#endregion
@@ -412,7 +412,7 @@ function createWorkflowsInspectCommand() {
412
412
  description: "Authored workflow id (preferred) or workflow name",
413
413
  key: "workflow"
414
414
  },
415
- loadHandler: async () => (await import("./inspect.handler-ULT2jiVU.mjs")).handleWorkflowsInspect
415
+ loadHandler: async () => (await import("./inspect.handler-umc7of-r.mjs")).handleWorkflowsInspect
416
416
  });
417
417
  }
418
418
  //#endregion
@@ -508,7 +508,7 @@ function createWorkflowsLogsCommand() {
508
508
  key: "workflow",
509
509
  required: false
510
510
  },
511
- loadHandler: async () => (await import("./logs.handler-BGJU1p3H.mjs")).handleWorkflowsLogs
511
+ loadHandler: async () => (await import("./logs.handler-DGcGN2qb.mjs")).handleWorkflowsLogs
512
512
  });
513
513
  }
514
514
  //#endregion
@@ -698,7 +698,7 @@ function createWorkflowsPausedCommand() {
698
698
  key: "workflow",
699
699
  required: false
700
700
  },
701
- loadHandler: async () => (await import("./paused.handler-9ND-i2EN.mjs")).handleWorkflowsPaused
701
+ loadHandler: async () => (await import("./paused.handler-ST9dCe8E.mjs")).handleWorkflowsPaused
702
702
  });
703
703
  }
704
704
  //#endregion
@@ -792,7 +792,7 @@ function createWorkflowsRunCommand() {
792
792
  key: "payload",
793
793
  required: false
794
794
  }],
795
- loadHandler: async () => (await import("./run.handler-TJNyF_p_.mjs")).handleWorkflowsRun
795
+ loadHandler: async () => (await import("./run.handler-BiBDLoeH.mjs")).handleWorkflowsRun
796
796
  });
797
797
  }
798
798
  //#endregion
@@ -847,7 +847,7 @@ function createWorkflowsTestCommand() {
847
847
  description: "Authored workflow id (preferred) or workflow name. Multiple workflows with the same name run sequentially.",
848
848
  key: "workflow"
849
849
  },
850
- loadHandler: async () => (await import("./test.handler-BTn4NFmU.mjs")).handleWorkflowsTest
850
+ loadHandler: async () => (await import("./test.handler-DkizZhVu.mjs")).handleWorkflowsTest
851
851
  });
852
852
  }
853
853
  //#endregion
@@ -885,7 +885,7 @@ function createWorkflowsValidateCommand() {
885
885
  key: "workflow",
886
886
  required: false
887
887
  },
888
- loadHandler: async () => (await import("./validate.handler-COJ53qWJ.mjs")).handleWorkflowsValidate
888
+ loadHandler: async () => (await import("./validate.handler-I8LY-UkG.mjs")).handleWorkflowsValidate
889
889
  });
890
890
  }
891
891
  //#endregion
@@ -904,14 +904,14 @@ function createWorkflowsCommand() {
904
904
  description: "Manage, run, inspect, and debug workflows",
905
905
  schema: WorkflowsOptionsSchema,
906
906
  optionsConfig: WORKFLOWS_OPTIONS_CONFIG,
907
- loadHandler: async () => (await import("./list2.handler-L3BKR5ok.mjs")).handleWorkflowsList,
907
+ loadHandler: async () => (await import("./list2.handler-T5v4EK20.mjs")).handleWorkflowsList,
908
908
  subcommands: [
909
909
  createTypedCommand({
910
910
  name: "list",
911
911
  description: "List all workflows in the project",
912
912
  schema: WorkflowsOptionsSchema,
913
913
  optionsConfig: WORKFLOWS_OPTIONS_CONFIG,
914
- loadHandler: async () => (await import("./list2.handler-L3BKR5ok.mjs")).handleWorkflowsList
914
+ loadHandler: async () => (await import("./list2.handler-T5v4EK20.mjs")).handleWorkflowsList
915
915
  }),
916
916
  createWorkflowsBuildCommand(),
917
917
  createWorkflowsTestCommand(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keystrokehq/cli",
3
- "version": "0.0.15",
3
+ "version": "0.0.17",
4
4
  "private": false,
5
5
  "description": "Command-line interface for creating, managing, and deploying Keystroke automations.",
6
6
  "type": "module",
@@ -39,19 +39,19 @@
39
39
  "tsdown": "0.21.10",
40
40
  "typescript": "^5.9.3",
41
41
  "vitest": "^4.1.5",
42
- "@keystroke/shared-types": "0.0.3",
43
42
  "@keystroke/env-utils": "0.0.0",
43
+ "@keystroke/local-memory": "0.0.0",
44
+ "@keystrokehq/config": "0.0.2",
45
+ "@keystroke/test-utils": "0.0.2",
44
46
  "@keystroke/typescript-config": "0.0.0",
47
+ "@keystroke/shared-types": "0.0.3",
45
48
  "@keystroke/utils": "0.0.0",
46
49
  "@keystroke/workflow-builder": "0.0.5",
47
50
  "@keystrokehq/core": "0.0.6",
48
- "@keystrokehq/testing": "0.0.2",
49
51
  "@keystrokehq/workflow-build-contracts": "0.0.2",
50
52
  "@keystroke/workflow-deploy": "0.0.4",
51
- "@keystroke/test-utils": "0.0.2",
52
53
  "@keystroke/workflow-sdk": "0.0.2",
53
- "@keystroke/local-memory": "0.0.0",
54
- "@keystrokehq/config": "0.0.2"
54
+ "@keystrokehq/testing": "0.2.0"
55
55
  },
56
56
  "keywords": [
57
57
  "automation",
@@ -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 };