@keystrokehq/cli 0.1.38 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{dist-DkLbeW8l.mjs → dist-BOhrc_Nv.mjs} +198 -561
- package/dist/dist-BOhrc_Nv.mjs.map +1 -0
- package/dist/{dist-B6z1wti6.mjs → dist-D-cLLjHv.mjs} +87 -2017
- package/dist/dist-D-cLLjHv.mjs.map +1 -0
- package/dist/{dist-GSI9JDuz.mjs → dist-DGKF3FGu.mjs} +31 -265
- package/dist/dist-DGKF3FGu.mjs.map +1 -0
- package/dist/dist-DMuIdus5.mjs +3 -0
- package/dist/{dist-gAvgHBlr.mjs → dist-Re6HHSqz.mjs} +2 -2
- package/dist/{dist-gAvgHBlr.mjs.map → dist-Re6HHSqz.mjs.map} +1 -1
- package/dist/index.mjs +177 -463
- package/dist/index.mjs.map +1 -1
- package/dist/{maybe-auto-update-Dv4MJvWb.mjs → maybe-auto-update-q5MthdI8.mjs} +2 -2
- package/dist/{maybe-auto-update-Dv4MJvWb.mjs.map → maybe-auto-update-q5MthdI8.mjs.map} +1 -1
- package/dist/skills-bundle/_AGENTS.mcp.md +5 -9
- package/dist/skills-bundle/_AGENTS.md +112 -243
- package/dist/skills-bundle/skills/keystroke-actions/SKILL.md +160 -0
- package/dist/skills-bundle/skills/keystroke-actions/references/catalog-and-imports.md +71 -0
- package/dist/skills-bundle/skills/keystroke-agents/SKILL.md +115 -0
- package/dist/skills-bundle/skills/keystroke-agents/references/models.md +23 -0
- package/dist/skills-bundle/skills/keystroke-agents/references/tools-mcp-codemode.md +73 -0
- package/dist/skills-bundle/skills/keystroke-agents/references/workflows-and-testing.md +26 -0
- package/dist/skills-bundle/skills/keystroke-apps/SKILL.md +151 -0
- package/dist/skills-bundle/skills/keystroke-apps/references/cli-and-catalog.md +104 -0
- package/dist/skills-bundle/skills/keystroke-channels/SKILL.md +66 -0
- package/dist/skills-bundle/skills/keystroke-channels/references/slack-setup.md +41 -0
- package/dist/skills-bundle/skills/keystroke-cli/SKILL.md +93 -0
- package/dist/skills-bundle/skills/keystroke-deploy/SKILL.md +93 -0
- package/dist/skills-bundle/skills/keystroke-deploy/references/build-and-full-deploy.md +30 -0
- package/dist/skills-bundle/skills/keystroke-deploy/references/filtered-deploy.md +50 -0
- package/dist/skills-bundle/skills/keystroke-deploy/references/wip-ignore.md +35 -0
- package/dist/skills-bundle/skills/keystroke-files/SKILL.md +43 -0
- package/dist/skills-bundle/skills/keystroke-skills/SKILL.md +42 -0
- package/dist/skills-bundle/skills/keystroke-triggers/SKILL.md +143 -0
- package/dist/skills-bundle/skills/keystroke-workflows/SKILL.md +78 -0
- package/dist/skills-bundle/skills/keystroke-workflows/references/authoring.md +168 -0
- package/dist/skills-bundle/skills/keystroke-workflows/references/testing.md +138 -0
- package/dist/templates/hello-world/.env.example +4 -0
- package/dist/templates/hello-world/README.md +3 -4
- package/dist/templates/hello-world/package.json +0 -1
- package/dist/templates/hello-world/src/actions/greet.ts +0 -1
- package/dist/templates/hello-world/src/agents/hello.ts +0 -2
- package/dist/templates/hello-world/src/workflows/greeting.ts +0 -1
- package/dist/{version-CiFlKPyE.mjs → version-DcR3O1UD.mjs} +3 -2
- package/dist/version-DcR3O1UD.mjs.map +1 -0
- package/package.json +5 -5
- package/dist/dist-B6z1wti6.mjs.map +0 -1
- package/dist/dist-CjWXZCN7.mjs +0 -3
- package/dist/dist-DkLbeW8l.mjs.map +0 -1
- package/dist/dist-GSI9JDuz.mjs.map +0 -1
- package/dist/version-CiFlKPyE.mjs.map +0 -1
|
@@ -2446,21 +2446,6 @@ const $ZodFunction = /* @__PURE__ */ $constructor("$ZodFunction", (inst, def) =>
|
|
|
2446
2446
|
};
|
|
2447
2447
|
return inst;
|
|
2448
2448
|
});
|
|
2449
|
-
const $ZodLazy = /* @__PURE__ */ $constructor("$ZodLazy", (inst, def) => {
|
|
2450
|
-
$ZodType.init(inst, def);
|
|
2451
|
-
defineLazy(inst._zod, "innerType", () => {
|
|
2452
|
-
const d = def;
|
|
2453
|
-
if (!d._cachedInner) d._cachedInner = def.getter();
|
|
2454
|
-
return d._cachedInner;
|
|
2455
|
-
});
|
|
2456
|
-
defineLazy(inst._zod, "pattern", () => inst._zod.innerType?._zod?.pattern);
|
|
2457
|
-
defineLazy(inst._zod, "propValues", () => inst._zod.innerType?._zod?.propValues);
|
|
2458
|
-
defineLazy(inst._zod, "optin", () => inst._zod.innerType?._zod?.optin ?? void 0);
|
|
2459
|
-
defineLazy(inst._zod, "optout", () => inst._zod.innerType?._zod?.optout ?? void 0);
|
|
2460
|
-
inst._zod.parse = (payload, ctx) => {
|
|
2461
|
-
return inst._zod.innerType._zod.run(payload, ctx);
|
|
2462
|
-
};
|
|
2463
|
-
});
|
|
2464
2449
|
const $ZodCustom = /* @__PURE__ */ $constructor("$ZodCustom", (inst, def) => {
|
|
2465
2450
|
$ZodCheck.init(inst, def);
|
|
2466
2451
|
$ZodType.init(inst, def);
|
|
@@ -4724,18 +4709,6 @@ function readonly(innerType) {
|
|
|
4724
4709
|
innerType
|
|
4725
4710
|
});
|
|
4726
4711
|
}
|
|
4727
|
-
const ZodLazy = /* @__PURE__ */ $constructor("ZodLazy", (inst, def) => {
|
|
4728
|
-
$ZodLazy.init(inst, def);
|
|
4729
|
-
ZodType.init(inst, def);
|
|
4730
|
-
inst._zod.processJSONSchema = (ctx, json, params) => lazyProcessor(inst, ctx, json, params);
|
|
4731
|
-
inst.unwrap = () => inst._zod.def.getter();
|
|
4732
|
-
});
|
|
4733
|
-
function lazy(getter) {
|
|
4734
|
-
return new ZodLazy({
|
|
4735
|
-
type: "lazy",
|
|
4736
|
-
getter
|
|
4737
|
-
});
|
|
4738
|
-
}
|
|
4739
4712
|
const ZodFunction = /* @__PURE__ */ $constructor("ZodFunction", (inst, def) => {
|
|
4740
4713
|
$ZodFunction.init(inst, def);
|
|
4741
4714
|
ZodType.init(inst, def);
|
|
@@ -5512,244 +5485,10 @@ function resolvePublicPlatformOrigin(env = process.env) {
|
|
|
5512
5485
|
}
|
|
5513
5486
|
/** On-disk path under the project root (packed in deploy artifacts when present). */
|
|
5514
5487
|
const ROUTE_MANIFEST_REL_PATH = "dist/.keystroke/route-manifest.json";
|
|
5515
|
-
/** How a credential instance is stored (`credential_instances.auth_kind`). */
|
|
5516
|
-
const CredentialAuthKindSchema = _enum([
|
|
5517
|
-
"api_key",
|
|
5518
|
-
"oauth_managed",
|
|
5519
|
-
"keystroke"
|
|
5520
|
-
]);
|
|
5521
|
-
/**
|
|
5522
|
-
* Where a credential instance is stored (`credential_instances.scope_type`), and the only thing an
|
|
5523
|
-
* action/tool can pin via `.scope(...)`. There is no resolution chain: when no scope is pinned, the
|
|
5524
|
-
* resolver tries the project default, then the org default, then throws.
|
|
5525
|
-
*/
|
|
5526
|
-
const CredentialScopeTypeSchema = _enum([
|
|
5527
|
-
"organization",
|
|
5528
|
-
"project",
|
|
5529
|
-
"user"
|
|
5530
|
-
]);
|
|
5531
|
-
CredentialAuthKindSchema.options;
|
|
5532
|
-
CredentialScopeTypeSchema.options;
|
|
5533
|
-
/** Non-empty human-readable label or description (trimmed). */
|
|
5534
|
-
const requiredDisplayTextSchema = string().trim().min(1);
|
|
5535
|
-
/**
|
|
5536
|
-
* Structural workflow-canvas graph contract.
|
|
5537
|
-
*
|
|
5538
|
-
* This is the deterministic skeleton the deploy-time AST producer emits for a
|
|
5539
|
-
* workflow (nodes + edges), plus the manifest-derived trigger-source nodes. It
|
|
5540
|
-
* is the single source of truth shared by:
|
|
5541
|
-
* - the AST producer (emits it at deploy, stored with the manifest),
|
|
5542
|
-
* - the platform route that serves the canvas, and
|
|
5543
|
-
* - the SDK / web client that renders it (React Flow).
|
|
5544
|
-
*
|
|
5545
|
-
* Only the structural skeleton lives here. The LLM enrichment + run-overlay
|
|
5546
|
-
* envelope types live in `workflow-canvas-envelope.ts`; the SDK re-exports them.
|
|
5547
|
-
* See WORKFLOW.md (§4 grammar, §8 node ids, §9 caching).
|
|
5548
|
-
*/
|
|
5549
|
-
/**
|
|
5550
|
-
* Canvas node taxonomy — the single discriminator for every canvas node. The
|
|
5551
|
-
* client derives the React Flow component, icon, and per-node treatment from it
|
|
5552
|
-
* (no parallel `type` / `data.kind` fields), and the producer + fixtures emit it
|
|
5553
|
-
* directly, so the structural contract can never silently diverge across the
|
|
5554
|
-
* deploy → render boundary.
|
|
5555
|
-
* - Boundaries: `entry` (Start, owns input) · `exit` (Output, owns output) ·
|
|
5556
|
-
* `error` (a terminal `throw` — an error output that ends the run on a branch)
|
|
5557
|
-
* - Callable: `step` (action / agent / llm / hook / child-workflow invocation) —
|
|
5558
|
-
* the invocation flavor lives in {@link WorkflowCanvasCallKind}
|
|
5559
|
-
* - Structural control flow: `code-block` · `decision` · `merge` · `loop` ·
|
|
5560
|
-
* `parallel` (group containers) · `loop-start` (the group body's entry marker,
|
|
5561
|
-
* shared by loop + parallel)
|
|
5562
|
-
* - Upstream of entry: `trigger-source` (one per manifest trigger attachment)
|
|
5563
|
-
*
|
|
5564
|
-
* `Promise.all([...])` is modeled as a `parallel` group container: the branches
|
|
5565
|
-
* are stacked inside and the container itself is the single prong leaving the
|
|
5566
|
-
* wrapper (there is no separate fork/join pair).
|
|
5567
|
-
*
|
|
5568
|
-
* `exit` and `error` are both terminals: a `return` flows to the shared `exit`
|
|
5569
|
-
* (the workflow output), while a `throw` gets its own `error` terminal off the
|
|
5570
|
-
* branch so guard clauses (`if (bad) throw …`) read as a visible dead-end.
|
|
5571
|
-
*/
|
|
5572
|
-
const WorkflowCanvasNodeTypeSchema = _enum([
|
|
5573
|
-
"entry",
|
|
5574
|
-
"exit",
|
|
5575
|
-
"error",
|
|
5576
|
-
"step",
|
|
5577
|
-
"code-block",
|
|
5578
|
-
"decision",
|
|
5579
|
-
"merge",
|
|
5580
|
-
"loop",
|
|
5581
|
-
"parallel",
|
|
5582
|
-
"loop-start",
|
|
5583
|
-
"trigger-source"
|
|
5584
|
-
]);
|
|
5585
|
-
_enum([
|
|
5586
|
-
"workflow-step",
|
|
5587
|
-
"agent",
|
|
5588
|
-
"llm",
|
|
5589
|
-
"wait",
|
|
5590
|
-
"hook",
|
|
5591
|
-
"tool",
|
|
5592
|
-
"child-workflow"
|
|
5593
|
-
]);
|
|
5594
|
-
/** A labeled branch output on a decision-style node. */
|
|
5595
|
-
const WorkflowCanvasNodeOutputSchema = object({
|
|
5596
|
-
id: string(),
|
|
5597
|
-
label: string()
|
|
5598
|
-
});
|
|
5599
|
-
/**
|
|
5600
|
-
* A step input's configured value at its call site, captured deterministically
|
|
5601
|
-
* by the producer from the call's argument object. The platform join turns this
|
|
5602
|
-
* into the inspector's {@link WorkflowNodeInputBinding} (filling display labels).
|
|
5603
|
-
*/
|
|
5604
|
-
const WorkflowCanvasRawBindingSchema = object({
|
|
5605
|
-
tokens: array(discriminatedUnion("kind", [
|
|
5606
|
-
object({
|
|
5607
|
-
kind: literal("text"),
|
|
5608
|
-
text: string()
|
|
5609
|
-
}),
|
|
5610
|
-
object({
|
|
5611
|
-
kind: literal("reference"),
|
|
5612
|
-
/** Upstream node id this value flows from; absent only for unresolved refs. */
|
|
5613
|
-
sourceNodeId: string().optional(),
|
|
5614
|
-
/** Output field of the source (dotted path); omitted = the whole output. */
|
|
5615
|
-
field: string().optional()
|
|
5616
|
-
}),
|
|
5617
|
-
object({
|
|
5618
|
-
kind: literal("variable"),
|
|
5619
|
-
text: string()
|
|
5620
|
-
}),
|
|
5621
|
-
object({
|
|
5622
|
-
kind: literal("call"),
|
|
5623
|
-
name: string()
|
|
5624
|
-
})
|
|
5625
|
-
])),
|
|
5626
|
-
/** Render as a tall multi-line box (object/array/multiline template values). */
|
|
5627
|
-
multiline: boolean().optional()
|
|
5628
|
-
});
|
|
5629
|
-
/**
|
|
5630
|
-
* Statically-captured `promptLlm` options for an `llm` step node. Literal-only:
|
|
5631
|
-
* dynamic/expression values (a computed model, a `system` built by a function) are
|
|
5632
|
-
* not captured; `system`/`outputSchema` record presence so the inspector can note
|
|
5633
|
-
* "a system prompt is configured" / "structured output" without their values.
|
|
5634
|
-
*/
|
|
5635
|
-
const WorkflowCanvasLlmOptionsSchema = object({
|
|
5636
|
-
model: string().optional(),
|
|
5637
|
-
maxTokens: number$1().optional(),
|
|
5638
|
-
temperature: number$1().optional(),
|
|
5639
|
-
thinkingLevel: string().optional(),
|
|
5640
|
-
hasSystemPrompt: boolean().optional(),
|
|
5641
|
-
hasOutputSchema: boolean().optional()
|
|
5642
|
-
});
|
|
5643
|
-
const WorkflowCanvasNodeDataSchema = object({
|
|
5644
|
-
label: string(),
|
|
5645
|
-
/** Set on group nodes (loop / parallel section containers). */
|
|
5646
|
-
groupKind: _enum([
|
|
5647
|
-
"loop",
|
|
5648
|
-
"parallel",
|
|
5649
|
-
"conditional"
|
|
5650
|
-
]).optional(),
|
|
5651
|
-
description: string().optional(),
|
|
5652
|
-
/** {@link WorkflowCanvasCallKind} or a looser raw call-site label. */
|
|
5653
|
-
callKind: string().optional(),
|
|
5654
|
-
/**
|
|
5655
|
-
* App/integration slug for a `step` whose action/agent is imported directly
|
|
5656
|
-
* from a `@keystrokehq/<app>` package (e.g. "slack", "apollo"). Lets the client
|
|
5657
|
-
* badge the node with that app's logo; absent for custom (project-local)
|
|
5658
|
-
* actions, which fall back to the call-kind icon.
|
|
5659
|
-
*/
|
|
5660
|
-
appSlug: string().optional(),
|
|
5661
|
-
/** Cron/webhook/poll discriminator on trigger-source nodes. */
|
|
5662
|
-
triggerType: string().optional(),
|
|
5663
|
-
/** Branch outputs (decision nodes). */
|
|
5664
|
-
outputs: array(WorkflowCanvasNodeOutputSchema).optional(),
|
|
5665
|
-
/**
|
|
5666
|
-
* Action/agent/workflow slug resolved at deploy time (via import → definition).
|
|
5667
|
-
* Optional when the deploy build cannot resolve source (dist-only artifacts).
|
|
5668
|
-
*/
|
|
5669
|
-
slug: string().optional(),
|
|
5670
|
-
/**
|
|
5671
|
-
* Durable call-site ids nested inside an off-grammar `code-block` (same-file only).
|
|
5672
|
-
* Used by the run overlay to light the block when any contained step executes.
|
|
5673
|
-
*/
|
|
5674
|
-
containedCallSiteIds: array(string()).optional(),
|
|
5675
|
-
/**
|
|
5676
|
-
* Per-input call-site value bindings for `step` nodes, keyed by input field name.
|
|
5677
|
-
* Deterministically captured from the call's argument object; reference tokens point
|
|
5678
|
-
* at the upstream node that produced the value. The platform join fills display labels.
|
|
5679
|
-
*/
|
|
5680
|
-
inputBindings: record(string(), WorkflowCanvasRawBindingSchema).optional(),
|
|
5681
|
-
/**
|
|
5682
|
-
* Static `promptLlm(prompt, options)` configuration captured at the call site for
|
|
5683
|
-
* `llm` step nodes. Only literal values are captured (model/maxTokens/temperature/
|
|
5684
|
-
* thinkingLevel); `system`/`outputSchema` are usually expressions, so only their
|
|
5685
|
-
* presence is recorded. Absent when no options are statically resolvable.
|
|
5686
|
-
*/
|
|
5687
|
-
llmOptions: WorkflowCanvasLlmOptionsSchema.optional()
|
|
5688
|
-
});
|
|
5689
|
-
/**
|
|
5690
|
-
* A single structural node. This is the deploy artifact's shape: identity
|
|
5691
|
-
* (`id`), the canonical discriminator (`nodeType`), display `data`, and group
|
|
5692
|
-
* nesting (`parentId`). All layout/rendering — React Flow component key,
|
|
5693
|
-
* positions, sizes, `extent`, group box dimensions — is derived entirely
|
|
5694
|
-
* client-side from this structure, so it never leaks into the wire contract.
|
|
5695
|
-
*/
|
|
5696
|
-
const WorkflowCanvasGraphNodeSchema = object({
|
|
5697
|
-
id: string(),
|
|
5698
|
-
nodeType: WorkflowCanvasNodeTypeSchema,
|
|
5699
|
-
data: WorkflowCanvasNodeDataSchema,
|
|
5700
|
-
/** Set on children nested inside a group (loop / parallel) container. */
|
|
5701
|
-
parentId: string().optional()
|
|
5702
|
-
});
|
|
5703
|
-
const WorkflowCanvasEdgeSchema = object({
|
|
5704
|
-
id: string(),
|
|
5705
|
-
source: string(),
|
|
5706
|
-
target: string(),
|
|
5707
|
-
type: string().optional(),
|
|
5708
|
-
label: string().optional(),
|
|
5709
|
-
sourceHandle: string().optional(),
|
|
5710
|
-
targetHandle: string().optional(),
|
|
5711
|
-
data: object({ branchKind: _enum([
|
|
5712
|
-
"then",
|
|
5713
|
-
"else",
|
|
5714
|
-
"parallel-branch",
|
|
5715
|
-
"error"
|
|
5716
|
-
]).optional() }).optional()
|
|
5717
|
-
});
|
|
5718
|
-
/** A statically-evaluable top-level `const` value (literal scalars only). */
|
|
5719
|
-
const WorkflowCanvasConstantValueSchema = union([
|
|
5720
|
-
string(),
|
|
5721
|
-
number$1(),
|
|
5722
|
-
boolean()
|
|
5723
|
-
]);
|
|
5724
|
-
/**
|
|
5725
|
-
* Top-level `const NAME = <literal>` declarations in the workflow source, captured
|
|
5726
|
-
* at deploy. Lets the platform resolve `variable` value tokens (e.g. a `model` set
|
|
5727
|
-
* to a named const) to their concrete value for display. Scalars only — computed,
|
|
5728
|
-
* function-local, or non-literal consts are intentionally omitted.
|
|
5729
|
-
*/
|
|
5730
|
-
const WorkflowCanvasConstantsSchema = record(string(), WorkflowCanvasConstantValueSchema);
|
|
5731
|
-
const WorkflowCanvasGraphSchema = object({
|
|
5732
|
-
nodes: array(WorkflowCanvasGraphNodeSchema),
|
|
5733
|
-
edges: array(WorkflowCanvasEdgeSchema),
|
|
5734
|
-
/** Top-level literal constants from the workflow source (for value-token resolution). */
|
|
5735
|
-
constants: WorkflowCanvasConstantsSchema.optional()
|
|
5736
|
-
});
|
|
5737
|
-
/**
|
|
5738
|
-
* Deploy-time summary of one credential a step requires, derived from the
|
|
5739
|
-
* action/agent-tool definition's `.credentials`. The workflow-canvas credential
|
|
5740
|
-
* overlay joins a step node's `slug` to these to resolve the bound instance.
|
|
5741
|
-
* `key` doubles as the app slug (matches `credential_instances.app_slug`).
|
|
5742
|
-
*/
|
|
5743
|
-
const CredentialRequirementSummarySchema = object({
|
|
5744
|
-
key: string(),
|
|
5745
|
-
kind: CredentialAuthKindSchema,
|
|
5746
|
-
/** Scope pinned via `.scope(...)`; absent means project-default → org-default. */
|
|
5747
|
-
scope: CredentialScopeTypeSchema.optional()
|
|
5748
|
-
});
|
|
5749
5488
|
const StoredRouteManifestSkillSchema = object({
|
|
5750
5489
|
slug: string(),
|
|
5751
|
-
name:
|
|
5752
|
-
description:
|
|
5490
|
+
name: string().optional(),
|
|
5491
|
+
description: string().optional(),
|
|
5753
5492
|
moduleFile: string()
|
|
5754
5493
|
});
|
|
5755
5494
|
const attachmentSchemasSchema = record(string(), object({
|
|
@@ -5757,8 +5496,8 @@ const attachmentSchemasSchema = record(string(), object({
|
|
|
5757
5496
|
filterSchema: record(string(), unknown()).optional()
|
|
5758
5497
|
}));
|
|
5759
5498
|
const attachmentMetaSchema = record(string(), object({
|
|
5760
|
-
name:
|
|
5761
|
-
description:
|
|
5499
|
+
name: string().optional(),
|
|
5500
|
+
description: string().optional()
|
|
5762
5501
|
}));
|
|
5763
5502
|
const storedRouteManifestEntryV2Schema = discriminatedUnion("kind", [
|
|
5764
5503
|
object({ kind: literal("health") }),
|
|
@@ -5766,43 +5505,23 @@ const storedRouteManifestEntryV2Schema = discriminatedUnion("kind", [
|
|
|
5766
5505
|
kind: literal("agent"),
|
|
5767
5506
|
slug: string(),
|
|
5768
5507
|
moduleFile: string(),
|
|
5769
|
-
name:
|
|
5770
|
-
description:
|
|
5508
|
+
name: string().optional(),
|
|
5509
|
+
description: string().optional(),
|
|
5771
5510
|
model: string(),
|
|
5772
5511
|
systemPrompt: string(),
|
|
5773
5512
|
toolCount: number$1().int().nonnegative(),
|
|
5774
5513
|
credentialCount: number$1().int().nonnegative(),
|
|
5775
5514
|
appSlugs: array(string()).default([]),
|
|
5776
|
-
toolSlugs: array(string()).default([])
|
|
5777
|
-
/** Credential requirements per tool slug (the agent's credential consumer key). */
|
|
5778
|
-
toolRequirements: record(string(), array(CredentialRequirementSummarySchema)).optional()
|
|
5779
|
-
}),
|
|
5780
|
-
object({
|
|
5781
|
-
kind: literal("action"),
|
|
5782
|
-
slug: string(),
|
|
5783
|
-
name: requiredDisplayTextSchema,
|
|
5784
|
-
description: requiredDisplayTextSchema,
|
|
5785
|
-
moduleFile: string(),
|
|
5786
|
-
/** App slug for actions imported from an integration package (`@keystrokehq/<app>/actions`). */
|
|
5787
|
-
appSlug: string().optional(),
|
|
5788
|
-
inputSchema: record(string(), unknown()),
|
|
5789
|
-
outputSchema: record(string(), unknown()),
|
|
5790
|
-
/** Credentials this action requires (for the canvas credential overlay). */
|
|
5791
|
-
requirements: array(CredentialRequirementSummarySchema).optional()
|
|
5515
|
+
toolSlugs: array(string()).default([])
|
|
5792
5516
|
}),
|
|
5793
5517
|
object({
|
|
5794
5518
|
kind: literal("workflow"),
|
|
5795
5519
|
slug: string(),
|
|
5796
|
-
name:
|
|
5797
|
-
description:
|
|
5520
|
+
name: string().optional(),
|
|
5521
|
+
description: string().optional(),
|
|
5798
5522
|
subscribable: boolean(),
|
|
5799
5523
|
moduleFile: string(),
|
|
5800
|
-
requestSchema: record(string(), unknown())
|
|
5801
|
-
responseSchema: record(string(), unknown()).optional(),
|
|
5802
|
-
/** Deterministic AST control-flow skeleton (deploy-time producer). */
|
|
5803
|
-
flowGraph: WorkflowCanvasGraphSchema.optional(),
|
|
5804
|
-
/** sha256 of the workflow source the `flowGraph` was produced from (staleness). */
|
|
5805
|
-
flowGraphSourceHash: string().optional()
|
|
5524
|
+
requestSchema: record(string(), unknown())
|
|
5806
5525
|
}),
|
|
5807
5526
|
object({
|
|
5808
5527
|
kind: literal("trigger-webhook"),
|
|
@@ -5821,8 +5540,8 @@ const storedRouteManifestEntryV2Schema = discriminatedUnion("kind", [
|
|
|
5821
5540
|
moduleFile: string(),
|
|
5822
5541
|
sourceHash: string().optional(),
|
|
5823
5542
|
schedule: string(),
|
|
5824
|
-
name:
|
|
5825
|
-
description:
|
|
5543
|
+
name: string().optional(),
|
|
5544
|
+
description: string().optional()
|
|
5826
5545
|
}),
|
|
5827
5546
|
object({
|
|
5828
5547
|
kind: literal("trigger-poll-group"),
|
|
@@ -5838,8 +5557,8 @@ const storedRouteManifestEntryV2Schema = discriminatedUnion("kind", [
|
|
|
5838
5557
|
moduleFile: string(),
|
|
5839
5558
|
sourceHash: string().optional(),
|
|
5840
5559
|
schedule: string(),
|
|
5841
|
-
name:
|
|
5842
|
-
description:
|
|
5560
|
+
name: string().optional(),
|
|
5561
|
+
description: string().optional()
|
|
5843
5562
|
})
|
|
5844
5563
|
]);
|
|
5845
5564
|
const storedRouteManifestV2Schema = object({
|
|
@@ -5848,14 +5567,165 @@ const storedRouteManifestV2Schema = object({
|
|
|
5848
5567
|
skills: array(StoredRouteManifestSkillSchema).default([]),
|
|
5849
5568
|
integrations: array(string()).optional()
|
|
5850
5569
|
});
|
|
5851
|
-
|
|
5852
|
-
|
|
5853
|
-
|
|
5854
|
-
|
|
5855
|
-
|
|
5856
|
-
|
|
5570
|
+
const DERIVED_ENTRY_KINDS = new Set([
|
|
5571
|
+
"agent-sessions-list",
|
|
5572
|
+
"agent-session-detail",
|
|
5573
|
+
"workflow-runs-list",
|
|
5574
|
+
"workflow-run-detail",
|
|
5575
|
+
"trigger-runs-list",
|
|
5576
|
+
"trigger-run-detail"
|
|
5577
|
+
]);
|
|
5578
|
+
function webhookEndpointFromPath(path) {
|
|
5579
|
+
return path.replace(/^\/triggers\//, "").replace(/^\/+|\/+$/g, "");
|
|
5580
|
+
}
|
|
5581
|
+
function legacyAgentAppSlugs(entry) {
|
|
5582
|
+
if (Array.isArray(entry.appSlugs)) return entry.appSlugs;
|
|
5583
|
+
if (Array.isArray(entry.credentialSlugs)) return entry.credentialSlugs;
|
|
5584
|
+
if (Array.isArray(entry.credentialKeys)) return entry.credentialKeys;
|
|
5585
|
+
return [];
|
|
5586
|
+
}
|
|
5587
|
+
/** TODO remove after all artifacts rebuilt — upcasts legacy v1 manifests to v2. */
|
|
5588
|
+
function normalizeEntryToV2(entry) {
|
|
5589
|
+
const kind = entry.kind;
|
|
5590
|
+
if (typeof kind !== "string") return null;
|
|
5591
|
+
if (DERIVED_ENTRY_KINDS.has(kind) || kind === "plugin") return null;
|
|
5592
|
+
if (kind === "health") return { kind: "health" };
|
|
5593
|
+
if (kind === "agent") {
|
|
5594
|
+
const slug = typeof entry.slug === "string" ? entry.slug : typeof entry.agentSlug === "string" ? entry.agentSlug : void 0;
|
|
5595
|
+
if (!slug || typeof entry.moduleFile !== "string") return null;
|
|
5596
|
+
return {
|
|
5597
|
+
kind: "agent",
|
|
5598
|
+
slug,
|
|
5599
|
+
moduleFile: entry.moduleFile,
|
|
5600
|
+
...typeof entry.name === "string" ? { name: entry.name } : {},
|
|
5601
|
+
...typeof entry.description === "string" ? { description: entry.description } : {},
|
|
5602
|
+
model: typeof entry.model === "string" ? entry.model : "",
|
|
5603
|
+
systemPrompt: typeof entry.systemPrompt === "string" ? entry.systemPrompt : "",
|
|
5604
|
+
toolCount: typeof entry.toolCount === "number" ? entry.toolCount : 0,
|
|
5605
|
+
credentialCount: typeof entry.credentialCount === "number" ? entry.credentialCount : 0,
|
|
5606
|
+
appSlugs: legacyAgentAppSlugs(entry),
|
|
5607
|
+
toolSlugs: Array.isArray(entry.toolSlugs) ? entry.toolSlugs : []
|
|
5608
|
+
};
|
|
5609
|
+
}
|
|
5610
|
+
if (kind === "workflow") {
|
|
5611
|
+
const slug = typeof entry.slug === "string" ? entry.slug : typeof entry.workflowSlug === "string" ? entry.workflowSlug : void 0;
|
|
5612
|
+
if (!slug || typeof entry.moduleFile !== "string") return null;
|
|
5613
|
+
const name = typeof entry.name === "string" ? entry.name : typeof entry.workflowName === "string" ? entry.workflowName : void 0;
|
|
5614
|
+
return {
|
|
5615
|
+
kind: "workflow",
|
|
5616
|
+
slug,
|
|
5617
|
+
moduleFile: entry.moduleFile,
|
|
5618
|
+
...name ? { name } : {},
|
|
5619
|
+
...typeof entry.description === "string" ? { description: entry.description } : {},
|
|
5620
|
+
subscribable: entry.subscribable === true,
|
|
5621
|
+
requestSchema: entry.requestSchema && typeof entry.requestSchema === "object" ? entry.requestSchema : {}
|
|
5622
|
+
};
|
|
5623
|
+
}
|
|
5624
|
+
if (kind === "trigger-webhook") {
|
|
5625
|
+
if (typeof entry.moduleFile !== "string" || !Array.isArray(entry.attachmentIds)) return null;
|
|
5626
|
+
const endpoint = typeof entry.endpoint === "string" ? entry.endpoint : typeof entry.path === "string" ? webhookEndpointFromPath(entry.path) : void 0;
|
|
5627
|
+
if (!endpoint) return null;
|
|
5628
|
+
return {
|
|
5629
|
+
kind: "trigger-webhook",
|
|
5630
|
+
endpoint,
|
|
5631
|
+
attachmentIds: entry.attachmentIds,
|
|
5632
|
+
moduleFile: entry.moduleFile,
|
|
5633
|
+
...typeof entry.sourceHash === "string" ? { sourceHash: entry.sourceHash } : {},
|
|
5634
|
+
attachmentSchemas: entry.attachmentSchemas && typeof entry.attachmentSchemas === "object" ? entry.attachmentSchemas : {},
|
|
5635
|
+
...entry.attachmentMeta && typeof entry.attachmentMeta === "object" ? { attachmentMeta: entry.attachmentMeta } : {}
|
|
5636
|
+
};
|
|
5637
|
+
}
|
|
5638
|
+
if (kind === "trigger-poll") {
|
|
5639
|
+
if (typeof entry.attachmentId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string") return null;
|
|
5640
|
+
return {
|
|
5641
|
+
kind: "trigger-poll",
|
|
5642
|
+
attachmentId: entry.attachmentId,
|
|
5643
|
+
attachmentIds: Array.isArray(entry.attachmentIds) ? entry.attachmentIds : [entry.attachmentId],
|
|
5644
|
+
moduleFile: entry.moduleFile,
|
|
5645
|
+
...typeof entry.sourceHash === "string" ? { sourceHash: entry.sourceHash } : {},
|
|
5646
|
+
schedule: entry.schedule,
|
|
5647
|
+
...typeof entry.name === "string" ? { name: entry.name } : {},
|
|
5648
|
+
...typeof entry.description === "string" ? { description: entry.description } : {}
|
|
5649
|
+
};
|
|
5650
|
+
}
|
|
5651
|
+
if (kind === "trigger-poll-group") {
|
|
5652
|
+
if (typeof entry.pollId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string" || !Array.isArray(entry.attachmentIds)) return null;
|
|
5653
|
+
return {
|
|
5654
|
+
kind: "trigger-poll-group",
|
|
5655
|
+
pollId: entry.pollId,
|
|
5656
|
+
attachmentIds: entry.attachmentIds,
|
|
5657
|
+
moduleFile: entry.moduleFile,
|
|
5658
|
+
schedule: entry.schedule
|
|
5659
|
+
};
|
|
5660
|
+
}
|
|
5661
|
+
if (kind === "cron-schedule") {
|
|
5662
|
+
if (typeof entry.attachmentId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string") return null;
|
|
5663
|
+
return {
|
|
5664
|
+
kind: "cron-schedule",
|
|
5665
|
+
attachmentId: entry.attachmentId,
|
|
5666
|
+
attachmentIds: Array.isArray(entry.attachmentIds) ? entry.attachmentIds : [entry.attachmentId],
|
|
5667
|
+
moduleFile: entry.moduleFile,
|
|
5668
|
+
...typeof entry.sourceHash === "string" ? { sourceHash: entry.sourceHash } : {},
|
|
5669
|
+
schedule: entry.schedule,
|
|
5670
|
+
...typeof entry.name === "string" ? { name: entry.name } : {},
|
|
5671
|
+
...typeof entry.description === "string" ? { description: entry.description } : {}
|
|
5672
|
+
};
|
|
5673
|
+
}
|
|
5674
|
+
return null;
|
|
5675
|
+
}
|
|
5676
|
+
/** TODO remove after all artifacts rebuilt — upcasts legacy v1 manifests to v2. */
|
|
5677
|
+
function normalizeV2ManifestInput(value) {
|
|
5678
|
+
if (!value || typeof value !== "object") return value;
|
|
5679
|
+
const raw = value;
|
|
5680
|
+
if (raw.version !== 2 || !Array.isArray(raw.entries)) return value;
|
|
5681
|
+
return {
|
|
5682
|
+
...raw,
|
|
5683
|
+
entries: raw.entries.map((entry) => {
|
|
5684
|
+
if (!entry || typeof entry !== "object") return entry;
|
|
5685
|
+
const kind = entry.kind;
|
|
5686
|
+
if (kind === "trigger-poll" || kind === "cron-schedule" || kind === "trigger-webhook" || kind === "trigger-poll-group") {
|
|
5687
|
+
const trigger = entry;
|
|
5688
|
+
if (Array.isArray(trigger.attachmentIds)) return entry;
|
|
5689
|
+
return {
|
|
5690
|
+
...trigger,
|
|
5691
|
+
attachmentIds: typeof trigger.attachmentId === "string" ? [trigger.attachmentId] : []
|
|
5692
|
+
};
|
|
5693
|
+
}
|
|
5694
|
+
if (kind !== "agent") return entry;
|
|
5695
|
+
const agent = entry;
|
|
5696
|
+
if (Array.isArray(agent.appSlugs)) return entry;
|
|
5697
|
+
const appSlugs = legacyAgentAppSlugs(agent);
|
|
5698
|
+
if (appSlugs.length === 0) return entry;
|
|
5699
|
+
const { credentialKeys: _credentialKeys, credentialSlugs: _credentialSlugs, ...rest } = agent;
|
|
5700
|
+
return {
|
|
5701
|
+
...rest,
|
|
5702
|
+
appSlugs,
|
|
5703
|
+
toolSlugs: Array.isArray(agent.toolSlugs) ? agent.toolSlugs : []
|
|
5704
|
+
};
|
|
5705
|
+
})
|
|
5706
|
+
};
|
|
5707
|
+
}
|
|
5708
|
+
/** TODO remove after all artifacts rebuilt — upcasts legacy v1 manifests to v2. */
|
|
5709
|
+
function normalizeStoredRouteManifestToV2(value) {
|
|
5710
|
+
if (!value || typeof value !== "object") throw new Error("Invalid route manifest");
|
|
5711
|
+
const raw = value;
|
|
5712
|
+
if (raw.version === 2) return storedRouteManifestV2Schema.parse(normalizeV2ManifestInput(value));
|
|
5713
|
+
const entriesRaw = Array.isArray(raw.entries) ? raw.entries : [];
|
|
5714
|
+
const entries = [];
|
|
5715
|
+
for (const entry of entriesRaw) {
|
|
5716
|
+
if (!entry || typeof entry !== "object") continue;
|
|
5717
|
+
const normalized = normalizeEntryToV2(entry);
|
|
5718
|
+
if (normalized) entries.push(normalized);
|
|
5719
|
+
}
|
|
5720
|
+
return storedRouteManifestV2Schema.parse({
|
|
5721
|
+
version: 2,
|
|
5722
|
+
entries,
|
|
5723
|
+
skills: raw.skills ?? [],
|
|
5724
|
+
integrations: raw.integrations
|
|
5725
|
+
});
|
|
5726
|
+
}
|
|
5857
5727
|
function parseStoredRouteManifest(value) {
|
|
5858
|
-
return
|
|
5728
|
+
return normalizeStoredRouteManifestToV2(value);
|
|
5859
5729
|
}
|
|
5860
5730
|
/** Messaging platforms that support agent gateway bindings. */
|
|
5861
5731
|
const ChannelPlatformKeySchema = _enum(["slack"]);
|
|
@@ -6394,6 +6264,24 @@ function isAcceptableInstallExit(manager, exitCode, output) {
|
|
|
6394
6264
|
if (manager === "pnpm" && output.includes("ERR_PNPM_IGNORED_BUILDS")) return true;
|
|
6395
6265
|
return false;
|
|
6396
6266
|
}
|
|
6267
|
+
/** How a credential instance is stored (`credential_instances.auth_kind`). */
|
|
6268
|
+
const CredentialAuthKindSchema = _enum([
|
|
6269
|
+
"api_key",
|
|
6270
|
+
"oauth_managed",
|
|
6271
|
+
"keystroke"
|
|
6272
|
+
]);
|
|
6273
|
+
/**
|
|
6274
|
+
* Where a credential instance is stored (`credential_instances.scope_type`), and the only thing an
|
|
6275
|
+
* action/tool can pin via `.scope(...)`. There is no resolution chain: when no scope is pinned, the
|
|
6276
|
+
* resolver tries the project default, then the org default, then throws.
|
|
6277
|
+
*/
|
|
6278
|
+
const CredentialScopeTypeSchema = _enum([
|
|
6279
|
+
"organization",
|
|
6280
|
+
"project",
|
|
6281
|
+
"user"
|
|
6282
|
+
]);
|
|
6283
|
+
CredentialAuthKindSchema.options;
|
|
6284
|
+
CredentialScopeTypeSchema.options;
|
|
6397
6285
|
/** Scope of a platform app credential (maps to `credential_instances.scope_type`). */
|
|
6398
6286
|
const AppCredentialScopeSchema = _enum([
|
|
6399
6287
|
"user",
|
|
@@ -6413,8 +6301,6 @@ const nullableOptionalTimestamp = string().nullable().optional();
|
|
|
6413
6301
|
const AppCredentialSummarySchema = object({
|
|
6414
6302
|
id: string().min(1),
|
|
6415
6303
|
appId: string().min(1),
|
|
6416
|
-
/** Stable per-scope identifier; pass to `--credential` to pin a specific instance. */
|
|
6417
|
-
slug: string().min(1),
|
|
6418
6304
|
label: string().min(1),
|
|
6419
6305
|
scope: AppCredentialScopeSchema,
|
|
6420
6306
|
lastRefreshedAt: string().nullable(),
|
|
@@ -6572,7 +6458,7 @@ const McpCredentialAssignmentTargetSchema = object({
|
|
|
6572
6458
|
type: CredentialAssignmentTargetTypeSchema,
|
|
6573
6459
|
key: string().trim().min(1)
|
|
6574
6460
|
});
|
|
6575
|
-
|
|
6461
|
+
object({
|
|
6576
6462
|
app: string().trim().min(1),
|
|
6577
6463
|
tool: string().trim().min(1),
|
|
6578
6464
|
arguments: record(string(), unknown()).default({}),
|
|
@@ -6581,11 +6467,7 @@ const ExecuteKeystrokeToolRequestSchema = object({
|
|
|
6581
6467
|
/** When set, platform MCP resolve checks credential assignments before scope defaults. */
|
|
6582
6468
|
assignmentTarget: McpCredentialAssignmentTargetSchema.optional(),
|
|
6583
6469
|
/** Tool/step consumer id for assignment lookup (action slug or workflow step correlation id). */
|
|
6584
|
-
consumerId: string().trim().min(1).optional()
|
|
6585
|
-
/** Explicit credential instance slug; overrides default resolution to pick that instance. */
|
|
6586
|
-
credentialSlug: string().trim().min(1).optional(),
|
|
6587
|
-
/** Project slug (CLI --project); the platform resolves it to a project and binds that scope. */
|
|
6588
|
-
projectSlug: string().trim().min(1).optional()
|
|
6470
|
+
consumerId: string().trim().min(1).optional()
|
|
6589
6471
|
});
|
|
6590
6472
|
object({
|
|
6591
6473
|
error: _enum([
|
|
@@ -7446,7 +7328,7 @@ const WorkspaceTriggerSummarySchema = object({
|
|
|
7446
7328
|
id: string(),
|
|
7447
7329
|
slug: string(),
|
|
7448
7330
|
name: string(),
|
|
7449
|
-
description: string().
|
|
7331
|
+
description: string().nullable(),
|
|
7450
7332
|
type: TriggerTypeSchema,
|
|
7451
7333
|
status: TriggerStatusSchema,
|
|
7452
7334
|
projectId: string(),
|
|
@@ -7753,7 +7635,7 @@ const AgentSummarySchema = object({
|
|
|
7753
7635
|
name: string().min(1),
|
|
7754
7636
|
projectId: string().min(1),
|
|
7755
7637
|
updatedAt: string().min(1),
|
|
7756
|
-
description: string().
|
|
7638
|
+
description: string().optional(),
|
|
7757
7639
|
sourcePath: string().min(1).optional(),
|
|
7758
7640
|
model: string().optional(),
|
|
7759
7641
|
capabilities: object({
|
|
@@ -7775,7 +7657,7 @@ const WorkflowSummarySchema = object({
|
|
|
7775
7657
|
name: string().min(1),
|
|
7776
7658
|
projectId: string().min(1),
|
|
7777
7659
|
updatedAt: string().min(1),
|
|
7778
|
-
description: string().
|
|
7660
|
+
description: string().optional(),
|
|
7779
7661
|
sourcePath: string().min(1).optional(),
|
|
7780
7662
|
lastRunAt: optionalTimestamp
|
|
7781
7663
|
});
|
|
@@ -7785,7 +7667,7 @@ const SkillSummarySchema = object({
|
|
|
7785
7667
|
name: string().min(1),
|
|
7786
7668
|
projectId: string().min(1),
|
|
7787
7669
|
updatedAt: string().min(1),
|
|
7788
|
-
description: string().
|
|
7670
|
+
description: string().optional(),
|
|
7789
7671
|
sourcePath: string().min(1).optional()
|
|
7790
7672
|
});
|
|
7791
7673
|
const AgentSummaryListResponseSchema = array(AgentSummarySchema);
|
|
@@ -7904,252 +7786,7 @@ const ListAgentWorkspaceFilesResponseSchema = object({ files: array(object({
|
|
|
7904
7786
|
id: string(),
|
|
7905
7787
|
path: string().min(1)
|
|
7906
7788
|
})) });
|
|
7907
|
-
/** Whether the overview is still being produced or finished. */
|
|
7908
|
-
const WorkflowOverviewStatusSchema = _enum(["generating", "ready"]);
|
|
7909
|
-
/** One phase of the guided-tour overview. */
|
|
7910
|
-
const WorkflowPhaseSchema = object({
|
|
7911
|
-
id: string(),
|
|
7912
|
-
title: string(),
|
|
7913
|
-
copy: string(),
|
|
7914
|
-
nodeIds: array(string())
|
|
7915
|
-
});
|
|
7916
|
-
/** LLM-generated overview envelope. */
|
|
7917
|
-
const WorkspaceWorkflowOverviewSchema = object({
|
|
7918
|
-
status: WorkflowOverviewStatusSchema,
|
|
7919
|
-
summary: string(),
|
|
7920
|
-
phases: array(WorkflowPhaseSchema),
|
|
7921
|
-
hash: string(),
|
|
7922
|
-
generatedAt: string().nullable(),
|
|
7923
|
-
model: string()
|
|
7924
|
-
});
|
|
7925
|
-
/** Subset of JSON-Schema field types the dashboard form renders inline. */
|
|
7926
|
-
const WorkflowInputFieldTypeSchema = _enum([
|
|
7927
|
-
"string",
|
|
7928
|
-
"number",
|
|
7929
|
-
"boolean",
|
|
7930
|
-
"enum",
|
|
7931
|
-
"object",
|
|
7932
|
-
"array"
|
|
7933
|
-
]);
|
|
7934
|
-
const WorkflowInputFieldSchema = lazy(() => object({
|
|
7935
|
-
key: string(),
|
|
7936
|
-
label: string(),
|
|
7937
|
-
type: WorkflowInputFieldTypeSchema,
|
|
7938
|
-
required: boolean(),
|
|
7939
|
-
description: string().optional(),
|
|
7940
|
-
placeholder: string().optional(),
|
|
7941
|
-
options: array(string()).optional(),
|
|
7942
|
-
default: union([
|
|
7943
|
-
string(),
|
|
7944
|
-
number$1(),
|
|
7945
|
-
boolean()
|
|
7946
|
-
]).optional(),
|
|
7947
|
-
children: array(WorkflowInputFieldSchema).optional(),
|
|
7948
|
-
format: string().optional()
|
|
7949
|
-
}));
|
|
7950
|
-
/** A workflow's run-input contract plus its persisted values. */
|
|
7951
|
-
const WorkflowRunInputsSchema = object({
|
|
7952
|
-
schema: object({ fields: array(WorkflowInputFieldSchema) }),
|
|
7953
|
-
values: record(string(), unknown()).nullable()
|
|
7954
|
-
});
|
|
7955
|
-
/** Response of the manual workflow-run route (`POST /workflows/:id/run`). */
|
|
7956
|
-
const WorkflowRunResponseSchema = object({ runId: string() });
|
|
7957
|
-
/** Annotation lifecycle: "generating" while the LLM pass streams in, then "ready". */
|
|
7958
|
-
const WorkflowCanvasStatusSchema = _enum(["generating", "ready"]);
|
|
7959
|
-
/** LLM-produced enrichment for a single skeleton node. */
|
|
7960
|
-
const WorkflowCanvasAnnotationSchema = object({
|
|
7961
|
-
label: string().optional(),
|
|
7962
|
-
description: string().optional()
|
|
7963
|
-
});
|
|
7964
|
-
/** The configured value of one input at this call site. */
|
|
7965
|
-
const WorkflowNodeInputBindingSchema = object({
|
|
7966
|
-
tokens: array(discriminatedUnion("kind", [
|
|
7967
|
-
object({
|
|
7968
|
-
kind: literal("text"),
|
|
7969
|
-
text: string()
|
|
7970
|
-
}),
|
|
7971
|
-
object({
|
|
7972
|
-
kind: literal("reference"),
|
|
7973
|
-
sourceNodeId: string().optional(),
|
|
7974
|
-
sourceLabel: string(),
|
|
7975
|
-
field: string().optional()
|
|
7976
|
-
}),
|
|
7977
|
-
object({
|
|
7978
|
-
kind: literal("variable"),
|
|
7979
|
-
text: string(),
|
|
7980
|
-
/** Concrete value when `text` resolves to a top-level literal constant. */
|
|
7981
|
-
resolvedValue: string().optional()
|
|
7982
|
-
}),
|
|
7983
|
-
object({
|
|
7984
|
-
kind: literal("call"),
|
|
7985
|
-
name: string()
|
|
7986
|
-
})
|
|
7987
|
-
])),
|
|
7988
|
-
multiline: boolean().optional()
|
|
7989
|
-
});
|
|
7990
|
-
/** An inspector input with optional call-site binding. */
|
|
7991
|
-
const WorkflowCanvasNodeInputSchema = WorkflowInputFieldSchema.and(object({
|
|
7992
|
-
binding: WorkflowNodeInputBindingSchema.optional(),
|
|
7993
|
-
additional: boolean().optional()
|
|
7994
|
-
}));
|
|
7995
|
-
/** Authored, deterministic metadata for a single node. */
|
|
7996
|
-
const WorkflowCanvasNodeMetaSchema = object({
|
|
7997
|
-
kind: _enum([
|
|
7998
|
-
"action",
|
|
7999
|
-
"agent",
|
|
8000
|
-
"workflow",
|
|
8001
|
-
"llm",
|
|
8002
|
-
"trigger",
|
|
8003
|
-
"boundary"
|
|
8004
|
-
]),
|
|
8005
|
-
slug: string(),
|
|
8006
|
-
name: string(),
|
|
8007
|
-
description: string().optional(),
|
|
8008
|
-
appSlug: string().optional(),
|
|
8009
|
-
inputs: array(WorkflowCanvasNodeInputSchema),
|
|
8010
|
-
outputs: array(WorkflowInputFieldSchema),
|
|
8011
|
-
requiredApps: array(string()).optional(),
|
|
8012
|
-
model: string().optional(),
|
|
8013
|
-
toolCount: number$1().int().nonnegative().optional()
|
|
8014
|
-
});
|
|
8015
|
-
/** The workflow canvas envelope. */
|
|
8016
|
-
const WorkflowCanvasSchema = object({
|
|
8017
|
-
graph: WorkflowCanvasGraphSchema,
|
|
8018
|
-
nodeMetadata: record(string(), WorkflowCanvasNodeMetaSchema),
|
|
8019
|
-
annotations: record(string(), WorkflowCanvasAnnotationSchema),
|
|
8020
|
-
status: WorkflowCanvasStatusSchema,
|
|
8021
|
-
hash: string(),
|
|
8022
|
-
generatedAt: string().nullable(),
|
|
8023
|
-
model: string()
|
|
8024
|
-
});
|
|
8025
|
-
const WorkflowCanvasNodeRunStateSchema = object({
|
|
8026
|
-
status: _enum([
|
|
8027
|
-
"pending",
|
|
8028
|
-
"running",
|
|
8029
|
-
"succeeded",
|
|
8030
|
-
"failed",
|
|
8031
|
-
"skipped"
|
|
8032
|
-
]),
|
|
8033
|
-
iteration: object({
|
|
8034
|
-
index: number$1().int().nonnegative(),
|
|
8035
|
-
total: number$1().int().nonnegative()
|
|
8036
|
-
}).optional()
|
|
8037
|
-
});
|
|
8038
|
-
/** Overall lifecycle of a run as the canvas animates it. */
|
|
8039
|
-
const WorkflowCanvasRunStatusSchema = _enum([
|
|
8040
|
-
"running",
|
|
8041
|
-
"succeeded",
|
|
8042
|
-
"failed",
|
|
8043
|
-
"canceled"
|
|
8044
|
-
]);
|
|
8045
|
-
/** A run projected onto the canvas. */
|
|
8046
|
-
const WorkflowCanvasRunSchema = object({
|
|
8047
|
-
runId: string(),
|
|
8048
|
-
status: WorkflowCanvasRunStatusSchema,
|
|
8049
|
-
startedAt: string(),
|
|
8050
|
-
finishedAt: string().nullable(),
|
|
8051
|
-
nodeStates: record(string(), WorkflowCanvasNodeRunStateSchema)
|
|
8052
|
-
});
|
|
8053
|
-
/** Scope a credential instance lives in. */
|
|
8054
|
-
const WorkflowCredentialScopeSchema = _enum([
|
|
8055
|
-
"organization",
|
|
8056
|
-
"project",
|
|
8057
|
-
"user"
|
|
8058
|
-
]);
|
|
8059
|
-
/** The concrete credential instance a binding currently resolves to. */
|
|
8060
|
-
const WorkflowResolvedCredentialSchema = object({
|
|
8061
|
-
id: string(),
|
|
8062
|
-
name: string(),
|
|
8063
|
-
scope: WorkflowCredentialScopeSchema,
|
|
8064
|
-
appSlug: string().optional(),
|
|
8065
|
-
isDefault: boolean().optional(),
|
|
8066
|
-
projectId: string().optional(),
|
|
8067
|
-
projectName: string().optional()
|
|
8068
|
-
});
|
|
8069
|
-
record(string(), WorkflowCanvasAnnotationSchema);
|
|
8070
|
-
/** One opaque code-block the annotation pass should label, keyed by its canvas node id. */
|
|
8071
|
-
const WorkflowCanvasAnnotationCodeBlockSchema = object({
|
|
8072
|
-
nodeId: string(),
|
|
8073
|
-
/** The raw source snippet (the node's label) the LLM turns into human copy. */
|
|
8074
|
-
source: string()
|
|
8075
|
-
});
|
|
8076
|
-
/** Inputs the worker feeds the LLM for the gated code-block annotation pass. */
|
|
8077
|
-
const WorkflowCanvasAnnotationsInputSchema = object({
|
|
8078
|
-
workflowName: string(),
|
|
8079
|
-
workflowDescription: string().nullable(),
|
|
8080
|
-
codeBlocks: array(WorkflowCanvasAnnotationCodeBlockSchema)
|
|
8081
|
-
});
|
|
8082
|
-
object({
|
|
8083
|
-
workflowId: string(),
|
|
8084
|
-
projectId: string(),
|
|
8085
|
-
hash: string(),
|
|
8086
|
-
model: string(),
|
|
8087
|
-
input: WorkflowCanvasAnnotationsInputSchema
|
|
8088
|
-
});
|
|
8089
|
-
/** One node as the overview LLM sees it (derived from the canvas node metadata + graph). */
|
|
8090
|
-
const WorkflowOverviewNodeSchema = object({
|
|
8091
|
-
nodeId: string(),
|
|
8092
|
-
label: string(),
|
|
8093
|
-
kind: string(),
|
|
8094
|
-
description: string().optional(),
|
|
8095
|
-
/** App/integration slug for steps imported from a `@keystrokehq/<app>` package. */
|
|
8096
|
-
appSlug: string().optional(),
|
|
8097
|
-
/** Authored input field keys (from the action/agent/workflow definition). */
|
|
8098
|
-
inputs: array(string()).optional(),
|
|
8099
|
-
/** Authored output field keys. */
|
|
8100
|
-
outputs: array(string()).optional(),
|
|
8101
|
-
/** Agent-only: the model the agent runs on. */
|
|
8102
|
-
model: string().optional(),
|
|
8103
|
-
/** Agent-only: number of tools available to the agent. */
|
|
8104
|
-
toolCount: number$1().int().nonnegative().optional()
|
|
8105
|
-
});
|
|
8106
|
-
/** Inputs the worker feeds the LLM to produce the workflow overview (summary + phases). */
|
|
8107
|
-
const WorkflowOverviewInputSchema = object({
|
|
8108
|
-
workflowName: string(),
|
|
8109
|
-
workflowDescription: string().nullable(),
|
|
8110
|
-
/** Display labels of the trigger sources upstream of the workflow (read-only context). */
|
|
8111
|
-
triggers: array(string()),
|
|
8112
|
-
nodes: array(WorkflowOverviewNodeSchema),
|
|
8113
|
-
/** The workflow's TypeScript source (best-effort; null when the deploy has no source snapshot). */
|
|
8114
|
-
source: string().nullable()
|
|
8115
|
-
});
|
|
8116
|
-
object({
|
|
8117
|
-
workflowId: string(),
|
|
8118
|
-
projectId: string(),
|
|
8119
|
-
hash: string(),
|
|
8120
|
-
model: string(),
|
|
8121
|
-
input: WorkflowOverviewInputSchema
|
|
8122
|
-
});
|
|
8123
|
-
const WorkflowCanvasCredentialBindingBaseSchema = object({
|
|
8124
|
-
credentialKey: string(),
|
|
8125
|
-
label: string(),
|
|
8126
|
-
appSlug: string().optional()
|
|
8127
|
-
});
|
|
8128
|
-
/** How one credential requirement on a step currently resolves. */
|
|
8129
|
-
const WorkflowCanvasCredentialBindingSchema = union([
|
|
8130
|
-
WorkflowCanvasCredentialBindingBaseSchema.extend({
|
|
8131
|
-
policy: _enum([
|
|
8132
|
-
"project-default",
|
|
8133
|
-
"org-default",
|
|
8134
|
-
"assigned"
|
|
8135
|
-
]),
|
|
8136
|
-
instance: WorkflowResolvedCredentialSchema
|
|
8137
|
-
}),
|
|
8138
|
-
WorkflowCanvasCredentialBindingBaseSchema.extend({
|
|
8139
|
-
policy: literal("scope-pinned"),
|
|
8140
|
-
pinnedScope: WorkflowCredentialScopeSchema,
|
|
8141
|
-
instance: WorkflowResolvedCredentialSchema
|
|
8142
|
-
}),
|
|
8143
|
-
WorkflowCanvasCredentialBindingBaseSchema.extend({
|
|
8144
|
-
policy: literal("unresolved"),
|
|
8145
|
-
reason: _enum(["needs-selection", "missing"]),
|
|
8146
|
-
pinnedScope: WorkflowCredentialScopeSchema.optional()
|
|
8147
|
-
})
|
|
8148
|
-
]);
|
|
8149
|
-
/** Live credential overlay: canvas node id → its step's credential bindings. */
|
|
8150
|
-
const WorkflowCanvasCredentialBindingsSchema = record(string(), array(WorkflowCanvasCredentialBindingSchema));
|
|
8151
|
-
const WorkflowRunInputsPutBodySchema = record(string(), unknown());
|
|
8152
7789
|
//#endregion
|
|
8153
|
-
export {
|
|
7790
|
+
export { GetCustomAppResponseSchema as $, slugifyAppName as $n, SlugAvailabilityResponseSchema as $t, CreateCustomAppRequestSchema as A, WorkflowRunHooksResponseSchema as An, PollRunResponseSchema as At, CredentialConsumerListQuerySchema as B, credentialInputSchema as Bn, ProjectReachabilityResponseSchema as Bt, ConnectAuthorizeUrlResponseSchema as C, UploadProjectSourceResponseSchema as Cn, toJSONSchema as Cr, ListProjectsResponseSchema as Ct, CreateCredentialInstanceBodySchema as D, UserPreferencesPatchSchema as Dn, OrganizationSidebarBrandingSchema as Dt, CreateApiKeyResponseSchema as E, UserAvatarSchema as En, OrganizationSidebarBrandingPatchSchema as Et, CreateProjectRequestSchema as F, WorkspaceTriggerFileSchema as Fn, PresignProjectSourceRequestSchema as Ft, DOCS_QUERY_TOOL as G, normalizeCredentialList as Gn, PromptResponseSchema as Gt, CredentialInstanceListResponseSchema as H, detectProjectPackageManagerFromSnapshot as Hn, ProjectSettingsResponseSchema as Ht, CreateProjectResponseSchema as I, WorkspaceTriggerListResponseSchema as In, PresignProjectSourceResponseSchema as It, DownloadActiveProjectArtifactResponseSchema as J, parseErrorResponse as Jn, QueuedRunResponseSchema as Jt, DOCS_SEARCH_TOOL as K, originFromPublicUrl as Kn, PublicModelsResponseSchema as Kt, CredentialAssignmentListQuerySchema as L, WorkspaceTriggerOverviewSchema as Ln, PresignUserAvatarRequestSchema as Lt, CreateOrganizationRequestSchema as M, WorkflowSummaryDetailResponseSchema as Mn, PresignChatAttachmentResponseSchema as Mt, CreateOrganizationResponseSchema as N, WorkflowSummaryListResponseSchema as Nn, PresignOrgLogoRequestSchema as Nt, CreateCredentialsRequestSchema as O, UserPreferencesSchema as On, PROJECT_PULL_STATE_RELATIVE_PATH as Ot, CreateProjectArtifactResponseSchema as P, WorkspaceTriggerDetailSchema as Pn, PresignOrgLogoResponseSchema as Pt, GetCredentialResponseSchema as Q, resolvePublicPlatformOrigin as Qn, SkillSummaryListResponseSchema as Qt, CredentialAssignmentListResponseSchema as R, WorkspaceTriggerRunListResponseSchema as Rn, PresignUserAvatarResponseSchema as Rt, CompleteProjectArtifactResponseSchema as S, UploadProjectSourceManifestRequestSchema as Sn, datetime as Sr, ListProjectMetricsResponseSchema as St, CreateApiKeyRequestSchema as T, UserAvatarPatchSchema as Tn, NEVER as Tr, OpenApiDiscoverResponseSchema as Tt, CredentialInstanceRecordSchema as U, isAcceptableInstallExit as Un, ProjectSlugAvailabilityResponseSchema as Ut, CredentialConsumerListResponseSchema as V, deriveCustomAppDisplay as Vn, ProjectResponseSchema as Vt, DEFAULT_CLOUD_PLATFORM_ORIGIN as W, listenPortFromPublicUrl as Wn, PromptInputSchema as Wt, ErrorResponseSchema as X, resolveConnectAppSlug as Xn, RecentResourceListResponseSchema as Xt, DownloadActiveProjectSourceResponseSchema as Y, parseStoredRouteManifest as Yn, ROUTE_MANIFEST_REL_PATH as Yt, GatewayAttachmentRecordSchema as Z, resolveDocsMcpUrl as Zn, SkillSummaryDetailResponseSchema as Zt, ChannelAccountListResponseSchema as _, UpdateOrganizationRequestSchema as _n, record as _r, ListOrganizationMembersResponseSchema as _t, AgentSessionDetailResponseSchema as a, StartOAuthConnectionResultSchema as an, any as ar, HistoryRunListResponseSchema as at, ChannelDirectoryListResponseSchema as b, UpdateProjectRequestSchema as bn, unknown as br, ListProjectFilesResponseSchema as bt, AgentSummaryListResponseSchema as c, TriggerDetailResponseSchema as cn, custom as cr, InviteProjectMembersRequestSchema as ct, AssignCredentialBodySchema as d, TriggerRunListResponseSchema as dn, literal as dr, ListAgentMemoryFilesResponseSchema as dt, StartKeystrokeConnectionInputSchema as en, number as er, GraphqlDiscoverResponseSchema as et, BindChannelBodySchema as f, UpdateChannelBindingBodySchema as fn, looseObject as fr, ListAgentWorkspaceFilesResponseSchema as ft, CatalogAppsPageResponseSchema as g, UpdateOrganizationMemberResponseSchema as gn, preprocess as gr, ListOrganizationInvitationsResponseSchema as gt, CatalogAppDetailResponseSchema as h, UpdateOrganizationMemberRequestSchema as hn, optional as hr, ListCredentialsResponseSchema as ht, AgentSessionChatStateResponseSchema as i, StartOAuthConnectionInputSchema as in, _null as ir, HistoryRunListQuerySchema as it, CreateCustomAppResponseSchema as j, WorkflowRunListResponseSchema as jn, PresignChatAttachmentRequestSchema as jt, CreateCredentialsResponseSchema as k, WorkflowRunDetailResponseSchema as kn, PROJECT_REACHABILITY_REQUEST_TIMEOUT_MS as kt, AgentTriggerSummaryListResponseSchema as l, TriggerListResponseSchema as ln, discriminatedUnion as lr, InviteProjectMembersResponseSchema as lt, CatalogActionsPageResponseSchema as m, UpdateCredentialRequestSchema as mn, object as mr, ListAppsResponseSchema as mt, AcceptOrganizationInvitationResponseSchema as n, StartMcpOAuthConnectionInputSchema as nn, _enum as nr, HistoryRunCancelResponseSchema as nt, AgentSessionListResponseSchema as o, SubmitMarketingContactRequestSchema as on, array as or, InviteOrganizationMembersRequestSchema as ot, CatalogActionDetailResponseSchema as p, UpdateCredentialInstanceBodySchema as pn, number$1 as pr, ListApiKeysResponseSchema as pt, DeclineOrganizationInvitationResponseSchema as q, parseAppSlug as qn, QueuedAgentPromptResponseSchema as qt, ActiveOrganizationResponseSchema as r, StartMcpOAuthConnectionResultSchema as rn, _function as rr, HistoryRunDetailResponseSchema as rt, AgentSummaryDetailResponseSchema as s, SubmitTeamRequestRequestSchema as sn, boolean as sr, InviteOrganizationMembersResponseSchema as st, ACTIVE_ORG_HEADER as t, StartKeystrokeConnectionResultSchema as tn, ZodType as tr, HealthResponseSchema as tt, AppSlugAvailabilityResponseSchema as u, TriggerRunDetailResponseSchema as un, intersection as ur, LOCAL_PLATFORM_ORIGIN as ut, ChannelConnectionListResponseSchema as v, UpdateProjectMemberRequestSchema as vn, string as vr, ListOrganizationsResponseSchema as vt, ConnectProvidersResponseSchema as w, UpsertGatewayAttachmentBodySchema as wn, safeParse$1 as wr, McpDiscoverResponseSchema as wt, ChannelPlatformSchema as x, UpdateProjectSettingsRequestSchema as xn, url as xr, ListProjectMembersResponseSchema as xt, ChannelConnectionSchema as y, UpdateProjectMemberResponseSchema as yn, union as yr, ListProjectDeploymentsResponseSchema as yt, CredentialAssignmentRecordSchema as z, buildConnectDeeplink as zn, ProjectPullStateSchema as zt };
|
|
8154
7791
|
|
|
8155
|
-
//# sourceMappingURL=dist-
|
|
7792
|
+
//# sourceMappingURL=dist-BOhrc_Nv.mjs.map
|