@wiro-ai/wiro-mcp 1.3.4 → 1.4.1
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/README.md +183 -16
- package/dist/client.d.ts +16 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +126 -24
- package/dist/client.js.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +2 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +29 -0
- package/dist/instructions.js.map +1 -0
- package/dist/playbooks.d.ts +8 -0
- package/dist/playbooks.d.ts.map +1 -0
- package/dist/playbooks.js +667 -0
- package/dist/playbooks.js.map +1 -0
- package/dist/prompts.d.ts +4 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +133 -0
- package/dist/prompts.js.map +1 -0
- package/dist/server.d.ts +15 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +12 -7
- package/dist/server.js.map +1 -1
- package/dist/tools/apply-agent-skills.d.ts +4 -0
- package/dist/tools/apply-agent-skills.d.ts.map +1 -0
- package/dist/tools/apply-agent-skills.js +601 -0
- package/dist/tools/apply-agent-skills.js.map +1 -0
- package/dist/tools/cancel-agent-message.d.ts +4 -0
- package/dist/tools/cancel-agent-message.d.ts.map +1 -0
- package/dist/tools/cancel-agent-message.js +126 -0
- package/dist/tools/cancel-agent-message.js.map +1 -0
- package/dist/tools/cancel-task.js +3 -3
- package/dist/tools/cancel-task.js.map +1 -1
- package/dist/tools/clone-workflow.d.ts +4 -0
- package/dist/tools/clone-workflow.d.ts.map +1 -0
- package/dist/tools/clone-workflow.js +83 -0
- package/dist/tools/clone-workflow.js.map +1 -0
- package/dist/tools/connect-agent-oauth.d.ts +4 -0
- package/dist/tools/connect-agent-oauth.d.ts.map +1 -0
- package/dist/tools/connect-agent-oauth.js +508 -0
- package/dist/tools/connect-agent-oauth.js.map +1 -0
- package/dist/tools/control-agent.d.ts +4 -0
- package/dist/tools/control-agent.d.ts.map +1 -0
- package/dist/tools/control-agent.js +289 -0
- package/dist/tools/control-agent.js.map +1 -0
- package/dist/tools/create-workflow.d.ts +100 -0
- package/dist/tools/create-workflow.d.ts.map +1 -0
- package/dist/tools/create-workflow.js +102 -0
- package/dist/tools/create-workflow.js.map +1 -0
- package/dist/tools/delete-agent-session.d.ts +6 -0
- package/dist/tools/delete-agent-session.d.ts.map +1 -0
- package/dist/tools/delete-agent-session.js +134 -0
- package/dist/tools/delete-agent-session.js.map +1 -0
- package/dist/tools/delete-agent.d.ts +4 -0
- package/dist/tools/delete-agent.d.ts.map +1 -0
- package/dist/tools/delete-agent.js +145 -0
- package/dist/tools/delete-agent.js.map +1 -0
- package/dist/tools/delete-workflow.d.ts +4 -0
- package/dist/tools/delete-workflow.d.ts.map +1 -0
- package/dist/tools/delete-workflow.js +77 -0
- package/dist/tools/delete-workflow.js.map +1 -0
- package/dist/tools/deploy-agent.d.ts +4 -0
- package/dist/tools/deploy-agent.d.ts.map +1 -0
- package/dist/tools/deploy-agent.js +463 -0
- package/dist/tools/deploy-agent.js.map +1 -0
- package/dist/tools/disconnect-agent-oauth.d.ts +4 -0
- package/dist/tools/disconnect-agent-oauth.d.ts.map +1 -0
- package/dist/tools/disconnect-agent-oauth.js +118 -0
- package/dist/tools/disconnect-agent-oauth.js.map +1 -0
- package/dist/tools/get-account.d.ts +4 -0
- package/dist/tools/get-account.d.ts.map +1 -0
- package/dist/tools/get-account.js +112 -0
- package/dist/tools/get-account.js.map +1 -0
- package/dist/tools/get-agent-activity.d.ts +4 -0
- package/dist/tools/get-agent-activity.d.ts.map +1 -0
- package/dist/tools/get-agent-activity.js +383 -0
- package/dist/tools/get-agent-activity.js.map +1 -0
- package/dist/tools/get-agent-conversation.d.ts +4 -0
- package/dist/tools/get-agent-conversation.d.ts.map +1 -0
- package/dist/tools/get-agent-conversation.js +228 -0
- package/dist/tools/get-agent-conversation.js.map +1 -0
- package/dist/tools/get-agent-message.d.ts +4 -0
- package/dist/tools/get-agent-message.d.ts.map +1 -0
- package/dist/tools/get-agent-message.js +68 -0
- package/dist/tools/get-agent-message.js.map +1 -0
- package/dist/tools/get-agent-template.d.ts +4 -0
- package/dist/tools/get-agent-template.d.ts.map +1 -0
- package/dist/tools/get-agent-template.js +128 -0
- package/dist/tools/get-agent-template.js.map +1 -0
- package/dist/tools/get-model-schema.d.ts +5 -1
- package/dist/tools/get-model-schema.d.ts.map +1 -1
- package/dist/tools/get-model-schema.js +138 -8
- package/dist/tools/get-model-schema.js.map +1 -1
- package/dist/tools/get-my-agent.d.ts +4 -0
- package/dist/tools/get-my-agent.d.ts.map +1 -0
- package/dist/tools/get-my-agent.js +117 -0
- package/dist/tools/get-my-agent.js.map +1 -0
- package/dist/tools/get-playbook.d.ts +3 -0
- package/dist/tools/get-playbook.d.ts.map +1 -0
- package/dist/tools/get-playbook.js +50 -0
- package/dist/tools/get-playbook.js.map +1 -0
- package/dist/tools/get-task-price.d.ts +1 -1
- package/dist/tools/get-task-price.d.ts.map +1 -1
- package/dist/tools/get-task-price.js +64 -16
- package/dist/tools/get-task-price.js.map +1 -1
- package/dist/tools/get-task.d.ts.map +1 -1
- package/dist/tools/get-task.js +26 -9
- package/dist/tools/get-task.js.map +1 -1
- package/dist/tools/get-workflow.d.ts +9 -0
- package/dist/tools/get-workflow.d.ts.map +1 -0
- package/dist/tools/get-workflow.js +105 -0
- package/dist/tools/get-workflow.js.map +1 -0
- package/dist/tools/index.d.ts +63 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +131 -14
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/kill-task.d.ts.map +1 -1
- package/dist/tools/kill-task.js +10 -6
- package/dist/tools/kill-task.js.map +1 -1
- package/dist/tools/list-agent-skills.d.ts +4 -0
- package/dist/tools/list-agent-skills.d.ts.map +1 -0
- package/dist/tools/list-agent-skills.js +242 -0
- package/dist/tools/list-agent-skills.js.map +1 -0
- package/dist/tools/list-agent-templates.d.ts +4 -0
- package/dist/tools/list-agent-templates.d.ts.map +1 -0
- package/dist/tools/list-agent-templates.js +110 -0
- package/dist/tools/list-agent-templates.js.map +1 -0
- package/dist/tools/list-my-agents.d.ts +4 -0
- package/dist/tools/list-my-agents.d.ts.map +1 -0
- package/dist/tools/list-my-agents.js +93 -0
- package/dist/tools/list-my-agents.js.map +1 -0
- package/dist/tools/list-studio-results.d.ts +4 -0
- package/dist/tools/list-studio-results.d.ts.map +1 -0
- package/dist/tools/list-studio-results.js +95 -0
- package/dist/tools/list-studio-results.js.map +1 -0
- package/dist/tools/list-tasks.d.ts.map +1 -1
- package/dist/tools/list-tasks.js +7 -5
- package/dist/tools/list-tasks.js.map +1 -1
- package/dist/tools/list-workflow-runs.d.ts +4 -0
- package/dist/tools/list-workflow-runs.d.ts.map +1 -0
- package/dist/tools/list-workflow-runs.js +110 -0
- package/dist/tools/list-workflow-runs.js.map +1 -0
- package/dist/tools/list-workflows.d.ts +4 -0
- package/dist/tools/list-workflows.d.ts.map +1 -0
- package/dist/tools/list-workflows.js +143 -0
- package/dist/tools/list-workflows.js.map +1 -0
- package/dist/tools/manage-agent-billing.d.ts +4 -0
- package/dist/tools/manage-agent-billing.d.ts.map +1 -0
- package/dist/tools/manage-agent-billing.js +788 -0
- package/dist/tools/manage-agent-billing.js.map +1 -0
- package/dist/tools/manage-agent-custom-skill.d.ts +4 -0
- package/dist/tools/manage-agent-custom-skill.d.ts.map +1 -0
- package/dist/tools/manage-agent-custom-skill.js +531 -0
- package/dist/tools/manage-agent-custom-skill.js.map +1 -0
- package/dist/tools/recommend-model.d.ts.map +1 -1
- package/dist/tools/recommend-model.js +6 -5
- package/dist/tools/recommend-model.js.map +1 -1
- package/dist/tools/resume-workflow-run.d.ts +4 -0
- package/dist/tools/resume-workflow-run.d.ts.map +1 -0
- package/dist/tools/resume-workflow-run.js +69 -0
- package/dist/tools/resume-workflow-run.js.map +1 -0
- package/dist/tools/run-model.d.ts.map +1 -1
- package/dist/tools/run-model.js +40 -4
- package/dist/tools/run-model.js.map +1 -1
- package/dist/tools/run-workflow.d.ts +6 -0
- package/dist/tools/run-workflow.d.ts.map +1 -0
- package/dist/tools/run-workflow.js +132 -0
- package/dist/tools/run-workflow.js.map +1 -0
- package/dist/tools/save-workflow-from-agent.d.ts +4 -0
- package/dist/tools/save-workflow-from-agent.d.ts.map +1 -0
- package/dist/tools/save-workflow-from-agent.js +280 -0
- package/dist/tools/save-workflow-from-agent.js.map +1 -0
- package/dist/tools/schemas.d.ts +182 -115
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +26 -6
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/search-models.d.ts.map +1 -1
- package/dist/tools/search-models.js +9 -6
- package/dist/tools/search-models.js.map +1 -1
- package/dist/tools/send-agent-message.d.ts +4 -0
- package/dist/tools/send-agent-message.d.ts.map +1 -0
- package/dist/tools/send-agent-message.js +156 -0
- package/dist/tools/send-agent-message.js.map +1 -0
- package/dist/tools/set-agent-credentials.d.ts +4 -0
- package/dist/tools/set-agent-credentials.d.ts.map +1 -0
- package/dist/tools/set-agent-credentials.js +540 -0
- package/dist/tools/set-agent-credentials.js.map +1 -0
- package/dist/tools/update-agent.d.ts +4 -0
- package/dist/tools/update-agent.d.ts.map +1 -0
- package/dist/tools/update-agent.js +179 -0
- package/dist/tools/update-agent.js.map +1 -0
- package/dist/tools/update-workflow.d.ts +201 -0
- package/dist/tools/update-workflow.d.ts.map +1 -0
- package/dist/tools/update-workflow.js +168 -0
- package/dist/tools/update-workflow.js.map +1 -0
- package/dist/tools/upload-file.d.ts.map +1 -1
- package/dist/tools/upload-file.js +12 -7
- package/dist/tools/upload-file.js.map +1 -1
- package/dist/tools/wait-for-task.d.ts.map +1 -1
- package/dist/tools/wait-for-task.js +20 -2
- package/dist/tools/wait-for-task.js.map +1 -1
- package/dist/tools/wait-for-workflow-run.d.ts +259 -0
- package/dist/tools/wait-for-workflow-run.d.ts.map +1 -0
- package/dist/tools/wait-for-workflow-run.js +190 -0
- package/dist/tools/wait-for-workflow-run.js.map +1 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/agent-catalog.d.ts +1256 -0
- package/dist/utils/agent-catalog.d.ts.map +1 -0
- package/dist/utils/agent-catalog.js +387 -0
- package/dist/utils/agent-catalog.js.map +1 -0
- package/dist/utils/agent-config.d.ts +443 -0
- package/dist/utils/agent-config.d.ts.map +1 -0
- package/dist/utils/agent-config.js +1676 -0
- package/dist/utils/agent-config.js.map +1 -0
- package/dist/utils/agent-message.d.ts +112 -0
- package/dist/utils/agent-message.d.ts.map +1 -0
- package/dist/utils/agent-message.js +243 -0
- package/dist/utils/agent-message.js.map +1 -0
- package/dist/utils/agent-targets.d.ts +76 -0
- package/dist/utils/agent-targets.d.ts.map +1 -0
- package/dist/utils/agent-targets.js +412 -0
- package/dist/utils/agent-targets.js.map +1 -0
- package/dist/utils/agent-turns.d.ts +354 -0
- package/dist/utils/agent-turns.d.ts.map +1 -0
- package/dist/utils/agent-turns.js +660 -0
- package/dist/utils/agent-turns.js.map +1 -0
- package/dist/utils/api.d.ts +40 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api.js +111 -0
- package/dist/utils/api.js.map +1 -0
- package/dist/utils/format.d.ts +65 -2
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +583 -81
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/json-schema-dialect.d.ts +8 -1
- package/dist/utils/json-schema-dialect.d.ts.map +1 -1
- package/dist/utils/json-schema-dialect.js +23 -1
- package/dist/utils/json-schema-dialect.js.map +1 -1
- package/dist/utils/media.d.ts +28 -0
- package/dist/utils/media.d.ts.map +1 -0
- package/dist/utils/media.js +65 -0
- package/dist/utils/media.js.map +1 -0
- package/dist/utils/poll.d.ts +39 -0
- package/dist/utils/poll.d.ts.map +1 -0
- package/dist/utils/poll.js +111 -0
- package/dist/utils/poll.js.map +1 -0
- package/dist/utils/remote-file.js +2 -2
- package/dist/utils/remote-file.js.map +1 -1
- package/dist/utils/structured.d.ts +4 -0
- package/dist/utils/structured.d.ts.map +1 -1
- package/dist/utils/structured.js +23 -7
- package/dist/utils/structured.js.map +1 -1
- package/dist/utils/studio-runs.d.ts +87 -0
- package/dist/utils/studio-runs.d.ts.map +1 -0
- package/dist/utils/studio-runs.js +167 -0
- package/dist/utils/studio-runs.js.map +1 -0
- package/dist/utils/user-agent.d.ts +1199 -0
- package/dist/utils/user-agent.d.ts.map +1 -0
- package/dist/utils/user-agent.js +897 -0
- package/dist/utils/user-agent.js.map +1 -0
- package/dist/utils/workflow-agent.d.ts +151 -0
- package/dist/utils/workflow-agent.d.ts.map +1 -0
- package/dist/utils/workflow-agent.js +292 -0
- package/dist/utils/workflow-agent.js.map +1 -0
- package/dist/utils/workflow-artifacts.d.ts +160 -0
- package/dist/utils/workflow-artifacts.d.ts.map +1 -0
- package/dist/utils/workflow-artifacts.js +801 -0
- package/dist/utils/workflow-artifacts.js.map +1 -0
- package/dist/utils/workflow-save.d.ts +120 -0
- package/dist/utils/workflow-save.d.ts.map +1 -0
- package/dist/utils/workflow-save.js +728 -0
- package/dist/utils/workflow-save.js.map +1 -0
- package/dist/utils/workflow.d.ts +564 -0
- package/dist/utils/workflow.d.ts.map +1 -0
- package/dist/utils/workflow.js +712 -0
- package/dist/utils/workflow.js.map +1 -0
- package/dist/utils/workspace.d.ts +38 -0
- package/dist/utils/workspace.d.ts.map +1 -0
- package/dist/utils/workspace.js +90 -0
- package/dist/utils/workspace.js.map +1 -0
- package/package.json +6 -4
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
import type { WiroClient } from '../client.js';
|
|
2
|
+
export declare const DEFAULT_CRON_INTERVAL = "0 10 * * 1";
|
|
3
|
+
export declare const OAUTH_LINK_TTL_SECONDS = 900;
|
|
4
|
+
type Row = Record<string, unknown>;
|
|
5
|
+
export declare function formatUsd(amount: number): string;
|
|
6
|
+
export declare const AGENT_STATUS_LABELS: Record<number, string>;
|
|
7
|
+
export declare function agentStatusLabel(status: number | null): string;
|
|
8
|
+
/** Configuration writes restart an agent only while it is starting or running. */
|
|
9
|
+
export declare function isAgentRunning(status: number | null): boolean;
|
|
10
|
+
/** The agent's page in the Wiro dashboard, in the form the dashboard itself uses as an OAuth return address. */
|
|
11
|
+
export declare function dashboardAgentUrl(agentGuid: string): string;
|
|
12
|
+
export declare function restartNote(status: number | null, what?: string): string;
|
|
13
|
+
export declare function readUserAgent(client: WiroClient, agentGuid: string, signal?: AbortSignal): Promise<Row>;
|
|
14
|
+
export declare function agentStatusOf(row: Row): number | null;
|
|
15
|
+
/** Names of the registry skills that are on. Detail lists only enabled skills. */
|
|
16
|
+
export declare function enabledSkillNames(row: Row): string[];
|
|
17
|
+
export declare function isCustomBuild(row: Row): boolean;
|
|
18
|
+
export interface RegistrySkill {
|
|
19
|
+
name: string;
|
|
20
|
+
title: string;
|
|
21
|
+
dependsOn: string[];
|
|
22
|
+
conflictsWith: string[];
|
|
23
|
+
deprecated: boolean;
|
|
24
|
+
replacement?: string;
|
|
25
|
+
requiresCredentials: boolean;
|
|
26
|
+
credentialKeys: string[];
|
|
27
|
+
monthlyPriceUsd: number | null;
|
|
28
|
+
}
|
|
29
|
+
export interface RegistryChannel {
|
|
30
|
+
id: string;
|
|
31
|
+
title: string;
|
|
32
|
+
credentialKey: string;
|
|
33
|
+
}
|
|
34
|
+
export interface SkillRegistry {
|
|
35
|
+
skills: Map<string, RegistrySkill>;
|
|
36
|
+
channels: Map<string, RegistryChannel>;
|
|
37
|
+
}
|
|
38
|
+
export declare function parseSkillRegistry(body: Row): SkillRegistry;
|
|
39
|
+
export declare function loadSkillRegistry(client: WiroClient, signal?: AbortSignal): Promise<SkillRegistry>;
|
|
40
|
+
export interface SkillPlan {
|
|
41
|
+
/** Every skill the change sets, dependencies included. */
|
|
42
|
+
requested: Record<string, boolean>;
|
|
43
|
+
addedDependencies: string[];
|
|
44
|
+
errors: string[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validates the requested names against the registry and, when asked, adds
|
|
48
|
+
* the skills they depend on. The server refuses a change whose enabled set is
|
|
49
|
+
* missing a dependency. Names are checked against the registry here, so only
|
|
50
|
+
* known skills are sent.
|
|
51
|
+
*/
|
|
52
|
+
export declare function planSkillChanges(input: Record<string, boolean>, registry: SkillRegistry, addDependencies: boolean): SkillPlan;
|
|
53
|
+
export interface SkillDiff {
|
|
54
|
+
changes: Record<string, boolean>;
|
|
55
|
+
enable: string[];
|
|
56
|
+
disable: string[];
|
|
57
|
+
alreadySet: string[];
|
|
58
|
+
}
|
|
59
|
+
/** Only real changes are sent, since a skill change restarts a running agent. */
|
|
60
|
+
export declare function diffSkills(requested: Record<string, boolean>, enabledNow: Iterable<string>): SkillDiff;
|
|
61
|
+
/**
|
|
62
|
+
* The same check the API runs before it writes: every skill that ends up on
|
|
63
|
+
* needs its dependencies on, and no two conflicting skills may be on.
|
|
64
|
+
*/
|
|
65
|
+
export declare function checkSkillSet(enabledNow: Iterable<string>, changes: Record<string, boolean>, registry: SkillRegistry): {
|
|
66
|
+
deps: Array<{
|
|
67
|
+
skill: string;
|
|
68
|
+
requires: string;
|
|
69
|
+
}>;
|
|
70
|
+
conflicts: Array<{
|
|
71
|
+
a: string;
|
|
72
|
+
b: string;
|
|
73
|
+
}>;
|
|
74
|
+
};
|
|
75
|
+
/** Credential keys the newly enabled skills read, skipping the ones the agent already has. */
|
|
76
|
+
export declare function credentialsNeededFor(skills: string[], registry: SkillRegistry, row?: Row): Array<{
|
|
77
|
+
skill: string;
|
|
78
|
+
credentials: string[];
|
|
79
|
+
}>;
|
|
80
|
+
/** Fingerprint of one logical skill change, independent of the agent's current state. */
|
|
81
|
+
export declare function skillChangeDigest(agentGuid: string, requested: Record<string, boolean>, tier?: string): string;
|
|
82
|
+
/** Fingerprint of the monthly price before and after a change, as it was quoted. */
|
|
83
|
+
export declare function skillPriceTag(currentUsd: number | null, newUsd: number | null): string;
|
|
84
|
+
export declare function newSkillChangeKey(digest: string, priceTag: string): string;
|
|
85
|
+
/** The change and price fingerprints of a key minted by this package, or null for any other key. */
|
|
86
|
+
export declare function parseSkillChangeKey(key: string): {
|
|
87
|
+
digest: string;
|
|
88
|
+
priceTag: string;
|
|
89
|
+
} | null;
|
|
90
|
+
/**
|
|
91
|
+
* Keys minted by this package carry the fingerprint of their change. Wiro
|
|
92
|
+
* answers a reused key with the saved result of the call that first used it,
|
|
93
|
+
* so a key is only sent with the change it was issued for.
|
|
94
|
+
*/
|
|
95
|
+
export declare function idempotencyKeyMismatch(key: string, digest: string): boolean;
|
|
96
|
+
export interface PlanBilling {
|
|
97
|
+
plan: 'prepaid' | 'card' | 'none';
|
|
98
|
+
status: string | null;
|
|
99
|
+
periodEnd: number | null;
|
|
100
|
+
daysRemaining: number | null;
|
|
101
|
+
wallet: 'team' | 'personal';
|
|
102
|
+
/** true: the plan ends with this period; false: it renews; null: not known, for a card plan without its card state. */
|
|
103
|
+
cancelAtPeriodEnd: boolean | null;
|
|
104
|
+
}
|
|
105
|
+
export declare function planBilling(row: Row): PlanBilling;
|
|
106
|
+
/**
|
|
107
|
+
* Wiro charges a prepaid plan the monthly difference for the days left in the
|
|
108
|
+
* period. The estimate assumes a 30-day period.
|
|
109
|
+
*/
|
|
110
|
+
export declare function estimateProratedUsd(deltaUsd: number, periodEndUnix: number | null, nowMs?: number, periodDays?: number): number | null;
|
|
111
|
+
export interface SkillsApplyFailure {
|
|
112
|
+
code: number | null;
|
|
113
|
+
message: string;
|
|
114
|
+
guidance: string;
|
|
115
|
+
retrySameKey: boolean;
|
|
116
|
+
deps?: Array<{
|
|
117
|
+
skill: string;
|
|
118
|
+
requires: string;
|
|
119
|
+
}>;
|
|
120
|
+
conflicts?: Array<{
|
|
121
|
+
a: string;
|
|
122
|
+
b: string;
|
|
123
|
+
}>;
|
|
124
|
+
requiredUsd?: number | null;
|
|
125
|
+
availableUsd?: number | null;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Turns a refused SkillsApply into an explanation and the step that fixes it.
|
|
129
|
+
* With the agent's plan, a payment failure names only the fix for that plan.
|
|
130
|
+
*/
|
|
131
|
+
export declare function describeSkillsApplyError(error: unknown, plan?: PlanBilling['plan']): SkillsApplyFailure;
|
|
132
|
+
/** The API names a dashboard concept ("team context"); here the workspace is the connected project's. */
|
|
133
|
+
export declare function workspaceHint(message: string): string | undefined;
|
|
134
|
+
export interface CredentialField {
|
|
135
|
+
key: string;
|
|
136
|
+
label: string;
|
|
137
|
+
type: string;
|
|
138
|
+
required: boolean;
|
|
139
|
+
encrypted: boolean;
|
|
140
|
+
oauthManaged: boolean;
|
|
141
|
+
autoFilled: boolean;
|
|
142
|
+
serverManaged: boolean;
|
|
143
|
+
platformManaged: boolean;
|
|
144
|
+
onlyInModes: string[] | null;
|
|
145
|
+
pattern?: string;
|
|
146
|
+
minLength?: number;
|
|
147
|
+
maxLength?: number;
|
|
148
|
+
options?: string[];
|
|
149
|
+
fileTypes?: string[];
|
|
150
|
+
maxSizeKb?: number;
|
|
151
|
+
itemType?: string;
|
|
152
|
+
itemSchema: CredentialField[];
|
|
153
|
+
help?: string;
|
|
154
|
+
placeholder?: string;
|
|
155
|
+
}
|
|
156
|
+
export interface NextPickerMeta {
|
|
157
|
+
key: string;
|
|
158
|
+
label: string;
|
|
159
|
+
optional: boolean;
|
|
160
|
+
parentValueField: string;
|
|
161
|
+
parentLabelField: string;
|
|
162
|
+
itemValueField: string;
|
|
163
|
+
itemLabelField: string;
|
|
164
|
+
persistField: string;
|
|
165
|
+
}
|
|
166
|
+
export interface PickerMeta {
|
|
167
|
+
multiSelect: boolean;
|
|
168
|
+
valueField: string;
|
|
169
|
+
labelField?: string;
|
|
170
|
+
fieldsToSave: string[];
|
|
171
|
+
urlItemFields: Record<string, string>;
|
|
172
|
+
pendingCache: boolean;
|
|
173
|
+
next: NextPickerMeta | null;
|
|
174
|
+
}
|
|
175
|
+
export interface OAuthMeta {
|
|
176
|
+
callbackPath?: string;
|
|
177
|
+
stateFields: string[];
|
|
178
|
+
connectRequirements: string[];
|
|
179
|
+
directProbe: {
|
|
180
|
+
mode: string;
|
|
181
|
+
label?: string;
|
|
182
|
+
requiredFields: string[];
|
|
183
|
+
} | null;
|
|
184
|
+
picker: PickerMeta | null;
|
|
185
|
+
}
|
|
186
|
+
export interface CredentialMeta {
|
|
187
|
+
key: string;
|
|
188
|
+
title: string;
|
|
189
|
+
connectionModes: string[];
|
|
190
|
+
defaultConnectionMode?: string;
|
|
191
|
+
wiroPending: boolean;
|
|
192
|
+
fields: CredentialField[];
|
|
193
|
+
channel: {
|
|
194
|
+
id: string;
|
|
195
|
+
requiredFields: string[];
|
|
196
|
+
} | null;
|
|
197
|
+
oauth: OAuthMeta | null;
|
|
198
|
+
platformOnly: boolean;
|
|
199
|
+
}
|
|
200
|
+
export declare const FIELD_HELP_MAX = 4000;
|
|
201
|
+
export declare function htmlToText(value: unknown, maxLength?: number): string | undefined;
|
|
202
|
+
export declare function parseCredentialField(raw: Row): CredentialField;
|
|
203
|
+
export declare function parseCredentialMeta(raw: Row): CredentialMeta;
|
|
204
|
+
/** The modes a connection can use now: wiro is left out while the registry marks it pending. */
|
|
205
|
+
export declare function usableConnectionModes(meta: Pick<CredentialMeta, 'connectionModes' | 'wiroPending'>): string[];
|
|
206
|
+
/** Returns null when the registry has no credential with that key. */
|
|
207
|
+
export declare function loadCredentialMeta(client: WiroClient, key: string, signal?: AbortSignal): Promise<CredentialMeta | null>;
|
|
208
|
+
export type FieldShape = 'object-array' | 'string-array' | 'file' | 'base64-file' | 'boolean' | 'number' | 'select' | 'text';
|
|
209
|
+
/** Mirrors how the API stores a field: lists of rows, lists of strings, files or one value. */
|
|
210
|
+
export declare function credentialFieldShape(field: Pick<CredentialField, 'type' | 'itemType' | 'itemSchema'>): FieldShape;
|
|
211
|
+
/** Fields the connection flow or Wiro fills; customers cannot write them. */
|
|
212
|
+
export declare function isWritableField(field: CredentialField): boolean;
|
|
213
|
+
/**
|
|
214
|
+
* Base64 file fields hold the file's bytes as base64. Callers often have the
|
|
215
|
+
* file's text instead (a service account JSON, a .p8 key), so anything that is
|
|
216
|
+
* not already base64 is encoded here.
|
|
217
|
+
*/
|
|
218
|
+
export declare function normalizeBase64FileValue(value: string): string;
|
|
219
|
+
export interface CredentialFieldInput {
|
|
220
|
+
credential: string;
|
|
221
|
+
field: string;
|
|
222
|
+
value?: unknown;
|
|
223
|
+
parent_field?: string;
|
|
224
|
+
ordinal?: number;
|
|
225
|
+
}
|
|
226
|
+
export interface CredentialApiField {
|
|
227
|
+
credentialkey: string;
|
|
228
|
+
fieldname: string;
|
|
229
|
+
fieldvalue: unknown;
|
|
230
|
+
parentfield?: string;
|
|
231
|
+
ordinal?: number;
|
|
232
|
+
}
|
|
233
|
+
export interface CredentialFileUpload {
|
|
234
|
+
credential: string;
|
|
235
|
+
field: string;
|
|
236
|
+
label: string;
|
|
237
|
+
url: string;
|
|
238
|
+
fileTypes: string[];
|
|
239
|
+
maxBytes: number;
|
|
240
|
+
}
|
|
241
|
+
export interface PreparedCredentialWrite {
|
|
242
|
+
apiFields: CredentialApiField[];
|
|
243
|
+
files: CredentialFileUpload[];
|
|
244
|
+
errors: string[];
|
|
245
|
+
/** Every string the caller sent, so errors can be scrubbed of them. */
|
|
246
|
+
secrets: string[];
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Checks every requested field against the credential registry and builds the
|
|
250
|
+
* API payload. Nothing is written when any field is refused.
|
|
251
|
+
*/
|
|
252
|
+
export declare function prepareCredentialWrite(inputs: CredentialFieldInput[], metas: Map<string, CredentialMeta | null>): PreparedCredentialWrite;
|
|
253
|
+
/** Removes every value the caller sent from a message before it is shown. */
|
|
254
|
+
export declare function redactSecrets(text: string, secrets: string[]): string;
|
|
255
|
+
/** The API derives the stored file's extension from its name, so one is always added. */
|
|
256
|
+
export declare function uploadFileName(url: string, field: string, contentType: string): string;
|
|
257
|
+
export declare function isFilledValue(value: unknown): boolean;
|
|
258
|
+
export declare function credentialGroup(row: Row, key: string): Row | null;
|
|
259
|
+
export interface CredentialStatus {
|
|
260
|
+
key: string;
|
|
261
|
+
title: string;
|
|
262
|
+
connected: boolean;
|
|
263
|
+
filled: boolean;
|
|
264
|
+
requiredMissing: boolean;
|
|
265
|
+
optional: boolean;
|
|
266
|
+
missingFields: string[];
|
|
267
|
+
}
|
|
268
|
+
export declare function credentialStatus(row: Row, key: string, meta?: CredentialMeta | null): CredentialStatus | null;
|
|
269
|
+
export interface ChannelStatus {
|
|
270
|
+
id: string;
|
|
271
|
+
title: string;
|
|
272
|
+
credential: string;
|
|
273
|
+
enabled: boolean;
|
|
274
|
+
missingFields: string[];
|
|
275
|
+
}
|
|
276
|
+
export declare function channelStatuses(row: Row): ChannelStatus[];
|
|
277
|
+
/**
|
|
278
|
+
* Wiro sends the browser to this address after sign-in with the connected
|
|
279
|
+
* account names appended, so only the agent's own dashboard page or an
|
|
280
|
+
* address on the user's own machine is accepted.
|
|
281
|
+
*/
|
|
282
|
+
export declare function isAllowedRedirectUrl(url: string, agentGuid: string): boolean;
|
|
283
|
+
/** The redirect URI a customer registers in their own OAuth app. */
|
|
284
|
+
export declare function ownAppRedirectUri(meta: CredentialMeta): string | undefined;
|
|
285
|
+
export interface ModeRequirement {
|
|
286
|
+
mode: string;
|
|
287
|
+
available: boolean;
|
|
288
|
+
needsBrowser: boolean;
|
|
289
|
+
fields: Array<{
|
|
290
|
+
field: string;
|
|
291
|
+
label: string;
|
|
292
|
+
isSet: boolean;
|
|
293
|
+
}>;
|
|
294
|
+
note: string;
|
|
295
|
+
}
|
|
296
|
+
/** What each connection mode needs, with which of those fields are already saved. */
|
|
297
|
+
export declare function connectionModeRequirements(meta: CredentialMeta, group: Row | null): ModeRequirement[];
|
|
298
|
+
/**
|
|
299
|
+
* The mode to use when the caller did not name one: Wiro's own app when it is
|
|
300
|
+
* available, the only remaining mode, or the first mode whose fields are
|
|
301
|
+
* already saved (the registry's default first).
|
|
302
|
+
*/
|
|
303
|
+
export declare function chooseConnectionMode(meta: CredentialMeta, requirements: ModeRequirement[]): string | null;
|
|
304
|
+
export interface AccountRef {
|
|
305
|
+
id: string;
|
|
306
|
+
name: string;
|
|
307
|
+
}
|
|
308
|
+
/** Candidate or saved accounts in one shape, whatever the provider calls the fields. */
|
|
309
|
+
export declare function toAccountRefs(list: unknown, picker?: PickerMeta | null): AccountRef[];
|
|
310
|
+
/** Maps {id, name} selections onto the fields the picker saves. */
|
|
311
|
+
export declare function buildPickerAccounts(picker: PickerMeta, accounts: Array<Record<string, unknown>>): {
|
|
312
|
+
accounts?: Array<Record<string, string>>;
|
|
313
|
+
error?: string;
|
|
314
|
+
};
|
|
315
|
+
export interface DiscoveredGroup {
|
|
316
|
+
parent: AccountRef;
|
|
317
|
+
items: AccountRef[];
|
|
318
|
+
errorCode?: string;
|
|
319
|
+
}
|
|
320
|
+
export declare function parseDiscoveredGroups(next: NextPickerMeta, groups: unknown): DiscoveredGroup[];
|
|
321
|
+
/**
|
|
322
|
+
* Builds the chained-step payload from a fresh discovery. The API wants every
|
|
323
|
+
* readable parent exactly once and each item with its discovered label, so
|
|
324
|
+
* parents the caller left out are sent with no items.
|
|
325
|
+
*/
|
|
326
|
+
export declare function buildChainedSelections(next: NextPickerMeta, groups: DiscoveredGroup[], selections: Array<{
|
|
327
|
+
parent: string;
|
|
328
|
+
items: string[];
|
|
329
|
+
}>): {
|
|
330
|
+
selections?: Array<{
|
|
331
|
+
parentvalue: string;
|
|
332
|
+
items: Array<Record<string, string>>;
|
|
333
|
+
}>;
|
|
334
|
+
skippedParents: AccountRef[];
|
|
335
|
+
error?: string;
|
|
336
|
+
};
|
|
337
|
+
export interface ChildStepStatus {
|
|
338
|
+
picker: string;
|
|
339
|
+
optional: boolean;
|
|
340
|
+
configured: boolean;
|
|
341
|
+
groups: Array<{
|
|
342
|
+
parent: AccountRef;
|
|
343
|
+
items: AccountRef[];
|
|
344
|
+
}>;
|
|
345
|
+
}
|
|
346
|
+
export interface OAuthStatusSnapshot {
|
|
347
|
+
connected: boolean;
|
|
348
|
+
accounts: AccountRef[];
|
|
349
|
+
connectedAt: string;
|
|
350
|
+
tokenExpiresAt: string;
|
|
351
|
+
childStep: ChildStepStatus | null;
|
|
352
|
+
}
|
|
353
|
+
export declare function parseOAuthStatus(body: Row, picker: PickerMeta | null): OAuthStatusSnapshot;
|
|
354
|
+
export declare function readOAuthStatus(client: WiroClient, agentGuid: string, credential: string, picker: PickerMeta | null, signal?: AbortSignal): Promise<OAuthStatusSnapshot>;
|
|
355
|
+
export type ConnectionState = 'connected' | 'pick_accounts' | 'pick_child_items' | 'waiting_for_user' | 'token_expired' | 'not_connected';
|
|
356
|
+
/**
|
|
357
|
+
* Wiro reports a picker credential as not connected until an account is
|
|
358
|
+
* saved, so a fresh connectedat with no accounts means "signed in, accounts
|
|
359
|
+
* still to choose". since is the connectedat seen before the sign-in started.
|
|
360
|
+
*/
|
|
361
|
+
export declare function connectionState(status: OAuthStatusSnapshot, options: {
|
|
362
|
+
hasPicker: boolean;
|
|
363
|
+
since?: string;
|
|
364
|
+
nowMs?: number;
|
|
365
|
+
}): ConnectionState;
|
|
366
|
+
export type CustomSkillKind = 'skill' | 'scheduled_task';
|
|
367
|
+
/**
|
|
368
|
+
* Same rules as the API's key normalisation: cs-cron-x and cs-x stay, cron-x
|
|
369
|
+
* becomes cs-cron-x, and a bare slug gets cs-cron- when scheduled (or given a
|
|
370
|
+
* non-empty interval) and cs- otherwise. The slug is 1-60 characters of
|
|
371
|
+
* lowercase letters, digits and single dashes. Returns null when invalid.
|
|
372
|
+
*/
|
|
373
|
+
export declare function normalizeCustomSkillKey(input: string, options?: {
|
|
374
|
+
scheduled?: boolean;
|
|
375
|
+
hasInterval?: unknown;
|
|
376
|
+
}): string | null;
|
|
377
|
+
export declare function customSkillKindOf(key: string): CustomSkillKind;
|
|
378
|
+
/**
|
|
379
|
+
* The key an upsert writes, computed with the API's own rules. With the
|
|
380
|
+
* agent's entries, a bare key with no kind and no interval names the existing
|
|
381
|
+
* entry of that name, as rename, delete, history and revert do; the API would
|
|
382
|
+
* otherwise create a new cs- entry.
|
|
383
|
+
*/
|
|
384
|
+
export declare function upsertCustomSkillKey(input: string, kind?: CustomSkillKind, interval?: string, existingKeys?: Set<string>): {
|
|
385
|
+
key?: string;
|
|
386
|
+
error?: string;
|
|
387
|
+
};
|
|
388
|
+
/** The exact key of an existing entry; the API matches rename, delete, history and revert keys literally. */
|
|
389
|
+
export declare function resolveExistingCustomSkillKey(input: string, existingKeys: Set<string>, kind?: CustomSkillKind): {
|
|
390
|
+
key?: string;
|
|
391
|
+
error?: string;
|
|
392
|
+
};
|
|
393
|
+
/** A light shape check; the API validates the expression fully. */
|
|
394
|
+
export declare function looksLikeCron(expression: string): boolean;
|
|
395
|
+
export interface DeployCustomSkillInput {
|
|
396
|
+
key: string;
|
|
397
|
+
value?: string;
|
|
398
|
+
description?: string;
|
|
399
|
+
interval?: string;
|
|
400
|
+
enabled?: boolean;
|
|
401
|
+
}
|
|
402
|
+
export interface DeployCustomSkill extends DeployCustomSkillInput {
|
|
403
|
+
kind: CustomSkillKind;
|
|
404
|
+
/** The template already has an entry with this key, and this one replaces its settings. */
|
|
405
|
+
fromTemplate: boolean;
|
|
406
|
+
}
|
|
407
|
+
/** An entry the template comes with, as its detail lists it. */
|
|
408
|
+
export interface TemplateCustomSkill {
|
|
409
|
+
key: string;
|
|
410
|
+
interval?: string | null;
|
|
411
|
+
}
|
|
412
|
+
/** The runtime always runs a template's scheduled task with the template's own prompt. */
|
|
413
|
+
export declare function templateTaskTextError(key: string): string;
|
|
414
|
+
/**
|
|
415
|
+
* Checks deploy_agent's custom_skills the way manage_agent_custom_skill
|
|
416
|
+
* would, before the deploy is paid for. A bare key names the template's own
|
|
417
|
+
* entry of that name when it has one. Without the template's entries only the
|
|
418
|
+
* checks that need no template run.
|
|
419
|
+
*/
|
|
420
|
+
export declare function resolveDeployCustomSkills(entries: DeployCustomSkillInput[], template: TemplateCustomSkill[] | null): {
|
|
421
|
+
skills: DeployCustomSkill[];
|
|
422
|
+
errors: string[];
|
|
423
|
+
};
|
|
424
|
+
export declare function humanizeCustomSkillKey(key: string): string;
|
|
425
|
+
export interface CustomSkillEntry {
|
|
426
|
+
key: string;
|
|
427
|
+
kind: CustomSkillKind;
|
|
428
|
+
description: string;
|
|
429
|
+
value: string;
|
|
430
|
+
interval: string | null;
|
|
431
|
+
enabled: boolean;
|
|
432
|
+
source: string;
|
|
433
|
+
userCreated: boolean;
|
|
434
|
+
requiresCredentials: string[];
|
|
435
|
+
}
|
|
436
|
+
/** Text in a fence longer than any run of backticks inside it, so it shows as is. */
|
|
437
|
+
export declare function textBlock(value: string): string[];
|
|
438
|
+
export declare function customSkillEntries(row: Row): CustomSkillEntry[];
|
|
439
|
+
/** Readable text for the API's custom skill error codes. */
|
|
440
|
+
export declare function customSkillErrorMessage(message: string): string;
|
|
441
|
+
export declare function toIsoTime(value: unknown): string | undefined;
|
|
442
|
+
export {};
|
|
443
|
+
//# sourceMappingURL=agent-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-config.d.ts","sourceRoot":"","sources":["../../src/utils/agent-config.ts"],"names":[],"mappings":"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"}
|