@runtypelabs/cli 2.33.3 → 2.33.5
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/index.js +533 -483
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -15351,7 +15351,7 @@ var recordCollectionSchemaSchema = external_exports.strictObject({
|
|
|
15351
15351
|
additionalProperties: external_exports.boolean().optional()
|
|
15352
15352
|
}).superRefine((schema, ctx) => addSemanticIssues(schema, ctx));
|
|
15353
15353
|
|
|
15354
|
-
// ../shared/dist/chunk-
|
|
15354
|
+
// ../shared/dist/chunk-M7MDPQ5F.mjs
|
|
15355
15355
|
var MCPServerCategory = {
|
|
15356
15356
|
COMMUNICATION: "communication",
|
|
15357
15357
|
PRODUCTIVITY: "productivity",
|
|
@@ -15600,6 +15600,449 @@ function separateToolIds(toolIds) {
|
|
|
15600
15600
|
function isDataConnectionToolId(toolId) {
|
|
15601
15601
|
return toolId.startsWith("dc:");
|
|
15602
15602
|
}
|
|
15603
|
+
var SURFACE_TYPE_METADATA = {
|
|
15604
|
+
chat: {
|
|
15605
|
+
description: "Website widget, support bots, conversational interfaces. Uses Persona and can optionally accept WebMCP page tools discovered from document.modelContext.",
|
|
15606
|
+
useCases: [
|
|
15607
|
+
"customer support",
|
|
15608
|
+
"onboarding",
|
|
15609
|
+
"internal tools",
|
|
15610
|
+
"FAQ bots",
|
|
15611
|
+
"page-aware assistants"
|
|
15612
|
+
],
|
|
15613
|
+
examples: [
|
|
15614
|
+
"Support chatbot",
|
|
15615
|
+
"Sales assistant widget",
|
|
15616
|
+
"Internal help desk",
|
|
15617
|
+
"Storefront assistant with browser-side cart/search tools"
|
|
15618
|
+
],
|
|
15619
|
+
traits: {
|
|
15620
|
+
streaming: "required",
|
|
15621
|
+
messagesMutable: false,
|
|
15622
|
+
deliveryModel: "real_time",
|
|
15623
|
+
mediaSupport: "images",
|
|
15624
|
+
textMediaDelivery: "inline_html",
|
|
15625
|
+
interactiveUI: "generative",
|
|
15626
|
+
inboundMediaSupport: true,
|
|
15627
|
+
consumerType: "human",
|
|
15628
|
+
approvalAnswerable: true,
|
|
15629
|
+
reasoningVisibility: "pass_through",
|
|
15630
|
+
markdownDialect: "mdx",
|
|
15631
|
+
threadModel: "flat",
|
|
15632
|
+
senderIdentity: "anonymous",
|
|
15633
|
+
maxResponseLength: null,
|
|
15634
|
+
executionHint: null
|
|
15635
|
+
},
|
|
15636
|
+
behaviorTypeRef: "runtype://types/surface-configs"
|
|
15637
|
+
},
|
|
15638
|
+
api: {
|
|
15639
|
+
description: "Programmatic HTTP endpoints for backend integrations",
|
|
15640
|
+
useCases: ["backend automation", "third-party integrations", "data pipelines"],
|
|
15641
|
+
examples: ["REST API for data processing", "Webhook consumer", "Integration endpoint"],
|
|
15642
|
+
traits: {
|
|
15643
|
+
streaming: "optional",
|
|
15644
|
+
messagesMutable: false,
|
|
15645
|
+
deliveryModel: "sync",
|
|
15646
|
+
mediaSupport: "none",
|
|
15647
|
+
textMediaDelivery: "none",
|
|
15648
|
+
interactiveUI: "none",
|
|
15649
|
+
inboundMediaSupport: true,
|
|
15650
|
+
consumerType: "machine",
|
|
15651
|
+
approvalAnswerable: true,
|
|
15652
|
+
reasoningVisibility: "pass_through",
|
|
15653
|
+
markdownDialect: "none",
|
|
15654
|
+
threadModel: "flat",
|
|
15655
|
+
senderIdentity: "authenticated",
|
|
15656
|
+
maxResponseLength: null,
|
|
15657
|
+
executionHint: null
|
|
15658
|
+
},
|
|
15659
|
+
behaviorTypeRef: "runtype://types/surface-configs"
|
|
15660
|
+
},
|
|
15661
|
+
mcp: {
|
|
15662
|
+
description: "AI assistant integration (Cursor, Claude Code, etc.)",
|
|
15663
|
+
useCases: ["developer tools", "AI-powered workflows", "code assistants"],
|
|
15664
|
+
examples: ["Code review tool for Cursor", "Documentation assistant", "Database query tool"],
|
|
15665
|
+
traits: {
|
|
15666
|
+
streaming: "optional",
|
|
15667
|
+
messagesMutable: false,
|
|
15668
|
+
deliveryModel: "sync",
|
|
15669
|
+
mediaSupport: "none",
|
|
15670
|
+
textMediaDelivery: "none",
|
|
15671
|
+
interactiveUI: "none",
|
|
15672
|
+
inboundMediaSupport: false,
|
|
15673
|
+
consumerType: "agent",
|
|
15674
|
+
approvalAnswerable: true,
|
|
15675
|
+
reasoningVisibility: "pass_through",
|
|
15676
|
+
markdownDialect: "none",
|
|
15677
|
+
threadModel: "flat",
|
|
15678
|
+
senderIdentity: "authenticated",
|
|
15679
|
+
maxResponseLength: null,
|
|
15680
|
+
executionHint: null
|
|
15681
|
+
},
|
|
15682
|
+
behaviorTypeRef: "runtype://types/surface-configs"
|
|
15683
|
+
},
|
|
15684
|
+
email: {
|
|
15685
|
+
description: "Email-triggered processing and automated responses",
|
|
15686
|
+
useCases: ["email automation", "support ticket creation", "document processing"],
|
|
15687
|
+
examples: ["Auto-reply support agent", "Invoice processor", "Email-to-task converter"],
|
|
15688
|
+
traits: {
|
|
15689
|
+
streaming: "none",
|
|
15690
|
+
messagesMutable: false,
|
|
15691
|
+
deliveryModel: "async",
|
|
15692
|
+
// Email delivers no native attachments — the adapter ignores
|
|
15693
|
+
// OutboundMessage.media; images only render via inline HTML <img>.
|
|
15694
|
+
mediaSupport: "images",
|
|
15695
|
+
textMediaDelivery: "inline_html",
|
|
15696
|
+
interactiveUI: "none",
|
|
15697
|
+
inboundMediaSupport: true,
|
|
15698
|
+
consumerType: "human",
|
|
15699
|
+
approvalAnswerable: false,
|
|
15700
|
+
reasoningVisibility: "always_strip",
|
|
15701
|
+
markdownDialect: "html",
|
|
15702
|
+
threadModel: "reply_chain",
|
|
15703
|
+
senderIdentity: "verified",
|
|
15704
|
+
maxResponseLength: null,
|
|
15705
|
+
executionHint: "You are responding via email. Write in a professional, organized tone. Use clear paragraphs. Avoid bullet-point overload \u2014 prefer flowing prose where appropriate. Do not include reasoning traces, tool call narration, or internal process details in your response."
|
|
15706
|
+
},
|
|
15707
|
+
behaviorTypeRef: "runtype://types/surface-configs"
|
|
15708
|
+
},
|
|
15709
|
+
webhook: {
|
|
15710
|
+
description: "Event-driven processing from third-party services. Accepts JSON and form-encoded (application/x-www-form-urlencoded) payloads. Payloads are never treated as a Runtype envelope; the full parsed body is sent under `payload` in the execution message. Parsed top-level fields are also spread into flow inputs so `{{field}}` template variables resolve in prompt and api-call step bodies; optional `behavior.inputMapping` renames or deep-picks fields by dot path. Optional `behavior.response` returns a static HTTP body (e.g. empty TwiML) for providers that require specific ACK shapes \u2014 when set, the flow fires async.",
|
|
15711
|
+
useCases: ["event processing", "data sync", "notifications"],
|
|
15712
|
+
examples: [
|
|
15713
|
+
"Stripe payment handler",
|
|
15714
|
+
"GitHub event processor",
|
|
15715
|
+
"Twilio inbound SMS (empty TwiML ACK, no reply)",
|
|
15716
|
+
"Shopify order webhook (204 ACK)"
|
|
15717
|
+
],
|
|
15718
|
+
traits: {
|
|
15719
|
+
streaming: "none",
|
|
15720
|
+
messagesMutable: false,
|
|
15721
|
+
deliveryModel: "sync",
|
|
15722
|
+
mediaSupport: "none",
|
|
15723
|
+
textMediaDelivery: "none",
|
|
15724
|
+
interactiveUI: "none",
|
|
15725
|
+
inboundMediaSupport: false,
|
|
15726
|
+
consumerType: "machine",
|
|
15727
|
+
approvalAnswerable: false,
|
|
15728
|
+
reasoningVisibility: "pass_through",
|
|
15729
|
+
markdownDialect: "none",
|
|
15730
|
+
threadModel: "flat",
|
|
15731
|
+
senderIdentity: "authenticated",
|
|
15732
|
+
maxResponseLength: null,
|
|
15733
|
+
executionHint: null
|
|
15734
|
+
},
|
|
15735
|
+
behaviorTypeRef: "runtype://types/surface-configs"
|
|
15736
|
+
},
|
|
15737
|
+
// @snake-case-ok: matches FPO schema surface type enum
|
|
15738
|
+
mcp_code: {
|
|
15739
|
+
description: "Code Mode MCP server for programmatic AI agent access",
|
|
15740
|
+
useCases: ["advanced agent integrations", "custom automation scripts"],
|
|
15741
|
+
examples: ["Programmatic flow executor", "Batch processing agent"],
|
|
15742
|
+
traits: {
|
|
15743
|
+
streaming: "optional",
|
|
15744
|
+
messagesMutable: false,
|
|
15745
|
+
deliveryModel: "sync",
|
|
15746
|
+
mediaSupport: "none",
|
|
15747
|
+
textMediaDelivery: "none",
|
|
15748
|
+
interactiveUI: "none",
|
|
15749
|
+
inboundMediaSupport: false,
|
|
15750
|
+
consumerType: "agent",
|
|
15751
|
+
approvalAnswerable: true,
|
|
15752
|
+
reasoningVisibility: "pass_through",
|
|
15753
|
+
markdownDialect: "none",
|
|
15754
|
+
threadModel: "flat",
|
|
15755
|
+
senderIdentity: "authenticated",
|
|
15756
|
+
maxResponseLength: null,
|
|
15757
|
+
executionHint: null
|
|
15758
|
+
},
|
|
15759
|
+
behaviorTypeRef: "runtype://types/surface-configs"
|
|
15760
|
+
},
|
|
15761
|
+
slack: {
|
|
15762
|
+
description: "Slack bot integration for team collaboration",
|
|
15763
|
+
useCases: ["team notifications", "internal tools", "workflow automation"],
|
|
15764
|
+
examples: ["Support bot in Slack", "Daily standup summarizer", "Alert channel manager"],
|
|
15765
|
+
traits: {
|
|
15766
|
+
streaming: "optional",
|
|
15767
|
+
messagesMutable: true,
|
|
15768
|
+
deliveryModel: "real_time",
|
|
15769
|
+
mediaSupport: "rich",
|
|
15770
|
+
textMediaDelivery: "link",
|
|
15771
|
+
interactiveUI: "forms",
|
|
15772
|
+
inboundMediaSupport: true,
|
|
15773
|
+
consumerType: "human",
|
|
15774
|
+
approvalAnswerable: false,
|
|
15775
|
+
reasoningVisibility: "always_strip",
|
|
15776
|
+
markdownDialect: "mrkdwn",
|
|
15777
|
+
threadModel: "threaded",
|
|
15778
|
+
senderIdentity: "authenticated",
|
|
15779
|
+
maxResponseLength: 4e3,
|
|
15780
|
+
executionHint: "You are responding in Slack. Be concise and direct \u2014 Slack messages should be scannable. Avoid lengthy prose. Do not include reasoning traces or tool call narration."
|
|
15781
|
+
},
|
|
15782
|
+
behaviorTypeRef: "runtype://types/surface-configs"
|
|
15783
|
+
},
|
|
15784
|
+
schedule: {
|
|
15785
|
+
description: "Optional management/presentation surface for scheduled jobs; executable cron or one-time triggers live in top-level schedules[] or Schedule records",
|
|
15786
|
+
useCases: [
|
|
15787
|
+
"schedule management UI",
|
|
15788
|
+
"scheduled report overview",
|
|
15789
|
+
"periodic monitoring dashboard"
|
|
15790
|
+
],
|
|
15791
|
+
examples: [
|
|
15792
|
+
"Daily report schedule manager",
|
|
15793
|
+
"Weekly data sync overview",
|
|
15794
|
+
"Hourly health check monitor"
|
|
15795
|
+
],
|
|
15796
|
+
traits: {
|
|
15797
|
+
streaming: "none",
|
|
15798
|
+
messagesMutable: false,
|
|
15799
|
+
deliveryModel: "async",
|
|
15800
|
+
mediaSupport: "none",
|
|
15801
|
+
textMediaDelivery: "none",
|
|
15802
|
+
interactiveUI: "none",
|
|
15803
|
+
inboundMediaSupport: false,
|
|
15804
|
+
consumerType: "machine",
|
|
15805
|
+
approvalAnswerable: false,
|
|
15806
|
+
reasoningVisibility: "always_strip",
|
|
15807
|
+
markdownDialect: "none",
|
|
15808
|
+
threadModel: "flat",
|
|
15809
|
+
senderIdentity: "authenticated",
|
|
15810
|
+
maxResponseLength: null,
|
|
15811
|
+
executionHint: null
|
|
15812
|
+
},
|
|
15813
|
+
behaviorTypeRef: "runtype://types/surface-configs"
|
|
15814
|
+
},
|
|
15815
|
+
sms: {
|
|
15816
|
+
description: "SMS messaging for mobile-first interactions",
|
|
15817
|
+
useCases: ["SMS support", "appointment reminders", "two-way texting"],
|
|
15818
|
+
examples: ["SMS support agent", "Appointment reminder bot", "Survey collector"],
|
|
15819
|
+
traits: {
|
|
15820
|
+
streaming: "none",
|
|
15821
|
+
messagesMutable: false,
|
|
15822
|
+
deliveryModel: "async",
|
|
15823
|
+
mediaSupport: "none",
|
|
15824
|
+
textMediaDelivery: "none",
|
|
15825
|
+
interactiveUI: "none",
|
|
15826
|
+
inboundMediaSupport: false,
|
|
15827
|
+
consumerType: "human",
|
|
15828
|
+
approvalAnswerable: false,
|
|
15829
|
+
reasoningVisibility: "always_strip",
|
|
15830
|
+
markdownDialect: "none",
|
|
15831
|
+
threadModel: "flat",
|
|
15832
|
+
senderIdentity: "verified",
|
|
15833
|
+
maxResponseLength: 160,
|
|
15834
|
+
executionHint: "You are responding via SMS. Be extremely brief \u2014 ideally one or two short sentences. Plain text only, no markdown, no lists. Get straight to the point. Do not include reasoning traces or process narration."
|
|
15835
|
+
}
|
|
15836
|
+
},
|
|
15837
|
+
imessage: {
|
|
15838
|
+
description: "iMessage messaging via Sendblue for Apple ecosystem interactions",
|
|
15839
|
+
useCases: ["customer support", "appointment reminders", "rich messaging", "two-way texting"],
|
|
15840
|
+
examples: ["iMessage support agent", "Appointment reminder bot", "Rich media messaging bot"],
|
|
15841
|
+
traits: {
|
|
15842
|
+
streaming: "none",
|
|
15843
|
+
messagesMutable: false,
|
|
15844
|
+
deliveryModel: "async",
|
|
15845
|
+
mediaSupport: "images",
|
|
15846
|
+
textMediaDelivery: "link",
|
|
15847
|
+
interactiveUI: "none",
|
|
15848
|
+
inboundMediaSupport: true,
|
|
15849
|
+
consumerType: "human",
|
|
15850
|
+
approvalAnswerable: false,
|
|
15851
|
+
reasoningVisibility: "always_strip",
|
|
15852
|
+
markdownDialect: "none",
|
|
15853
|
+
threadModel: "flat",
|
|
15854
|
+
senderIdentity: "verified",
|
|
15855
|
+
// ~4 short bubbles' worth of headroom. The adapter splits on paragraph
|
|
15856
|
+
// boundaries before sending; this cap signals to the model that long is
|
|
15857
|
+
// wrong without imposing a hard truncate that would clip mid-thought.
|
|
15858
|
+
maxResponseLength: 1200,
|
|
15859
|
+
executionHint: [
|
|
15860
|
+
"You are responding via iMessage. Hard rules:",
|
|
15861
|
+
"- Plain text only. No markdown \u2014 no **bold**, no # headings, no - bullets, no `code`, no > quotes, no fenced code blocks.",
|
|
15862
|
+
"- 1\u20133 sentences per reply, under 300 characters total when possible.",
|
|
15863
|
+
"- Texting tone: conversational, lowercase is fine, contractions welcome.",
|
|
15864
|
+
'- No greetings ("Hi!", "Hey there!") and no closings ("Let me know!", "Hope this helps!").',
|
|
15865
|
+
`- No AI disclaimers ("As an AI...", "I cannot...", "I'd be happy to help").`,
|
|
15866
|
+
"- One emoji max, only when it fits naturally.",
|
|
15867
|
+
"- For multi-part replies, separate logical chunks with a blank line \u2014 each chunk becomes its own bubble.",
|
|
15868
|
+
"- Do not include reasoning traces or process narration."
|
|
15869
|
+
].join("\n")
|
|
15870
|
+
}
|
|
15871
|
+
},
|
|
15872
|
+
discord: {
|
|
15873
|
+
description: "Discord bot for community engagement",
|
|
15874
|
+
useCases: ["community support", "moderation", "server management"],
|
|
15875
|
+
examples: ["Community FAQ bot", "Moderation assistant", "Welcome bot"],
|
|
15876
|
+
traits: {
|
|
15877
|
+
streaming: "optional",
|
|
15878
|
+
messagesMutable: true,
|
|
15879
|
+
deliveryModel: "real_time",
|
|
15880
|
+
mediaSupport: "rich",
|
|
15881
|
+
textMediaDelivery: "link",
|
|
15882
|
+
interactiveUI: "buttons",
|
|
15883
|
+
inboundMediaSupport: true,
|
|
15884
|
+
consumerType: "human",
|
|
15885
|
+
approvalAnswerable: false,
|
|
15886
|
+
reasoningVisibility: "always_strip",
|
|
15887
|
+
markdownDialect: "markdown",
|
|
15888
|
+
threadModel: "threaded",
|
|
15889
|
+
senderIdentity: "authenticated",
|
|
15890
|
+
maxResponseLength: null,
|
|
15891
|
+
executionHint: "You are responding in a Discord server. Keep your tone friendly and community-appropriate. Markdown formatting is supported. Be concise. Do not include reasoning traces or tool call narration."
|
|
15892
|
+
}
|
|
15893
|
+
},
|
|
15894
|
+
whatsapp: {
|
|
15895
|
+
description: "WhatsApp Business integration for customer communication",
|
|
15896
|
+
useCases: ["customer support", "order updates", "appointment scheduling"],
|
|
15897
|
+
examples: ["WhatsApp support bot", "Order tracking assistant", "Booking agent"],
|
|
15898
|
+
traits: {
|
|
15899
|
+
streaming: "none",
|
|
15900
|
+
messagesMutable: false,
|
|
15901
|
+
deliveryModel: "async",
|
|
15902
|
+
mediaSupport: "rich",
|
|
15903
|
+
textMediaDelivery: "link",
|
|
15904
|
+
interactiveUI: "buttons",
|
|
15905
|
+
inboundMediaSupport: true,
|
|
15906
|
+
consumerType: "human",
|
|
15907
|
+
approvalAnswerable: false,
|
|
15908
|
+
reasoningVisibility: "always_strip",
|
|
15909
|
+
markdownDialect: "none",
|
|
15910
|
+
threadModel: "flat",
|
|
15911
|
+
senderIdentity: "verified",
|
|
15912
|
+
maxResponseLength: 1024,
|
|
15913
|
+
executionHint: "You are responding via WhatsApp. Keep responses concise and conversational \u2014 WhatsApp is a messaging app, not email. Plain text works best. Avoid lengthy explanations. Do not include reasoning traces or process narration."
|
|
15914
|
+
}
|
|
15915
|
+
},
|
|
15916
|
+
telegram: {
|
|
15917
|
+
description: "Telegram bot for messaging-based interactions",
|
|
15918
|
+
useCases: ["customer support", "notifications", "group management"],
|
|
15919
|
+
examples: ["Telegram support bot", "News alert bot", "Group admin assistant"],
|
|
15920
|
+
traits: {
|
|
15921
|
+
streaming: "none",
|
|
15922
|
+
messagesMutable: true,
|
|
15923
|
+
deliveryModel: "real_time",
|
|
15924
|
+
mediaSupport: "rich",
|
|
15925
|
+
textMediaDelivery: "native",
|
|
15926
|
+
interactiveUI: "buttons",
|
|
15927
|
+
inboundMediaSupport: true,
|
|
15928
|
+
consumerType: "human",
|
|
15929
|
+
approvalAnswerable: false,
|
|
15930
|
+
reasoningVisibility: "always_strip",
|
|
15931
|
+
markdownDialect: "html",
|
|
15932
|
+
threadModel: "flat",
|
|
15933
|
+
senderIdentity: "authenticated",
|
|
15934
|
+
maxResponseLength: 4096,
|
|
15935
|
+
executionHint: "You are responding via Telegram. Be clear and concise. Keep messages focused and avoid unnecessary verbosity. Do not include reasoning traces or tool call narration."
|
|
15936
|
+
}
|
|
15937
|
+
},
|
|
15938
|
+
messaging: {
|
|
15939
|
+
description: "Generic messaging surface for multi-channel delivery",
|
|
15940
|
+
useCases: ["multi-channel support", "unified messaging", "channel-agnostic bots"],
|
|
15941
|
+
examples: ["Multi-channel support bot", "Unified messaging gateway", "Channel router"],
|
|
15942
|
+
traits: {
|
|
15943
|
+
streaming: "optional",
|
|
15944
|
+
messagesMutable: false,
|
|
15945
|
+
deliveryModel: "real_time",
|
|
15946
|
+
mediaSupport: "images",
|
|
15947
|
+
textMediaDelivery: "link",
|
|
15948
|
+
interactiveUI: "none",
|
|
15949
|
+
inboundMediaSupport: false,
|
|
15950
|
+
consumerType: "human",
|
|
15951
|
+
approvalAnswerable: false,
|
|
15952
|
+
reasoningVisibility: "always_strip",
|
|
15953
|
+
markdownDialect: "none",
|
|
15954
|
+
threadModel: "flat",
|
|
15955
|
+
senderIdentity: "anonymous",
|
|
15956
|
+
maxResponseLength: null,
|
|
15957
|
+
executionHint: "You are responding via a messaging surface. Be clear and concise. Plain text is safest \u2014 avoid complex formatting. Do not include reasoning traces or tool call narration in your response."
|
|
15958
|
+
}
|
|
15959
|
+
},
|
|
15960
|
+
a2a: {
|
|
15961
|
+
description: "Agent-to-agent communication protocol",
|
|
15962
|
+
useCases: ["multi-agent workflows", "agent orchestration", "distributed processing"],
|
|
15963
|
+
examples: ["Agent coordinator", "Distributed pipeline", "Multi-agent research system"],
|
|
15964
|
+
traits: {
|
|
15965
|
+
streaming: "optional",
|
|
15966
|
+
messagesMutable: false,
|
|
15967
|
+
deliveryModel: "sync",
|
|
15968
|
+
mediaSupport: "none",
|
|
15969
|
+
textMediaDelivery: "none",
|
|
15970
|
+
interactiveUI: "none",
|
|
15971
|
+
inboundMediaSupport: false,
|
|
15972
|
+
consumerType: "agent",
|
|
15973
|
+
approvalAnswerable: true,
|
|
15974
|
+
reasoningVisibility: "pass_through",
|
|
15975
|
+
markdownDialect: "none",
|
|
15976
|
+
threadModel: "flat",
|
|
15977
|
+
senderIdentity: "authenticated",
|
|
15978
|
+
maxResponseLength: null,
|
|
15979
|
+
executionHint: null
|
|
15980
|
+
}
|
|
15981
|
+
},
|
|
15982
|
+
// @snake-case-ok: surface type identifier
|
|
15983
|
+
chrome_extension: {
|
|
15984
|
+
description: "Downloadable Manifest V3 Chrome extension embedding the agent in the browser side panel, with packaged browser tools (read page, fill forms, navigate tabs) executed locally via the WebMCP client-tool loop.",
|
|
15985
|
+
useCases: [
|
|
15986
|
+
"browser copilots",
|
|
15987
|
+
"page-aware assistants",
|
|
15988
|
+
"form filling and data extraction",
|
|
15989
|
+
"internal browser tooling"
|
|
15990
|
+
],
|
|
15991
|
+
examples: [
|
|
15992
|
+
"CRM sidekick that reads and updates records on the page",
|
|
15993
|
+
"Research assistant that summarizes and compares open tabs",
|
|
15994
|
+
"Support agent that drafts replies inside a ticketing UI"
|
|
15995
|
+
],
|
|
15996
|
+
traits: {
|
|
15997
|
+
streaming: "required",
|
|
15998
|
+
messagesMutable: false,
|
|
15999
|
+
deliveryModel: "real_time",
|
|
16000
|
+
mediaSupport: "images",
|
|
16001
|
+
textMediaDelivery: "inline_html",
|
|
16002
|
+
interactiveUI: "generative",
|
|
16003
|
+
inboundMediaSupport: true,
|
|
16004
|
+
consumerType: "human",
|
|
16005
|
+
approvalAnswerable: true,
|
|
16006
|
+
reasoningVisibility: "pass_through",
|
|
16007
|
+
markdownDialect: "mdx",
|
|
16008
|
+
threadModel: "flat",
|
|
16009
|
+
senderIdentity: "anonymous",
|
|
16010
|
+
maxResponseLength: null,
|
|
16011
|
+
executionHint: "You are running inside a Chrome extension side panel. You may have browser tools (chrome:*) to read the current page, interact with forms, and manage tabs \u2014 use them when the user asks about or wants to act on the page they are viewing. Mutating actions (clicking, filling, navigating) ask the user for confirmation before running."
|
|
16012
|
+
},
|
|
16013
|
+
behaviorTypeRef: "runtype://types/surface-configs"
|
|
16014
|
+
},
|
|
16015
|
+
"ag-ui": {
|
|
16016
|
+
description: "AG-UI protocol endpoint (agent-to-user event stream over SSE)",
|
|
16017
|
+
useCases: ["custom agent frontends", "CopilotKit / AG-UI clients", "embedded agent UIs"],
|
|
16018
|
+
examples: ["CopilotKit app", "Custom React agent UI", "AG-UI dojo client"],
|
|
16019
|
+
// Staging-test phase (`enable-ag-ui-surface` flag): keep the type out of
|
|
16020
|
+
// agent-facing catalogs until GA. Runtime trait lookups still resolve.
|
|
16021
|
+
hiddenFromCatalog: true,
|
|
16022
|
+
traits: {
|
|
16023
|
+
streaming: "required",
|
|
16024
|
+
messagesMutable: false,
|
|
16025
|
+
deliveryModel: "real_time",
|
|
16026
|
+
mediaSupport: "none",
|
|
16027
|
+
textMediaDelivery: "none",
|
|
16028
|
+
interactiveUI: "none",
|
|
16029
|
+
inboundMediaSupport: false,
|
|
16030
|
+
consumerType: "machine",
|
|
16031
|
+
approvalAnswerable: true,
|
|
16032
|
+
reasoningVisibility: "pass_through",
|
|
16033
|
+
markdownDialect: "markdown",
|
|
16034
|
+
threadModel: "flat",
|
|
16035
|
+
senderIdentity: "authenticated",
|
|
16036
|
+
maxResponseLength: null,
|
|
16037
|
+
executionHint: null
|
|
16038
|
+
}
|
|
16039
|
+
}
|
|
16040
|
+
};
|
|
16041
|
+
var EMAIL_HTML_CAPABILITY_HINT = [
|
|
16042
|
+
"## Channel capabilities",
|
|
16043
|
+
'- Formatting: author the reply as an HTML email body. Write well-formed HTML and put all styling in inline `style="..."` attributes (no `<style>` blocks, no external CSS). Use semantic tags freely: `<p>`, `<h1>`-`<h3>`, `<ul>`/`<ol>`/`<li>`, `<table>`, `<a>`, `<strong>`/`<em>`, `<blockquote>`, `<img>`. Do NOT emit `<script>`, `<iframe>`, `<head>`, `<body>`, or `<html>` wrappers: Runtype wraps your body in the email document and strips any active or unsafe content before sending.',
|
|
16044
|
+
'- Images: embed an image with `<img src="https://..." alt="...">` and it renders inline in the email. (Some clients ask the recipient to load remote images.)'
|
|
16045
|
+
].join("\n");
|
|
15603
16046
|
var ORTHOGONAL_PLATFORM_TOOLS = [
|
|
15604
16047
|
{
|
|
15605
16048
|
"id": "orthogonal:agentmail:create_draft",
|
|
@@ -32594,451 +33037,8 @@ var GRANOLA_INTEGRATION = {
|
|
|
32594
33037
|
}
|
|
32595
33038
|
]
|
|
32596
33039
|
};
|
|
32597
|
-
var SURFACE_TYPE_METADATA = {
|
|
32598
|
-
chat: {
|
|
32599
|
-
description: "Website widget, support bots, conversational interfaces. Uses Persona and can optionally accept WebMCP page tools discovered from document.modelContext.",
|
|
32600
|
-
useCases: [
|
|
32601
|
-
"customer support",
|
|
32602
|
-
"onboarding",
|
|
32603
|
-
"internal tools",
|
|
32604
|
-
"FAQ bots",
|
|
32605
|
-
"page-aware assistants"
|
|
32606
|
-
],
|
|
32607
|
-
examples: [
|
|
32608
|
-
"Support chatbot",
|
|
32609
|
-
"Sales assistant widget",
|
|
32610
|
-
"Internal help desk",
|
|
32611
|
-
"Storefront assistant with browser-side cart/search tools"
|
|
32612
|
-
],
|
|
32613
|
-
traits: {
|
|
32614
|
-
streaming: "required",
|
|
32615
|
-
messagesMutable: false,
|
|
32616
|
-
deliveryModel: "real_time",
|
|
32617
|
-
mediaSupport: "images",
|
|
32618
|
-
textMediaDelivery: "inline_html",
|
|
32619
|
-
interactiveUI: "generative",
|
|
32620
|
-
inboundMediaSupport: true,
|
|
32621
|
-
consumerType: "human",
|
|
32622
|
-
approvalAnswerable: true,
|
|
32623
|
-
reasoningVisibility: "pass_through",
|
|
32624
|
-
markdownDialect: "mdx",
|
|
32625
|
-
threadModel: "flat",
|
|
32626
|
-
senderIdentity: "anonymous",
|
|
32627
|
-
maxResponseLength: null,
|
|
32628
|
-
executionHint: null
|
|
32629
|
-
},
|
|
32630
|
-
behaviorTypeRef: "runtype://types/surface-configs"
|
|
32631
|
-
},
|
|
32632
|
-
api: {
|
|
32633
|
-
description: "Programmatic HTTP endpoints for backend integrations",
|
|
32634
|
-
useCases: ["backend automation", "third-party integrations", "data pipelines"],
|
|
32635
|
-
examples: ["REST API for data processing", "Webhook consumer", "Integration endpoint"],
|
|
32636
|
-
traits: {
|
|
32637
|
-
streaming: "optional",
|
|
32638
|
-
messagesMutable: false,
|
|
32639
|
-
deliveryModel: "sync",
|
|
32640
|
-
mediaSupport: "none",
|
|
32641
|
-
textMediaDelivery: "none",
|
|
32642
|
-
interactiveUI: "none",
|
|
32643
|
-
inboundMediaSupport: true,
|
|
32644
|
-
consumerType: "machine",
|
|
32645
|
-
approvalAnswerable: true,
|
|
32646
|
-
reasoningVisibility: "pass_through",
|
|
32647
|
-
markdownDialect: "none",
|
|
32648
|
-
threadModel: "flat",
|
|
32649
|
-
senderIdentity: "authenticated",
|
|
32650
|
-
maxResponseLength: null,
|
|
32651
|
-
executionHint: null
|
|
32652
|
-
},
|
|
32653
|
-
behaviorTypeRef: "runtype://types/surface-configs"
|
|
32654
|
-
},
|
|
32655
|
-
mcp: {
|
|
32656
|
-
description: "AI assistant integration (Cursor, Claude Code, etc.)",
|
|
32657
|
-
useCases: ["developer tools", "AI-powered workflows", "code assistants"],
|
|
32658
|
-
examples: ["Code review tool for Cursor", "Documentation assistant", "Database query tool"],
|
|
32659
|
-
traits: {
|
|
32660
|
-
streaming: "optional",
|
|
32661
|
-
messagesMutable: false,
|
|
32662
|
-
deliveryModel: "sync",
|
|
32663
|
-
mediaSupport: "none",
|
|
32664
|
-
textMediaDelivery: "none",
|
|
32665
|
-
interactiveUI: "none",
|
|
32666
|
-
inboundMediaSupport: false,
|
|
32667
|
-
consumerType: "agent",
|
|
32668
|
-
approvalAnswerable: true,
|
|
32669
|
-
reasoningVisibility: "pass_through",
|
|
32670
|
-
markdownDialect: "none",
|
|
32671
|
-
threadModel: "flat",
|
|
32672
|
-
senderIdentity: "authenticated",
|
|
32673
|
-
maxResponseLength: null,
|
|
32674
|
-
executionHint: null
|
|
32675
|
-
},
|
|
32676
|
-
behaviorTypeRef: "runtype://types/surface-configs"
|
|
32677
|
-
},
|
|
32678
|
-
email: {
|
|
32679
|
-
description: "Email-triggered processing and automated responses",
|
|
32680
|
-
useCases: ["email automation", "support ticket creation", "document processing"],
|
|
32681
|
-
examples: ["Auto-reply support agent", "Invoice processor", "Email-to-task converter"],
|
|
32682
|
-
traits: {
|
|
32683
|
-
streaming: "none",
|
|
32684
|
-
messagesMutable: false,
|
|
32685
|
-
deliveryModel: "async",
|
|
32686
|
-
// Email delivers no native attachments — the adapter ignores
|
|
32687
|
-
// OutboundMessage.media; images only render via inline HTML <img>.
|
|
32688
|
-
mediaSupport: "images",
|
|
32689
|
-
textMediaDelivery: "inline_html",
|
|
32690
|
-
interactiveUI: "none",
|
|
32691
|
-
inboundMediaSupport: true,
|
|
32692
|
-
consumerType: "human",
|
|
32693
|
-
approvalAnswerable: false,
|
|
32694
|
-
reasoningVisibility: "always_strip",
|
|
32695
|
-
markdownDialect: "html",
|
|
32696
|
-
threadModel: "reply_chain",
|
|
32697
|
-
senderIdentity: "verified",
|
|
32698
|
-
maxResponseLength: null,
|
|
32699
|
-
executionHint: "You are responding via email. Write in a professional, organized tone. Use clear paragraphs. Avoid bullet-point overload \u2014 prefer flowing prose where appropriate. Do not include reasoning traces, tool call narration, or internal process details in your response."
|
|
32700
|
-
},
|
|
32701
|
-
behaviorTypeRef: "runtype://types/surface-configs"
|
|
32702
|
-
},
|
|
32703
|
-
webhook: {
|
|
32704
|
-
description: "Event-driven processing from third-party services. Accepts JSON and form-encoded (application/x-www-form-urlencoded) payloads. Payloads are never treated as a Runtype envelope; the full parsed body is sent under `payload` in the execution message. Parsed top-level fields are also spread into flow inputs so `{{field}}` template variables resolve in prompt and api-call step bodies; optional `behavior.inputMapping` renames or deep-picks fields by dot path. Optional `behavior.response` returns a static HTTP body (e.g. empty TwiML) for providers that require specific ACK shapes \u2014 when set, the flow fires async.",
|
|
32705
|
-
useCases: ["event processing", "data sync", "notifications"],
|
|
32706
|
-
examples: [
|
|
32707
|
-
"Stripe payment handler",
|
|
32708
|
-
"GitHub event processor",
|
|
32709
|
-
"Twilio inbound SMS (empty TwiML ACK, no reply)",
|
|
32710
|
-
"Shopify order webhook (204 ACK)"
|
|
32711
|
-
],
|
|
32712
|
-
traits: {
|
|
32713
|
-
streaming: "none",
|
|
32714
|
-
messagesMutable: false,
|
|
32715
|
-
deliveryModel: "sync",
|
|
32716
|
-
mediaSupport: "none",
|
|
32717
|
-
textMediaDelivery: "none",
|
|
32718
|
-
interactiveUI: "none",
|
|
32719
|
-
inboundMediaSupport: false,
|
|
32720
|
-
consumerType: "machine",
|
|
32721
|
-
approvalAnswerable: false,
|
|
32722
|
-
reasoningVisibility: "pass_through",
|
|
32723
|
-
markdownDialect: "none",
|
|
32724
|
-
threadModel: "flat",
|
|
32725
|
-
senderIdentity: "authenticated",
|
|
32726
|
-
maxResponseLength: null,
|
|
32727
|
-
executionHint: null
|
|
32728
|
-
},
|
|
32729
|
-
behaviorTypeRef: "runtype://types/surface-configs"
|
|
32730
|
-
},
|
|
32731
|
-
// @snake-case-ok: matches FPO schema surface type enum
|
|
32732
|
-
mcp_code: {
|
|
32733
|
-
description: "Code Mode MCP server for programmatic AI agent access",
|
|
32734
|
-
useCases: ["advanced agent integrations", "custom automation scripts"],
|
|
32735
|
-
examples: ["Programmatic flow executor", "Batch processing agent"],
|
|
32736
|
-
traits: {
|
|
32737
|
-
streaming: "optional",
|
|
32738
|
-
messagesMutable: false,
|
|
32739
|
-
deliveryModel: "sync",
|
|
32740
|
-
mediaSupport: "none",
|
|
32741
|
-
textMediaDelivery: "none",
|
|
32742
|
-
interactiveUI: "none",
|
|
32743
|
-
inboundMediaSupport: false,
|
|
32744
|
-
consumerType: "agent",
|
|
32745
|
-
approvalAnswerable: true,
|
|
32746
|
-
reasoningVisibility: "pass_through",
|
|
32747
|
-
markdownDialect: "none",
|
|
32748
|
-
threadModel: "flat",
|
|
32749
|
-
senderIdentity: "authenticated",
|
|
32750
|
-
maxResponseLength: null,
|
|
32751
|
-
executionHint: null
|
|
32752
|
-
},
|
|
32753
|
-
behaviorTypeRef: "runtype://types/surface-configs"
|
|
32754
|
-
},
|
|
32755
|
-
slack: {
|
|
32756
|
-
description: "Slack bot integration for team collaboration",
|
|
32757
|
-
useCases: ["team notifications", "internal tools", "workflow automation"],
|
|
32758
|
-
examples: ["Support bot in Slack", "Daily standup summarizer", "Alert channel manager"],
|
|
32759
|
-
traits: {
|
|
32760
|
-
streaming: "optional",
|
|
32761
|
-
messagesMutable: true,
|
|
32762
|
-
deliveryModel: "real_time",
|
|
32763
|
-
mediaSupport: "rich",
|
|
32764
|
-
textMediaDelivery: "link",
|
|
32765
|
-
interactiveUI: "forms",
|
|
32766
|
-
inboundMediaSupport: true,
|
|
32767
|
-
consumerType: "human",
|
|
32768
|
-
approvalAnswerable: false,
|
|
32769
|
-
reasoningVisibility: "always_strip",
|
|
32770
|
-
markdownDialect: "mrkdwn",
|
|
32771
|
-
threadModel: "threaded",
|
|
32772
|
-
senderIdentity: "authenticated",
|
|
32773
|
-
maxResponseLength: 4e3,
|
|
32774
|
-
executionHint: "You are responding in Slack. Be concise and direct \u2014 Slack messages should be scannable. Avoid lengthy prose. Do not include reasoning traces or tool call narration."
|
|
32775
|
-
},
|
|
32776
|
-
behaviorTypeRef: "runtype://types/surface-configs"
|
|
32777
|
-
},
|
|
32778
|
-
schedule: {
|
|
32779
|
-
description: "Optional management/presentation surface for scheduled jobs; executable cron or one-time triggers live in top-level schedules[] or Schedule records",
|
|
32780
|
-
useCases: [
|
|
32781
|
-
"schedule management UI",
|
|
32782
|
-
"scheduled report overview",
|
|
32783
|
-
"periodic monitoring dashboard"
|
|
32784
|
-
],
|
|
32785
|
-
examples: [
|
|
32786
|
-
"Daily report schedule manager",
|
|
32787
|
-
"Weekly data sync overview",
|
|
32788
|
-
"Hourly health check monitor"
|
|
32789
|
-
],
|
|
32790
|
-
traits: {
|
|
32791
|
-
streaming: "none",
|
|
32792
|
-
messagesMutable: false,
|
|
32793
|
-
deliveryModel: "async",
|
|
32794
|
-
mediaSupport: "none",
|
|
32795
|
-
textMediaDelivery: "none",
|
|
32796
|
-
interactiveUI: "none",
|
|
32797
|
-
inboundMediaSupport: false,
|
|
32798
|
-
consumerType: "machine",
|
|
32799
|
-
approvalAnswerable: false,
|
|
32800
|
-
reasoningVisibility: "always_strip",
|
|
32801
|
-
markdownDialect: "none",
|
|
32802
|
-
threadModel: "flat",
|
|
32803
|
-
senderIdentity: "authenticated",
|
|
32804
|
-
maxResponseLength: null,
|
|
32805
|
-
executionHint: null
|
|
32806
|
-
},
|
|
32807
|
-
behaviorTypeRef: "runtype://types/surface-configs"
|
|
32808
|
-
},
|
|
32809
|
-
sms: {
|
|
32810
|
-
description: "SMS messaging for mobile-first interactions",
|
|
32811
|
-
useCases: ["SMS support", "appointment reminders", "two-way texting"],
|
|
32812
|
-
examples: ["SMS support agent", "Appointment reminder bot", "Survey collector"],
|
|
32813
|
-
traits: {
|
|
32814
|
-
streaming: "none",
|
|
32815
|
-
messagesMutable: false,
|
|
32816
|
-
deliveryModel: "async",
|
|
32817
|
-
mediaSupport: "none",
|
|
32818
|
-
textMediaDelivery: "none",
|
|
32819
|
-
interactiveUI: "none",
|
|
32820
|
-
inboundMediaSupport: false,
|
|
32821
|
-
consumerType: "human",
|
|
32822
|
-
approvalAnswerable: false,
|
|
32823
|
-
reasoningVisibility: "always_strip",
|
|
32824
|
-
markdownDialect: "none",
|
|
32825
|
-
threadModel: "flat",
|
|
32826
|
-
senderIdentity: "verified",
|
|
32827
|
-
maxResponseLength: 160,
|
|
32828
|
-
executionHint: "You are responding via SMS. Be extremely brief \u2014 ideally one or two short sentences. Plain text only, no markdown, no lists. Get straight to the point. Do not include reasoning traces or process narration."
|
|
32829
|
-
}
|
|
32830
|
-
},
|
|
32831
|
-
imessage: {
|
|
32832
|
-
description: "iMessage messaging via Sendblue for Apple ecosystem interactions",
|
|
32833
|
-
useCases: ["customer support", "appointment reminders", "rich messaging", "two-way texting"],
|
|
32834
|
-
examples: ["iMessage support agent", "Appointment reminder bot", "Rich media messaging bot"],
|
|
32835
|
-
traits: {
|
|
32836
|
-
streaming: "none",
|
|
32837
|
-
messagesMutable: false,
|
|
32838
|
-
deliveryModel: "async",
|
|
32839
|
-
mediaSupport: "images",
|
|
32840
|
-
textMediaDelivery: "link",
|
|
32841
|
-
interactiveUI: "none",
|
|
32842
|
-
inboundMediaSupport: true,
|
|
32843
|
-
consumerType: "human",
|
|
32844
|
-
approvalAnswerable: false,
|
|
32845
|
-
reasoningVisibility: "always_strip",
|
|
32846
|
-
markdownDialect: "none",
|
|
32847
|
-
threadModel: "flat",
|
|
32848
|
-
senderIdentity: "verified",
|
|
32849
|
-
// ~4 short bubbles' worth of headroom. The adapter splits on paragraph
|
|
32850
|
-
// boundaries before sending; this cap signals to the model that long is
|
|
32851
|
-
// wrong without imposing a hard truncate that would clip mid-thought.
|
|
32852
|
-
maxResponseLength: 1200,
|
|
32853
|
-
executionHint: [
|
|
32854
|
-
"You are responding via iMessage. Hard rules:",
|
|
32855
|
-
"- Plain text only. No markdown \u2014 no **bold**, no # headings, no - bullets, no `code`, no > quotes, no fenced code blocks.",
|
|
32856
|
-
"- 1\u20133 sentences per reply, under 300 characters total when possible.",
|
|
32857
|
-
"- Texting tone: conversational, lowercase is fine, contractions welcome.",
|
|
32858
|
-
'- No greetings ("Hi!", "Hey there!") and no closings ("Let me know!", "Hope this helps!").',
|
|
32859
|
-
`- No AI disclaimers ("As an AI...", "I cannot...", "I'd be happy to help").`,
|
|
32860
|
-
"- One emoji max, only when it fits naturally.",
|
|
32861
|
-
"- For multi-part replies, separate logical chunks with a blank line \u2014 each chunk becomes its own bubble.",
|
|
32862
|
-
"- Do not include reasoning traces or process narration."
|
|
32863
|
-
].join("\n")
|
|
32864
|
-
}
|
|
32865
|
-
},
|
|
32866
|
-
discord: {
|
|
32867
|
-
description: "Discord bot for community engagement",
|
|
32868
|
-
useCases: ["community support", "moderation", "server management"],
|
|
32869
|
-
examples: ["Community FAQ bot", "Moderation assistant", "Welcome bot"],
|
|
32870
|
-
traits: {
|
|
32871
|
-
streaming: "optional",
|
|
32872
|
-
messagesMutable: true,
|
|
32873
|
-
deliveryModel: "real_time",
|
|
32874
|
-
mediaSupport: "rich",
|
|
32875
|
-
textMediaDelivery: "link",
|
|
32876
|
-
interactiveUI: "buttons",
|
|
32877
|
-
inboundMediaSupport: true,
|
|
32878
|
-
consumerType: "human",
|
|
32879
|
-
approvalAnswerable: false,
|
|
32880
|
-
reasoningVisibility: "always_strip",
|
|
32881
|
-
markdownDialect: "markdown",
|
|
32882
|
-
threadModel: "threaded",
|
|
32883
|
-
senderIdentity: "authenticated",
|
|
32884
|
-
maxResponseLength: null,
|
|
32885
|
-
executionHint: "You are responding in a Discord server. Keep your tone friendly and community-appropriate. Markdown formatting is supported. Be concise. Do not include reasoning traces or tool call narration."
|
|
32886
|
-
}
|
|
32887
|
-
},
|
|
32888
|
-
whatsapp: {
|
|
32889
|
-
description: "WhatsApp Business integration for customer communication",
|
|
32890
|
-
useCases: ["customer support", "order updates", "appointment scheduling"],
|
|
32891
|
-
examples: ["WhatsApp support bot", "Order tracking assistant", "Booking agent"],
|
|
32892
|
-
traits: {
|
|
32893
|
-
streaming: "none",
|
|
32894
|
-
messagesMutable: false,
|
|
32895
|
-
deliveryModel: "async",
|
|
32896
|
-
mediaSupport: "rich",
|
|
32897
|
-
textMediaDelivery: "link",
|
|
32898
|
-
interactiveUI: "buttons",
|
|
32899
|
-
inboundMediaSupport: true,
|
|
32900
|
-
consumerType: "human",
|
|
32901
|
-
approvalAnswerable: false,
|
|
32902
|
-
reasoningVisibility: "always_strip",
|
|
32903
|
-
markdownDialect: "none",
|
|
32904
|
-
threadModel: "flat",
|
|
32905
|
-
senderIdentity: "verified",
|
|
32906
|
-
maxResponseLength: 1024,
|
|
32907
|
-
executionHint: "You are responding via WhatsApp. Keep responses concise and conversational \u2014 WhatsApp is a messaging app, not email. Plain text works best. Avoid lengthy explanations. Do not include reasoning traces or process narration."
|
|
32908
|
-
}
|
|
32909
|
-
},
|
|
32910
|
-
telegram: {
|
|
32911
|
-
description: "Telegram bot for messaging-based interactions",
|
|
32912
|
-
useCases: ["customer support", "notifications", "group management"],
|
|
32913
|
-
examples: ["Telegram support bot", "News alert bot", "Group admin assistant"],
|
|
32914
|
-
traits: {
|
|
32915
|
-
streaming: "none",
|
|
32916
|
-
messagesMutable: true,
|
|
32917
|
-
deliveryModel: "real_time",
|
|
32918
|
-
mediaSupport: "rich",
|
|
32919
|
-
textMediaDelivery: "native",
|
|
32920
|
-
interactiveUI: "buttons",
|
|
32921
|
-
inboundMediaSupport: true,
|
|
32922
|
-
consumerType: "human",
|
|
32923
|
-
approvalAnswerable: false,
|
|
32924
|
-
reasoningVisibility: "always_strip",
|
|
32925
|
-
markdownDialect: "html",
|
|
32926
|
-
threadModel: "flat",
|
|
32927
|
-
senderIdentity: "authenticated",
|
|
32928
|
-
maxResponseLength: 4096,
|
|
32929
|
-
executionHint: "You are responding via Telegram. Be clear and concise. Keep messages focused and avoid unnecessary verbosity. Do not include reasoning traces or tool call narration."
|
|
32930
|
-
}
|
|
32931
|
-
},
|
|
32932
|
-
messaging: {
|
|
32933
|
-
description: "Generic messaging surface for multi-channel delivery",
|
|
32934
|
-
useCases: ["multi-channel support", "unified messaging", "channel-agnostic bots"],
|
|
32935
|
-
examples: ["Multi-channel support bot", "Unified messaging gateway", "Channel router"],
|
|
32936
|
-
traits: {
|
|
32937
|
-
streaming: "optional",
|
|
32938
|
-
messagesMutable: false,
|
|
32939
|
-
deliveryModel: "real_time",
|
|
32940
|
-
mediaSupport: "images",
|
|
32941
|
-
textMediaDelivery: "link",
|
|
32942
|
-
interactiveUI: "none",
|
|
32943
|
-
inboundMediaSupport: false,
|
|
32944
|
-
consumerType: "human",
|
|
32945
|
-
approvalAnswerable: false,
|
|
32946
|
-
reasoningVisibility: "always_strip",
|
|
32947
|
-
markdownDialect: "none",
|
|
32948
|
-
threadModel: "flat",
|
|
32949
|
-
senderIdentity: "anonymous",
|
|
32950
|
-
maxResponseLength: null,
|
|
32951
|
-
executionHint: "You are responding via a messaging surface. Be clear and concise. Plain text is safest \u2014 avoid complex formatting. Do not include reasoning traces or tool call narration in your response."
|
|
32952
|
-
}
|
|
32953
|
-
},
|
|
32954
|
-
a2a: {
|
|
32955
|
-
description: "Agent-to-agent communication protocol",
|
|
32956
|
-
useCases: ["multi-agent workflows", "agent orchestration", "distributed processing"],
|
|
32957
|
-
examples: ["Agent coordinator", "Distributed pipeline", "Multi-agent research system"],
|
|
32958
|
-
traits: {
|
|
32959
|
-
streaming: "optional",
|
|
32960
|
-
messagesMutable: false,
|
|
32961
|
-
deliveryModel: "sync",
|
|
32962
|
-
mediaSupport: "none",
|
|
32963
|
-
textMediaDelivery: "none",
|
|
32964
|
-
interactiveUI: "none",
|
|
32965
|
-
inboundMediaSupport: false,
|
|
32966
|
-
consumerType: "agent",
|
|
32967
|
-
approvalAnswerable: true,
|
|
32968
|
-
reasoningVisibility: "pass_through",
|
|
32969
|
-
markdownDialect: "none",
|
|
32970
|
-
threadModel: "flat",
|
|
32971
|
-
senderIdentity: "authenticated",
|
|
32972
|
-
maxResponseLength: null,
|
|
32973
|
-
executionHint: null
|
|
32974
|
-
}
|
|
32975
|
-
},
|
|
32976
|
-
// @snake-case-ok: surface type identifier
|
|
32977
|
-
chrome_extension: {
|
|
32978
|
-
description: "Downloadable Manifest V3 Chrome extension embedding the agent in the browser side panel, with packaged browser tools (read page, fill forms, navigate tabs) executed locally via the WebMCP client-tool loop.",
|
|
32979
|
-
useCases: [
|
|
32980
|
-
"browser copilots",
|
|
32981
|
-
"page-aware assistants",
|
|
32982
|
-
"form filling and data extraction",
|
|
32983
|
-
"internal browser tooling"
|
|
32984
|
-
],
|
|
32985
|
-
examples: [
|
|
32986
|
-
"CRM sidekick that reads and updates records on the page",
|
|
32987
|
-
"Research assistant that summarizes and compares open tabs",
|
|
32988
|
-
"Support agent that drafts replies inside a ticketing UI"
|
|
32989
|
-
],
|
|
32990
|
-
traits: {
|
|
32991
|
-
streaming: "required",
|
|
32992
|
-
messagesMutable: false,
|
|
32993
|
-
deliveryModel: "real_time",
|
|
32994
|
-
mediaSupport: "images",
|
|
32995
|
-
textMediaDelivery: "inline_html",
|
|
32996
|
-
interactiveUI: "generative",
|
|
32997
|
-
inboundMediaSupport: true,
|
|
32998
|
-
consumerType: "human",
|
|
32999
|
-
approvalAnswerable: true,
|
|
33000
|
-
reasoningVisibility: "pass_through",
|
|
33001
|
-
markdownDialect: "mdx",
|
|
33002
|
-
threadModel: "flat",
|
|
33003
|
-
senderIdentity: "anonymous",
|
|
33004
|
-
maxResponseLength: null,
|
|
33005
|
-
executionHint: "You are running inside a Chrome extension side panel. You may have browser tools (chrome:*) to read the current page, interact with forms, and manage tabs \u2014 use them when the user asks about or wants to act on the page they are viewing. Mutating actions (clicking, filling, navigating) ask the user for confirmation before running."
|
|
33006
|
-
},
|
|
33007
|
-
behaviorTypeRef: "runtype://types/surface-configs"
|
|
33008
|
-
},
|
|
33009
|
-
"ag-ui": {
|
|
33010
|
-
description: "AG-UI protocol endpoint (agent-to-user event stream over SSE)",
|
|
33011
|
-
useCases: ["custom agent frontends", "CopilotKit / AG-UI clients", "embedded agent UIs"],
|
|
33012
|
-
examples: ["CopilotKit app", "Custom React agent UI", "AG-UI dojo client"],
|
|
33013
|
-
// Staging-test phase (`enable-ag-ui-surface` flag): keep the type out of
|
|
33014
|
-
// agent-facing catalogs until GA. Runtime trait lookups still resolve.
|
|
33015
|
-
hiddenFromCatalog: true,
|
|
33016
|
-
traits: {
|
|
33017
|
-
streaming: "required",
|
|
33018
|
-
messagesMutable: false,
|
|
33019
|
-
deliveryModel: "real_time",
|
|
33020
|
-
mediaSupport: "none",
|
|
33021
|
-
textMediaDelivery: "none",
|
|
33022
|
-
interactiveUI: "none",
|
|
33023
|
-
inboundMediaSupport: false,
|
|
33024
|
-
consumerType: "machine",
|
|
33025
|
-
approvalAnswerable: true,
|
|
33026
|
-
reasoningVisibility: "pass_through",
|
|
33027
|
-
markdownDialect: "markdown",
|
|
33028
|
-
threadModel: "flat",
|
|
33029
|
-
senderIdentity: "authenticated",
|
|
33030
|
-
maxResponseLength: null,
|
|
33031
|
-
executionHint: null
|
|
33032
|
-
}
|
|
33033
|
-
}
|
|
33034
|
-
};
|
|
33035
|
-
var EMAIL_HTML_CAPABILITY_HINT = [
|
|
33036
|
-
"## Channel capabilities",
|
|
33037
|
-
'- Formatting: author the reply as an HTML email body. Write well-formed HTML and put all styling in inline `style="..."` attributes (no `<style>` blocks, no external CSS). Use semantic tags freely: `<p>`, `<h1>`-`<h3>`, `<ul>`/`<ol>`/`<li>`, `<table>`, `<a>`, `<strong>`/`<em>`, `<blockquote>`, `<img>`. Do NOT emit `<script>`, `<iframe>`, `<head>`, `<body>`, or `<html>` wrappers: Runtype wraps your body in the email document and strips any active or unsafe content before sending.',
|
|
33038
|
-
'- Images: embed an image with `<img src="https://..." alt="...">` and it renders inline in the email. (Some clients ask the recipient to load remote images.)'
|
|
33039
|
-
].join("\n");
|
|
33040
33040
|
|
|
33041
|
-
// ../shared/dist/chunk-
|
|
33041
|
+
// ../shared/dist/chunk-ZS5WVN6Q.mjs
|
|
33042
33042
|
var DEFAULT_MODELS_FOR_NEW_ACCOUNTS = [
|
|
33043
33043
|
// Mixlayer models
|
|
33044
33044
|
{
|
|
@@ -33170,7 +33170,7 @@ var CONTEXT_STEP_TYPES = [
|
|
|
33170
33170
|
];
|
|
33171
33171
|
var FLOW_STEP_TYPES = ["prompt", ...CONTEXT_STEP_TYPES];
|
|
33172
33172
|
|
|
33173
|
-
// ../shared/dist/chunk-
|
|
33173
|
+
// ../shared/dist/chunk-XCUZAGPM.mjs
|
|
33174
33174
|
function getNestedValue(obj, path20) {
|
|
33175
33175
|
let normalizedPath = path20;
|
|
33176
33176
|
normalizedPath = normalizedPath.replace(/^\$\.?/, "");
|
|
@@ -33227,6 +33227,15 @@ var SYSTEM_VARIABLES = /* @__PURE__ */ new Set([
|
|
|
33227
33227
|
// it as undeclared and the executors don't report it as "unresolved" before
|
|
33228
33228
|
// injection runs.
|
|
33229
33229
|
"_tools",
|
|
33230
|
+
// Multi-tenancy identity vars. `createContextVariables` populates both
|
|
33231
|
+
// spread-conditionally (`_endUser` for the individual human, `_tenant` for the
|
|
33232
|
+
// customer org between `_user` and `_endUser`), and the dispatch schema
|
|
33233
|
+
// documents them — but they were missing here, so `{{_endUser.email}}` /
|
|
33234
|
+
// `{{_tenant.id}}` validated as UNDECLARED_VARIABLE_REFERENCE with a
|
|
33235
|
+
// remediation ("declare it as a flow input") that is impossible: the `inputs`
|
|
33236
|
+
// schema rejects keys starting with `_`.
|
|
33237
|
+
"_endUser",
|
|
33238
|
+
"_tenant",
|
|
33230
33239
|
...MESSAGE_VARIABLES
|
|
33231
33240
|
]);
|
|
33232
33241
|
var SECRET_REF_PATTERN = /\{\{secret:([A-Z][A-Z0-9_]*[A-Z0-9])\}\}/g;
|
|
@@ -40272,7 +40281,14 @@ var API_INPROCESS_CAPABILITY_MATRIX = {
|
|
|
40272
40281
|
// independent branches that each claimed their own suffix, plus the
|
|
40273
40282
|
// vendored-export re-fold pass. No bit changes with this bump; it exists so
|
|
40274
40283
|
// the combined base carries one unambiguous version.
|
|
40275
|
-
|
|
40284
|
+
// Bumped 2026-08-08.1: graduates `transformDataMcpServers` (#6013) — the
|
|
40285
|
+
// flow-lane MCP discovery pre-pass now walks `transform-data` steps and binds
|
|
40286
|
+
// each declared server's discovered tools as sandbox callables under legacy's
|
|
40287
|
+
// `{canonicalServerId}_{toolName}` identifier. The bit re-folds on
|
|
40288
|
+
// `vendored-export` (it rides the same host `CodeModeExecutor` seam as
|
|
40289
|
+
// `transformDataCodeModeTools`) — see {@link VENDORED_EXPORT_REFOLDS}.
|
|
40290
|
+
// Rollback lever: revert the bit to `true` (plus its test).
|
|
40291
|
+
version: "2026-08-08.1",
|
|
40276
40292
|
unsupportedStepTypes: ["wait-until", "crawl"],
|
|
40277
40293
|
unsupportedFeatures: {
|
|
40278
40294
|
approvalSteps: true,
|
|
@@ -40317,17 +40333,20 @@ var API_INPROCESS_CAPABILITY_MATRIX = {
|
|
|
40317
40333
|
// classes the runtime flow lane still cannot faithfully run.
|
|
40318
40334
|
// SUPPORTED as of 2026-08-06 (#6013): a `transform-data` step whose
|
|
40319
40335
|
// `config.tools` carries a runtime tool pool binds those tools through the
|
|
40320
|
-
// host `CodeModeExecutor` (`workerLoaderExecuteTransformWithTools`).
|
|
40321
|
-
// `mcpServers`-only case STAYS folded via the narrow
|
|
40322
|
-
// `transformDataMcpServers` bit below (the runtime has no MCP discovery on
|
|
40323
|
-
// transform steps, so an MCP tool pool would silently lose its tools).
|
|
40336
|
+
// host `CodeModeExecutor` (`workerLoaderExecuteTransformWithTools`).
|
|
40324
40337
|
// Rollback lever: revert this bit to `true` (plus its test).
|
|
40325
40338
|
transformDataCodeModeTools: false,
|
|
40326
|
-
//
|
|
40327
|
-
// `
|
|
40328
|
-
// and
|
|
40329
|
-
//
|
|
40330
|
-
|
|
40339
|
+
// SUPPORTED as of 2026-08-08 (#6013): the runtime flow lane's MCP discovery
|
|
40340
|
+
// pre-pass now walks `transform-data` steps alongside prompt steps
|
|
40341
|
+
// (`flow-engine.ts`) and merges each declared server's discovered tools into
|
|
40342
|
+
// the step's `config.tools.runtimeTools` — projected under LEGACY's
|
|
40343
|
+
// `{canonicalServerId}_{toolName}` code-step callable name and
|
|
40344
|
+
// `config.customServer` dispatch shape (`transformMcpPoolToolsForServer` in
|
|
40345
|
+
// `code-mode-executor.ts`), so authored scripts keep naming the same
|
|
40346
|
+
// callable. The `hasTransformDataCodeModeTools` FACT stays computed for
|
|
40347
|
+
// decision attribution but no longer folds.
|
|
40348
|
+
// Rollback lever: revert this bit to `true` (plus its test).
|
|
40349
|
+
transformDataMcpServers: false,
|
|
40331
40350
|
unsupportedTransformExecution: true,
|
|
40332
40351
|
// #6023 leg 1 (2026-08-05): a custom runtime tool requesting code_mode / a
|
|
40333
40352
|
// non-JS language / a container-backed sandbox provider has no runtime-lane
|
|
@@ -40374,14 +40393,16 @@ var API_INPROCESS_CAPABILITY_MATRIX = {
|
|
|
40374
40393
|
// flow lane to legacy for the common case — the opposite of runtime-primary.
|
|
40375
40394
|
// The runtime lane already carries Layer-1 resilience natively
|
|
40376
40395
|
// (`withModelCallResilience`: TTFT + idle watchdog + bounded same-model
|
|
40377
|
-
// retry — packages/runtime prompt-executor.ts),
|
|
40378
|
-
//
|
|
40379
|
-
//
|
|
40380
|
-
//
|
|
40381
|
-
//
|
|
40382
|
-
//
|
|
40383
|
-
//
|
|
40384
|
-
//
|
|
40396
|
+
// retry — packages/runtime prompt-executor.ts), and since the fallback-chain
|
|
40397
|
+
// port it ALSO synthesizes the implicit chain itself: on a retryable
|
|
40398
|
+
// platform-key failure that survives Layer 1 with no partial output, the
|
|
40399
|
+
// runtime flow engine runs the SAME shared gate and chain builder as legacy
|
|
40400
|
+
// (`shouldSynthesizePlatformDefaultFallback` / `getPlatformDefaultStallFallback`,
|
|
40401
|
+
// applied in packages/runtime flow-engine.ts) and swaps upstream/model too —
|
|
40402
|
+
// so the residual delta the original rationale described is closed.
|
|
40403
|
+
// `hasImplicitPlatformFallbackCandidate` is still computed for decision
|
|
40404
|
+
// attribution. Rollback lever: flip this bit to `true` (plus its test) to
|
|
40405
|
+
// restore the fold.
|
|
40385
40406
|
implicitPlatformFallback: false,
|
|
40386
40407
|
// §A1 parity-audit BRIDGE fold: a prompt step's `toolIds` carrying a
|
|
40387
40408
|
// reference class the runtime lane can neither materialize at export nor
|
|
@@ -40417,7 +40438,10 @@ var VENDORED_EXPORT_CAPABILITY_MATRIX = {
|
|
|
40417
40438
|
// VENDORED_EXPORT_REFOLDS) — api-inprocess supports managed fetch methods
|
|
40418
40439
|
// only because the api host wires `ManagedFetchExecutor`; no export bundle
|
|
40419
40440
|
// does, so a firecrawl/massive fetch-url step fails as-shipped.
|
|
40420
|
-
|
|
40441
|
+
// Bumped 2026-08-08.1: `transformDataMcpServers` graduated on the base and
|
|
40442
|
+
// becomes the fourth documented re-fold here — the discovered tools still
|
|
40443
|
+
// need the host `CodeModeExecutor` to be bound as sandbox callables.
|
|
40444
|
+
version: "2026-08-08.1",
|
|
40421
40445
|
unsupportedStepTypes: [
|
|
40422
40446
|
// ── Carried over from api-inprocess: durable-host-only step types. A
|
|
40423
40447
|
// self-contained container has no durable host (BYOC §3.3 / S0 — the
|
|
@@ -40427,11 +40451,17 @@ var VENDORED_EXPORT_CAPABILITY_MATRIX = {
|
|
|
40427
40451
|
"wait-until",
|
|
40428
40452
|
"crawl",
|
|
40429
40453
|
// ── Hosted-service / DB-backed record & email steps (BYOC §7.2). A
|
|
40430
|
-
// self-contained container has no hosted RecordStore / EmailSender
|
|
40431
|
-
//
|
|
40432
|
-
//
|
|
40433
|
-
//
|
|
40434
|
-
//
|
|
40454
|
+
// self-contained container has no hosted RecordStore / EmailSender, and S0
|
|
40455
|
+
// shows send-email / record steps fail in BOTH default and wired configs
|
|
40456
|
+
// (no Bundled mode). The Hosted ENDPOINTS themselves are now built and
|
|
40457
|
+
// mounted (`/v1/runtime/email`, `/v1/runtime/records`, `/v1/runtime/search`)
|
|
40458
|
+
// and the runtime ships `HostedEmailSender` against them — so that half of
|
|
40459
|
+
// the original graduation lever is met. What is still missing is the
|
|
40460
|
+
// fulfillment: the standard export wires no EmailSender / RecordStore (the
|
|
40461
|
+
// runtime falls back to its NoOp sender), and a Hosted client needs a
|
|
40462
|
+
// customer-supplied Runtype API key an export does not carry. Graduation
|
|
40463
|
+
// lever: wire a Hosted or Bundled RecordStore/EmailSender into the standard
|
|
40464
|
+
// export — then remove.
|
|
40435
40465
|
"send-email",
|
|
40436
40466
|
"upsert-record",
|
|
40437
40467
|
"update-record",
|
|
@@ -40535,9 +40565,10 @@ var VENDORED_EXPORT_CAPABILITY_MATRIX = {
|
|
|
40535
40565
|
// code-with-tools fulfillment in the standard export — then flip to false and
|
|
40536
40566
|
// drop from {@link VENDORED_EXPORT_REFOLDS}.
|
|
40537
40567
|
transformDataCodeModeTools: true,
|
|
40538
|
-
//
|
|
40539
|
-
//
|
|
40540
|
-
//
|
|
40568
|
+
// VENDORED RE-FOLD (as of 2026-08-08.1, when the base graduated): a
|
|
40569
|
+
// transform step's DISCOVERED MCP tools are bound through the same host
|
|
40570
|
+
// `CodeModeExecutor` seam as the sibling bit above — discovery itself is
|
|
40571
|
+
// portable, the BINDING is not. Same graduation lever.
|
|
40541
40572
|
transformDataMcpServers: true,
|
|
40542
40573
|
unsupportedTransformExecution: true,
|
|
40543
40574
|
// api-inprocess fold (G5); carried over.
|
|
@@ -45073,10 +45104,27 @@ var credentialProxyConfigSchema = external_exports.object({
|
|
|
45073
45104
|
});
|
|
45074
45105
|
var LOCAL_INFERENCE_PROTOCOL_VERSION = 1;
|
|
45075
45106
|
var LocalInferenceSurfaceSchema = external_exports.enum(["playground", "flows", "agents"]);
|
|
45107
|
+
var LocalModelCapabilitiesSchema = external_exports.object({
|
|
45108
|
+
streaming: external_exports.boolean(),
|
|
45109
|
+
structuredOutput: external_exports.enum(["none", "json", "json_schema"]),
|
|
45110
|
+
tools: external_exports.enum(["none", "single", "parallel"]),
|
|
45111
|
+
vision: external_exports.boolean(),
|
|
45112
|
+
maxContextTokens: external_exports.number().int().positive().optional(),
|
|
45113
|
+
maxOutputTokens: external_exports.number().int().positive().optional(),
|
|
45114
|
+
supportedSampling: external_exports.array(external_exports.enum(["temperature", "top_p", "seed"])).optional()
|
|
45115
|
+
});
|
|
45116
|
+
var LocalInferenceModelSnapshotSchema = external_exports.object({
|
|
45117
|
+
backend: external_exports.literal("ollama"),
|
|
45118
|
+
model: external_exports.string().trim().min(1).max(256),
|
|
45119
|
+
capabilities: LocalModelCapabilitiesSchema,
|
|
45120
|
+
capabilityRevision: external_exports.string().regex(/^sha256:[0-9a-f]{64}$/)
|
|
45121
|
+
});
|
|
45076
45122
|
var LocalInferenceSelectionSchema = external_exports.object({
|
|
45077
45123
|
sessionId: external_exports.string().uuid(),
|
|
45078
45124
|
model: external_exports.string().trim().min(1).max(256),
|
|
45079
45125
|
backend: external_exports.literal("ollama"),
|
|
45126
|
+
/** Optional only for protocol-v1 dashboards during the rolling upgrade. */
|
|
45127
|
+
capabilityRevision: external_exports.string().regex(/^sha256:[0-9a-f]{64}$/).optional(),
|
|
45080
45128
|
/**
|
|
45081
45129
|
* Dashboard surface that created the session. Optional during the rolling
|
|
45082
45130
|
* upgrade from protocol v1 clients; new clients always send it.
|
|
@@ -47607,8 +47655,9 @@ authCommand.command("whoami").description("Display current user information").op
|
|
|
47607
47655
|
}
|
|
47608
47656
|
const usage = billingInfo.usage;
|
|
47609
47657
|
if (usage) {
|
|
47610
|
-
const
|
|
47611
|
-
|
|
47658
|
+
const used = usage.executionsToday ?? usage.executionsThisMonth;
|
|
47659
|
+
const value = usage.executionsThisMonthAvailable === false || typeof used !== "number" ? "unavailable" : used.toLocaleString();
|
|
47660
|
+
fields.push({ label: "Executions today", value });
|
|
47612
47661
|
}
|
|
47613
47662
|
}
|
|
47614
47663
|
setResultNode(React.createElement(EntityCard, { fields }));
|
|
@@ -70533,6 +70582,13 @@ import React24 from "react";
|
|
|
70533
70582
|
import { render as render24 } from "ink";
|
|
70534
70583
|
import { useState as useState41, useEffect as useEffect35 } from "react";
|
|
70535
70584
|
import open5 from "open";
|
|
70585
|
+
function formatExecutionsToday(usage) {
|
|
70586
|
+
if (usage.executionsThisMonthAvailable === false) {
|
|
70587
|
+
return "unavailable";
|
|
70588
|
+
}
|
|
70589
|
+
const used = usage.executionsToday ?? usage.executionsThisMonth;
|
|
70590
|
+
return typeof used === "number" ? used.toLocaleString() : "unavailable";
|
|
70591
|
+
}
|
|
70536
70592
|
var billingCommand = new Command26("billing").description("View billing and subscription info");
|
|
70537
70593
|
billingCommand.command("status").description("Show current plan and usage").option("--json", "Output as JSON").option("--tty", "Force TTY mode").option("--no-tty", "Force non-TTY mode").action(async (options) => {
|
|
70538
70594
|
const apiKey = await ensureAuth();
|
|
@@ -70552,11 +70608,8 @@ billingCommand.command("status").description("Show current plan and usage").opti
|
|
|
70552
70608
|
]);
|
|
70553
70609
|
if (data.usage) {
|
|
70554
70610
|
console.log();
|
|
70555
|
-
const limit = data.usage.executionsLimit;
|
|
70556
|
-
const used = data.usage.executionsUsed ?? 0;
|
|
70557
|
-
const limitStr = limit ? `/${limit}` : "";
|
|
70558
70611
|
printDetail("Usage", [
|
|
70559
|
-
{ label: "Executions", value:
|
|
70612
|
+
{ label: "Executions today", value: formatExecutionsToday(data.usage) }
|
|
70560
70613
|
]);
|
|
70561
70614
|
}
|
|
70562
70615
|
if (data.limits) {
|
|
@@ -70592,10 +70645,7 @@ billingCommand.command("status").description("Show current plan and usage").opti
|
|
|
70592
70645
|
{ label: "Period end", value: data.currentPeriodEnd }
|
|
70593
70646
|
];
|
|
70594
70647
|
if (data.usage) {
|
|
70595
|
-
|
|
70596
|
-
const used = data.usage.executionsUsed ?? 0;
|
|
70597
|
-
const limitStr = limit ? `/${limit}` : "";
|
|
70598
|
-
fields.push({ label: "Executions", value: `${used}${limitStr}` });
|
|
70648
|
+
fields.push({ label: "Executions today", value: formatExecutionsToday(data.usage) });
|
|
70599
70649
|
}
|
|
70600
70650
|
if (data.limits) {
|
|
70601
70651
|
if (data.limits.dailyLimit) fields.push({ label: "Daily limit", value: data.limits.dailyLimit });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@runtypelabs/cli",
|
|
3
|
-
"version": "2.33.
|
|
3
|
+
"version": "2.33.5",
|
|
4
4
|
"description": "Command-line interface for Runtype AI platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"rosie-skills": "0.8.1",
|
|
28
28
|
"yaml": "^2.9.0",
|
|
29
29
|
"@runtypelabs/ink-components": "0.3.6",
|
|
30
|
-
"@runtypelabs/sdk": "
|
|
30
|
+
"@runtypelabs/sdk": "7.0.0",
|
|
31
31
|
"@runtypelabs/terminal-animations": "0.2.3"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"tsx": "^4.7.1",
|
|
44
44
|
"typescript": "^6.0.3",
|
|
45
45
|
"vitest": "^4.1.0",
|
|
46
|
-
"@runtypelabs/shared": "3.
|
|
46
|
+
"@runtypelabs/shared": "3.19.0"
|
|
47
47
|
},
|
|
48
48
|
"engines": {
|
|
49
49
|
"node": ">=22.12.0"
|