@voiden/runner 2.2.0 → 2.3.0-beta.2
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/CHANGELOG.md +11 -0
- package/bundled-runners/versions.json +8 -6
- package/bundled-runners/voiden-advanced-auth-runner.js +1 -1
- package/bundled-runners/voiden-graphql-runner.js +1 -1
- package/bundled-runners/voiden-mcp-client-runner.js +1 -0
- package/bundled-runners/voiden-mcp-tool-runner.js +143 -0
- package/bundled-runners/voiden-rest-api-runner.js +1 -1
- package/bundled-runners/voiden-sockets-grpcs-runner.js +1 -1
- package/dist/envFile.d.ts +2 -0
- package/dist/envFile.d.ts.map +1 -0
- package/dist/envFile.js +59 -0
- package/dist/envFile.js.map +1 -0
- package/dist/headlessContext.d.ts.map +1 -1
- package/dist/headlessContext.js +43 -0
- package/dist/headlessContext.js.map +1 -1
- package/dist/index.js +252 -24
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +9 -7
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +9 -8
- package/dist/lib.js.map +1 -1
- package/dist/mcpServing.d.ts +39 -0
- package/dist/mcpServing.d.ts.map +1 -0
- package/dist/mcpServing.js +154 -0
- package/dist/mcpServing.js.map +1 -0
- package/dist/mcpToolCapability.d.ts +120 -0
- package/dist/mcpToolCapability.d.ts.map +1 -0
- package/dist/mcpToolCapability.js +87 -0
- package/dist/mcpToolCapability.js.map +1 -0
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +6 -0
- package/dist/plugins/loader.js.map +1 -1
- package/dist/requestContainerRegistry.d.ts +36 -0
- package/dist/requestContainerRegistry.d.ts.map +1 -0
- package/dist/requestContainerRegistry.js +42 -0
- package/dist/requestContainerRegistry.js.map +1 -0
- package/dist/resultBlock.d.ts +7 -1
- package/dist/resultBlock.d.ts.map +1 -1
- package/dist/resultBlock.js +28 -6
- package/dist/resultBlock.js.map +1 -1
- package/dist/runner.d.ts +9 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +25 -9
- package/dist/runner.js.map +1 -1
- package/dist/toolRegistry.d.ts +93 -0
- package/dist/toolRegistry.d.ts.map +1 -0
- package/dist/toolRegistry.js +38 -0
- package/dist/toolRegistry.js.map +1 -0
- package/dist/types.d.ts +1 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -3
- package/dist/mcpInstall.d.ts +0 -48
- package/dist/mcpInstall.d.ts.map +0 -1
- package/dist/mcpInstall.js +0 -194
- package/dist/mcpInstall.js.map +0 -1
- package/dist/parser.d.ts +0 -24
- package/dist/parser.d.ts.map +0 -1
- package/dist/parser.js +0 -87
- package/dist/parser.js.map +0 -1
- package/dist/skillContent.d.ts +0 -8
- package/dist/skillContent.d.ts.map +0 -1
- package/dist/skillContent.js +0 -42
- package/dist/skillContent.js.map +0 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool capability registry — the /tool-block equivalent of
|
|
3
|
+
* requestContainerRegistry.ts's "core owns an empty registry + accessor;
|
|
4
|
+
* a plugin populates it via context.registerXxx() in its own runner.ts
|
|
5
|
+
* onload(); core never hardcodes knowledge of a block's shape."
|
|
6
|
+
*
|
|
7
|
+
* Everything that actually INTERPRETS the tool/toolparams/toolverifies
|
|
8
|
+
* block's own semantics — what "unbound param" means, that role:
|
|
9
|
+
* 'auth-check' gates other rows, that mode: 'none' skips a row, what
|
|
10
|
+
* onFailure: 'advertise-degraded' does to a description — lives in
|
|
11
|
+
* voiden-mcp-tool's own runner bundle, not here. This file only holds:
|
|
12
|
+
*
|
|
13
|
+
* 1. The stable *protocol* types (ToolState/ToolStatus/ServeDecision/etc.)
|
|
14
|
+
* — these describe a generic verified/unverified/failing, served/
|
|
15
|
+
* excluded shape, not the /tool block's own attrs, so they're
|
|
16
|
+
* legitimately core's public @voiden/runner contract.
|
|
17
|
+
* 2. A single optional provider slot (there's only ever one plugin that
|
|
18
|
+
* owns the /tool capability, unlike registerToolProvider's providers[]
|
|
19
|
+
* array, where multiple protocol plugins each contribute request-
|
|
20
|
+
* container extraction).
|
|
21
|
+
* 3. Thin dispatchers with the same names/signatures the old
|
|
22
|
+
* toolVerification.ts/toolStatusBlock.ts/mcpServing.ts exported
|
|
23
|
+
* directly — so @voiden/mcp-server (and anything else importing
|
|
24
|
+
* discoverTools/verifyTools/etc. from @voiden/runner) needs zero
|
|
25
|
+
* changes. They gracefully no-op when no provider is registered
|
|
26
|
+
* (e.g. voiden-mcp-tool disabled), matching how toolRegistry.ts's
|
|
27
|
+
* own extractTools() already returns [] with no providers.
|
|
28
|
+
*/
|
|
29
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
30
|
+
import type { ToolDef } from './toolRegistry.js';
|
|
31
|
+
export type ToolState = 'verified' | 'unverified' | 'failing';
|
|
32
|
+
export interface ToolVerifyResult {
|
|
33
|
+
entry: any;
|
|
34
|
+
passed: boolean;
|
|
35
|
+
reason?: 'auth-failure' | 'contract-failure';
|
|
36
|
+
runResult?: any;
|
|
37
|
+
}
|
|
38
|
+
export interface ToolStatus {
|
|
39
|
+
tool: ToolDef;
|
|
40
|
+
state: ToolState;
|
|
41
|
+
results: ToolVerifyResult[];
|
|
42
|
+
note?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface DiscoverToolsOptions {
|
|
45
|
+
activePlugins?: string[];
|
|
46
|
+
}
|
|
47
|
+
export interface ToolValidationIssue {
|
|
48
|
+
tool: ToolDef;
|
|
49
|
+
check: 'unbound-param' | 'unresolved-placeholder' | 'missing-section' | 'duplicate-name' | 'readonly-mutating';
|
|
50
|
+
message: string;
|
|
51
|
+
}
|
|
52
|
+
export interface VerifyToolsOptions {
|
|
53
|
+
/** Only run verify entries whose `cadence` matches exactly. Omit to run every entry regardless of cadence. */
|
|
54
|
+
cadence?: string;
|
|
55
|
+
env?: Record<string, string>;
|
|
56
|
+
runtimeVars?: Record<string, any>;
|
|
57
|
+
activePlugins?: string[];
|
|
58
|
+
}
|
|
59
|
+
export interface ToolStatusRecord {
|
|
60
|
+
state: ToolState;
|
|
61
|
+
lastCheckedAt: string;
|
|
62
|
+
note?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface ServeDecision {
|
|
65
|
+
tool: ToolDef;
|
|
66
|
+
served: boolean;
|
|
67
|
+
/** Set only for tools voiden-mcp-blocks-spec.md §1.6 structurally excludes — never reached verification at all. */
|
|
68
|
+
excluded?: boolean;
|
|
69
|
+
excludedReasons?: string[];
|
|
70
|
+
/** Set only for tools that reached verification. */
|
|
71
|
+
status?: ToolStatus;
|
|
72
|
+
/** Prefixed onto the description when unverified/degraded, so the agent reads it. */
|
|
73
|
+
descriptionNote?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Everything voiden-runner core needs from the plugin that owns the /tool
|
|
77
|
+
* block. voiden-mcp-tool constructs one of these in its own runner.ts
|
|
78
|
+
* onload() and hands it to context.registerMcpToolCapabilityProvider().
|
|
79
|
+
*/
|
|
80
|
+
export interface McpToolCapabilityProvider {
|
|
81
|
+
discoverTools(projectRoot: string, opts: {
|
|
82
|
+
activePlugins: string[];
|
|
83
|
+
}): Promise<ToolDef[]>;
|
|
84
|
+
validateTools(projectRoot: string, tools: ToolDef[]): Promise<{
|
|
85
|
+
validTools: ToolDef[];
|
|
86
|
+
issues: ToolValidationIssue[];
|
|
87
|
+
}>;
|
|
88
|
+
verifyTools(tools: ToolDef[], opts: VerifyToolsOptions & {
|
|
89
|
+
activePlugins: string[];
|
|
90
|
+
}): Promise<ToolStatus[]>;
|
|
91
|
+
planServedTools(projectRoot: string, env: Record<string, string>, activePlugins: string[]): Promise<ServeDecision[]>;
|
|
92
|
+
registerServedTools(server: McpServer, decisions: ServeDecision[], baseEnv: Record<string, string>, runtimeVars: Record<string, any>, activePlugins: string[], commitSha: string | undefined): void;
|
|
93
|
+
upsertToolStatus(filePath: string, toolBlockUid: string, status: {
|
|
94
|
+
state: ToolState;
|
|
95
|
+
note?: string;
|
|
96
|
+
}): void;
|
|
97
|
+
/** Best-effort — never throws. Not every project is a git repo. */
|
|
98
|
+
getCommitSha(projectRoot: string): string | undefined;
|
|
99
|
+
}
|
|
100
|
+
export declare function registerMcpToolCapabilityProvider(p: McpToolCapabilityProvider): void;
|
|
101
|
+
export declare function clearMcpToolCapabilityProvider(): void;
|
|
102
|
+
export declare function getMcpToolCapabilityProvider(): McpToolCapabilityProvider | undefined;
|
|
103
|
+
export declare function discoverTools(projectRoot: string, opts?: DiscoverToolsOptions): Promise<ToolDef[]>;
|
|
104
|
+
export declare function validateTools(projectRoot: string, tools: ToolDef[]): Promise<{
|
|
105
|
+
validTools: ToolDef[];
|
|
106
|
+
issues: ToolValidationIssue[];
|
|
107
|
+
}>;
|
|
108
|
+
export declare function verifyTools(tools: ToolDef[], opts?: VerifyToolsOptions): Promise<ToolStatus[]>;
|
|
109
|
+
export declare function planServedTools(projectRoot: string, env: Record<string, string>, activePlugins: string[]): Promise<ServeDecision[]>;
|
|
110
|
+
export declare function registerToolsFromDecisions(server: McpServer, decisions: ServeDecision[], baseEnv: Record<string, string>, runtimeVars: Record<string, any>, activePlugins: string[], commitSha: string | undefined): void;
|
|
111
|
+
/** Computes decisions once, then registers them. Used by the stdio path,
|
|
112
|
+
* where one McpServer instance lives for the whole process. */
|
|
113
|
+
export declare function registerDynamicTools(server: McpServer, projectRoot: string, baseEnv: Record<string, string>, runtimeVars: Record<string, any>, activePlugins: string[]): Promise<ServeDecision[]>;
|
|
114
|
+
export declare function upsertToolStatus(filePath: string, toolBlockUid: string, status: {
|
|
115
|
+
state: ToolState;
|
|
116
|
+
note?: string;
|
|
117
|
+
}): void;
|
|
118
|
+
/** Best-effort — returns undefined (never throws) when no provider is registered. */
|
|
119
|
+
export declare function getCommitSha(projectRoot: string): string | undefined;
|
|
120
|
+
//# sourceMappingURL=mcpToolCapability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpToolCapability.d.ts","sourceRoot":"","sources":["../src/mcpToolCapability.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool capability registry — the /tool-block equivalent of
|
|
3
|
+
* requestContainerRegistry.ts's "core owns an empty registry + accessor;
|
|
4
|
+
* a plugin populates it via context.registerXxx() in its own runner.ts
|
|
5
|
+
* onload(); core never hardcodes knowledge of a block's shape."
|
|
6
|
+
*
|
|
7
|
+
* Everything that actually INTERPRETS the tool/toolparams/toolverifies
|
|
8
|
+
* block's own semantics — what "unbound param" means, that role:
|
|
9
|
+
* 'auth-check' gates other rows, that mode: 'none' skips a row, what
|
|
10
|
+
* onFailure: 'advertise-degraded' does to a description — lives in
|
|
11
|
+
* voiden-mcp-tool's own runner bundle, not here. This file only holds:
|
|
12
|
+
*
|
|
13
|
+
* 1. The stable *protocol* types (ToolState/ToolStatus/ServeDecision/etc.)
|
|
14
|
+
* — these describe a generic verified/unverified/failing, served/
|
|
15
|
+
* excluded shape, not the /tool block's own attrs, so they're
|
|
16
|
+
* legitimately core's public @voiden/runner contract.
|
|
17
|
+
* 2. A single optional provider slot (there's only ever one plugin that
|
|
18
|
+
* owns the /tool capability, unlike registerToolProvider's providers[]
|
|
19
|
+
* array, where multiple protocol plugins each contribute request-
|
|
20
|
+
* container extraction).
|
|
21
|
+
* 3. Thin dispatchers with the same names/signatures the old
|
|
22
|
+
* toolVerification.ts/toolStatusBlock.ts/mcpServing.ts exported
|
|
23
|
+
* directly — so @voiden/mcp-server (and anything else importing
|
|
24
|
+
* discoverTools/verifyTools/etc. from @voiden/runner) needs zero
|
|
25
|
+
* changes. They gracefully no-op when no provider is registered
|
|
26
|
+
* (e.g. voiden-mcp-tool disabled), matching how toolRegistry.ts's
|
|
27
|
+
* own extractTools() already returns [] with no providers.
|
|
28
|
+
*/
|
|
29
|
+
let provider;
|
|
30
|
+
export function registerMcpToolCapabilityProvider(p) {
|
|
31
|
+
provider = p;
|
|
32
|
+
}
|
|
33
|
+
export function clearMcpToolCapabilityProvider() {
|
|
34
|
+
provider = undefined;
|
|
35
|
+
}
|
|
36
|
+
export function getMcpToolCapabilityProvider() {
|
|
37
|
+
return provider;
|
|
38
|
+
}
|
|
39
|
+
// ─── Thin dispatchers — same names/signatures the old core implementation
|
|
40
|
+
// exported directly, so every existing caller (index.ts, @voiden/mcp-server)
|
|
41
|
+
// needs zero changes at the call site. ───────────────────────────────────
|
|
42
|
+
export async function discoverTools(projectRoot, opts = {}) {
|
|
43
|
+
if (!provider)
|
|
44
|
+
return [];
|
|
45
|
+
return provider.discoverTools(projectRoot, { activePlugins: opts.activePlugins ?? [] });
|
|
46
|
+
}
|
|
47
|
+
export async function validateTools(projectRoot, tools) {
|
|
48
|
+
// No capability plugin registered → nothing to validate against; treat
|
|
49
|
+
// every discovered tool as valid rather than silently excluding all of
|
|
50
|
+
// them (discoverTools() already returns [] in that case anyway, but this
|
|
51
|
+
// keeps validateTools() correct if ever called with a tool list from
|
|
52
|
+
// elsewhere).
|
|
53
|
+
if (!provider)
|
|
54
|
+
return { validTools: tools, issues: [] };
|
|
55
|
+
return provider.validateTools(projectRoot, tools);
|
|
56
|
+
}
|
|
57
|
+
export async function verifyTools(tools, opts = {}) {
|
|
58
|
+
if (!provider)
|
|
59
|
+
return [];
|
|
60
|
+
return provider.verifyTools(tools, { ...opts, activePlugins: opts.activePlugins ?? [] });
|
|
61
|
+
}
|
|
62
|
+
export async function planServedTools(projectRoot, env, activePlugins) {
|
|
63
|
+
if (!provider)
|
|
64
|
+
return [];
|
|
65
|
+
return provider.planServedTools(projectRoot, env, activePlugins);
|
|
66
|
+
}
|
|
67
|
+
export function registerToolsFromDecisions(server, decisions, baseEnv, runtimeVars, activePlugins, commitSha) {
|
|
68
|
+
provider?.registerServedTools(server, decisions, baseEnv, runtimeVars, activePlugins, commitSha);
|
|
69
|
+
}
|
|
70
|
+
/** Computes decisions once, then registers them. Used by the stdio path,
|
|
71
|
+
* where one McpServer instance lives for the whole process. */
|
|
72
|
+
export async function registerDynamicTools(server, projectRoot, baseEnv, runtimeVars, activePlugins) {
|
|
73
|
+
const decisions = await planServedTools(projectRoot, baseEnv, activePlugins);
|
|
74
|
+
registerToolsFromDecisions(server, decisions, baseEnv, runtimeVars, activePlugins, getCommitSha(projectRoot));
|
|
75
|
+
return decisions;
|
|
76
|
+
}
|
|
77
|
+
export function upsertToolStatus(filePath, toolBlockUid, status) {
|
|
78
|
+
if (!provider) {
|
|
79
|
+
throw new Error('No /tool-block capability plugin is registered — is voiden-mcp-tool enabled?');
|
|
80
|
+
}
|
|
81
|
+
provider.upsertToolStatus(filePath, toolBlockUid, status);
|
|
82
|
+
}
|
|
83
|
+
/** Best-effort — returns undefined (never throws) when no provider is registered. */
|
|
84
|
+
export function getCommitSha(projectRoot) {
|
|
85
|
+
return provider?.getCommitSha(projectRoot);
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=mcpToolCapability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpToolCapability.js","sourceRoot":"","sources":["../src/mcpToolCapability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAgFH,IAAI,QAA+C,CAAA;AAEnD,MAAM,UAAU,iCAAiC,CAAC,CAA4B;IAC5E,QAAQ,GAAG,CAAC,CAAA;AACd,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC5C,QAAQ,GAAG,SAAS,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,2EAA2E;AAC3E,6EAA6E;AAC7E,2EAA2E;AAE3E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB,EAAE,OAA6B,EAAE;IACtF,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAA;IACxB,OAAO,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC,CAAA;AACzF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB,EAAE,KAAgB;IACvE,uEAAuE;IACvE,uEAAuE;IACvE,yEAAyE;IACzE,qEAAqE;IACrE,cAAc;IACd,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;IACvD,OAAO,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAgB,EAAE,OAA2B,EAAE;IAC/E,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAA;IACxB,OAAO,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC,CAAA;AAC1F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB,EAAE,GAA2B,EAAE,aAAuB;IAC7G,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAA;IACxB,OAAO,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,GAAG,EAAE,aAAa,CAAC,CAAA;AAClE,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAiB,EACjB,SAA0B,EAC1B,OAA+B,EAC/B,WAAgC,EAChC,aAAuB,EACvB,SAA6B;IAE7B,QAAQ,EAAE,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;AAClG,CAAC;AAED;gEACgE;AAChE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAiB,EACjB,WAAmB,EACnB,OAA+B,EAC/B,WAAgC,EAChC,aAAuB;IAEvB,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,CAAA;IAC5E,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAA;IAC7G,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,YAAoB,EAAE,MAA2C;IAClH,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IACjG,CAAC;IACD,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;AAC3D,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,QAAQ,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;AAC5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAwCH;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA8B/I;AAKD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIzD;AAuDD,wBAAsB,kBAAkB,CACtC,OAAO,UAAQ,EACf,WAAW,GAAE,WAAW,CAAC,MAAM,CAAa,GAC3C,OAAO,CAAC,MAAM,EAAE,CAAC,CAwEnB"}
|
package/dist/plugins/loader.js
CHANGED
|
@@ -18,6 +18,9 @@ import { getCorePlugins, hasCoreRunner, getCoreRunnerImportUrl, getCoreRunnerPat
|
|
|
18
18
|
import { fetchCommunityPlugins, findCommunityPlugin, hasCommunityRunner, getCommunityRunnerImportUrl, } from './community.js';
|
|
19
19
|
import { createHeadlessPluginContext } from '../headlessContext.js';
|
|
20
20
|
import { clearSchemas } from '../blockSchemaRegistry.js';
|
|
21
|
+
import { clearRequestContainers } from '../requestContainerRegistry.js';
|
|
22
|
+
import { clearToolProviders } from '../toolRegistry.js';
|
|
23
|
+
import { clearMcpToolCapabilityProvider } from '../mcpToolCapability.js';
|
|
21
24
|
import { readStore, setPluginVersion } from './store.js';
|
|
22
25
|
import * as https from 'https';
|
|
23
26
|
import { mkdirSync, createWriteStream } from 'fs';
|
|
@@ -140,6 +143,9 @@ export async function loadEnabledPlugins(verbose = false, skipPlugins = new Set(
|
|
|
140
143
|
requestOrchestrator.clear();
|
|
141
144
|
hookRegistry.clearAll();
|
|
142
145
|
clearSchemas();
|
|
146
|
+
clearRequestContainers();
|
|
147
|
+
clearToolProviders();
|
|
148
|
+
clearMcpToolCapabilityProvider();
|
|
143
149
|
const loaded = [];
|
|
144
150
|
// ── Core plugins ──────────────────────────────────────────────────────────
|
|
145
151
|
// Core plugins default to enabled but can be disabled via ~/.voiden/plugins.json.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request Container Registry — lets each protocol plugin (REST, GraphQL,
|
|
3
|
+
* sockets/gRPC, or any third-party protocol plugin) declare its own "this
|
|
4
|
+
* block is the request" shape, instead of voiden-runner's core hardcoding
|
|
5
|
+
* knowledge of every plugin's block types.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors blockSchemaRegistry.ts exactly: plugins call
|
|
8
|
+
* context.registerRequestContainer() in their runner.ts onload(), and the
|
|
9
|
+
* registry is cleared/rebuilt fresh on every loadEnabledPlugins() call (same
|
|
10
|
+
* as block schemas — a disabled plugin's registration shouldn't linger).
|
|
11
|
+
*
|
|
12
|
+
* Used by list_requests (preview) and write_result (finding which block to
|
|
13
|
+
* attach a response to) so both work across whatever protocol plugins happen
|
|
14
|
+
* to be installed, not just the ones bundled with voiden-runner by default.
|
|
15
|
+
*/
|
|
16
|
+
export interface RequestContainerDef {
|
|
17
|
+
/** Block type string, e.g. 'gqlquery'. Matches the YAML `type:` field. */
|
|
18
|
+
type: string;
|
|
19
|
+
/** Child block type holding the request URL as its (string) content. */
|
|
20
|
+
urlType: string;
|
|
21
|
+
/** Child block type holding the method/protocol tag as its (string) content, if any. */
|
|
22
|
+
methodType?: string;
|
|
23
|
+
/** Fixed method when the protocol has no explicit method child (e.g. GraphQL is always POST). */
|
|
24
|
+
defaultMethod?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function registerRequestContainer(def: RequestContainerDef): void;
|
|
27
|
+
export declare function clearRequestContainers(): void;
|
|
28
|
+
export declare function getRequestContainerDef(type: string): RequestContainerDef | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Finds the block that represents "the request" in a section, across
|
|
31
|
+
* whichever protocol plugins are currently registered.
|
|
32
|
+
*/
|
|
33
|
+
export declare function findRequestBlock(blocks: any[]): any | undefined;
|
|
34
|
+
/** Returns all registered container type names — useful for debugging. */
|
|
35
|
+
export declare function getRegisteredContainerTypes(): string[];
|
|
36
|
+
//# sourceMappingURL=requestContainerRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestContainerRegistry.d.ts","sourceRoot":"","sources":["../src/requestContainerRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAA;IACZ,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAA;IACf,wFAAwF;IACxF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAID,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAEvE;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAEpF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,SAAS,CAM/D;AAED,0EAA0E;AAC1E,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAEtD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request Container Registry — lets each protocol plugin (REST, GraphQL,
|
|
3
|
+
* sockets/gRPC, or any third-party protocol plugin) declare its own "this
|
|
4
|
+
* block is the request" shape, instead of voiden-runner's core hardcoding
|
|
5
|
+
* knowledge of every plugin's block types.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors blockSchemaRegistry.ts exactly: plugins call
|
|
8
|
+
* context.registerRequestContainer() in their runner.ts onload(), and the
|
|
9
|
+
* registry is cleared/rebuilt fresh on every loadEnabledPlugins() call (same
|
|
10
|
+
* as block schemas — a disabled plugin's registration shouldn't linger).
|
|
11
|
+
*
|
|
12
|
+
* Used by list_requests (preview) and write_result (finding which block to
|
|
13
|
+
* attach a response to) so both work across whatever protocol plugins happen
|
|
14
|
+
* to be installed, not just the ones bundled with voiden-runner by default.
|
|
15
|
+
*/
|
|
16
|
+
const containers = new Map();
|
|
17
|
+
export function registerRequestContainer(def) {
|
|
18
|
+
containers.set(def.type, def);
|
|
19
|
+
}
|
|
20
|
+
export function clearRequestContainers() {
|
|
21
|
+
containers.clear();
|
|
22
|
+
}
|
|
23
|
+
export function getRequestContainerDef(type) {
|
|
24
|
+
return containers.get(type);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Finds the block that represents "the request" in a section, across
|
|
28
|
+
* whichever protocol plugins are currently registered.
|
|
29
|
+
*/
|
|
30
|
+
export function findRequestBlock(blocks) {
|
|
31
|
+
for (const type of containers.keys()) {
|
|
32
|
+
const req = blocks.find((b) => b.type === type);
|
|
33
|
+
if (req)
|
|
34
|
+
return req;
|
|
35
|
+
}
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
/** Returns all registered container type names — useful for debugging. */
|
|
39
|
+
export function getRegisteredContainerTypes() {
|
|
40
|
+
return Array.from(containers.keys());
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=requestContainerRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestContainerRegistry.js","sourceRoot":"","sources":["../src/requestContainerRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH,MAAM,UAAU,GAAG,IAAI,GAAG,EAA+B,CAAA;AAEzD,MAAM,UAAU,wBAAwB,CAAC,GAAwB;IAC/D,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,UAAU,CAAC,KAAK,EAAE,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAa;IAC5C,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;QACpD,IAAI,GAAG;YAAE,OAAO,GAAG,CAAA;IACrB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,2BAA2B;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAA;AACtC,CAAC"}
|
package/dist/resultBlock.d.ts
CHANGED
|
@@ -25,7 +25,13 @@ export declare function buildResponseBlockText(result: RunResult, requestUid: st
|
|
|
25
25
|
* section (i.e. before the next request-separator, or EOF), it's replaced.
|
|
26
26
|
* - Otherwise the new block is inserted immediately after the request block.
|
|
27
27
|
*
|
|
28
|
-
*
|
|
28
|
+
* Matches purely by `uid`, not block `type` — deliberately protocol-agnostic:
|
|
29
|
+
* REST's request-container block is typed `request`, GraphQL's is `gqlquery`,
|
|
30
|
+
* WebSocket/gRPC's is `socket-request`, and other plugins may use their own
|
|
31
|
+
* type name entirely. uids are unique per block regardless of type, so there's
|
|
32
|
+
* no need to hardcode (and keep updating) a list of "known request types".
|
|
33
|
+
*
|
|
34
|
+
* Throws if no block with a matching `uid` exists in the file.
|
|
29
35
|
*/
|
|
30
36
|
export declare function upsertResponseBlock(filePath: string, requestUid: string, result: RunResult): void;
|
|
31
37
|
//# sourceMappingURL=resultBlock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resultBlock.d.ts","sourceRoot":"","sources":["../src/resultBlock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"resultBlock.d.ts","sourceRoot":"","sources":["../src/resultBlock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAwD3C,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA2BpF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAsCjG"}
|
package/dist/resultBlock.js
CHANGED
|
@@ -20,6 +20,11 @@ import { readFileSync, writeFileSync } from 'fs';
|
|
|
20
20
|
import { randomUUID } from 'crypto';
|
|
21
21
|
import YAML from 'yaml';
|
|
22
22
|
const MAX_BODY_CHARS = 20_000;
|
|
23
|
+
// Plain markdown heading placed right before the fenced `response` block —
|
|
24
|
+
// makes the record visible/readable even without the voiden-rest-api plugin's
|
|
25
|
+
// dedicated renderer (e.g. in a raw markdown viewer, or before that plugin
|
|
26
|
+
// picks up this change).
|
|
27
|
+
const RESPONSE_HEADING = '## Response recorded';
|
|
23
28
|
// Same fence shape as parser.ts's regex, but tracking raw text offsets too
|
|
24
29
|
// (parser.ts only returns parsed Block[], with no position info) since we
|
|
25
30
|
// need to splice the source text rather than just read it.
|
|
@@ -97,14 +102,20 @@ export function buildResponseBlockText(result, requestUid) {
|
|
|
97
102
|
* section (i.e. before the next request-separator, or EOF), it's replaced.
|
|
98
103
|
* - Otherwise the new block is inserted immediately after the request block.
|
|
99
104
|
*
|
|
100
|
-
*
|
|
105
|
+
* Matches purely by `uid`, not block `type` — deliberately protocol-agnostic:
|
|
106
|
+
* REST's request-container block is typed `request`, GraphQL's is `gqlquery`,
|
|
107
|
+
* WebSocket/gRPC's is `socket-request`, and other plugins may use their own
|
|
108
|
+
* type name entirely. uids are unique per block regardless of type, so there's
|
|
109
|
+
* no need to hardcode (and keep updating) a list of "known request types".
|
|
110
|
+
*
|
|
111
|
+
* Throws if no block with a matching `uid` exists in the file.
|
|
101
112
|
*/
|
|
102
113
|
export function upsertResponseBlock(filePath, requestUid, result) {
|
|
103
114
|
const content = readFileSync(filePath, 'utf-8');
|
|
104
115
|
const fences = scanFences(content);
|
|
105
|
-
const requestFence = fences.find(f => f.
|
|
116
|
+
const requestFence = fences.find(f => f.uid === requestUid);
|
|
106
117
|
if (!requestFence) {
|
|
107
|
-
throw new Error(`No
|
|
118
|
+
throw new Error(`No block with uid "${requestUid}" found in ${filePath}`);
|
|
108
119
|
}
|
|
109
120
|
const nextSeparator = fences.find(f => f.type === 'request-separator' && f.start > requestFence.end);
|
|
110
121
|
const sectionEnd = nextSeparator ? nextSeparator.start : content.length;
|
|
@@ -113,9 +124,20 @@ export function upsertResponseBlock(filePath, requestUid, result) {
|
|
|
113
124
|
&& f.start > requestFence.end
|
|
114
125
|
&& f.start < sectionEnd);
|
|
115
126
|
const blockText = buildResponseBlockText(result, requestUid);
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
|
|
127
|
+
const blockWithHeading = RESPONSE_HEADING + '\n\n' + blockText;
|
|
128
|
+
let newContent;
|
|
129
|
+
if (existingResponse) {
|
|
130
|
+
// Replace the heading together with the block if we recognise one directly
|
|
131
|
+
// preceding it (written by a prior run) — otherwise leave whatever precedes
|
|
132
|
+
// it untouched and just add a heading now.
|
|
133
|
+
const before = content.slice(0, existingResponse.start);
|
|
134
|
+
const headingMatch = before.match(/## Response recorded\s*$/);
|
|
135
|
+
const replaceStart = headingMatch ? existingResponse.start - headingMatch[0].length : existingResponse.start;
|
|
136
|
+
newContent = content.slice(0, replaceStart) + blockWithHeading + content.slice(existingResponse.end);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
newContent = content.slice(0, requestFence.end) + '\n\n' + blockWithHeading + content.slice(requestFence.end);
|
|
140
|
+
}
|
|
119
141
|
writeFileSync(filePath, newContent, 'utf-8');
|
|
120
142
|
}
|
|
121
143
|
//# sourceMappingURL=resultBlock.js.map
|
package/dist/resultBlock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resultBlock.js","sourceRoot":"","sources":["../src/resultBlock.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"resultBlock.js","sourceRoot":"","sources":["../src/resultBlock.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.d.ts
CHANGED
|
@@ -25,6 +25,15 @@ export interface RawRequestInfo {
|
|
|
25
25
|
/** Public alias — lets callers (e.g. the MCP server's list_requests tool) preview
|
|
26
26
|
* a section's method/url without executing anything. */
|
|
27
27
|
export declare function getRequestPreview(blocks: any[]): RawRequestInfo;
|
|
28
|
+
/**
|
|
29
|
+
* Finds the block that represents "the request" in a section, whichever
|
|
30
|
+
* protocol it belongs to. Backed by requestContainerRegistry.ts, populated
|
|
31
|
+
* by each protocol plugin's own context.registerRequestContainer() call —
|
|
32
|
+
* exported so callers that only need the block's `uid` (e.g. the MCP
|
|
33
|
+
* server's list_requests tool) share this same registry instead of
|
|
34
|
+
* hardcoding their own list of protocol block types.
|
|
35
|
+
*/
|
|
36
|
+
export declare function findRequestBlock(blocks: any[]): any | undefined;
|
|
28
37
|
export interface RunOptions {
|
|
29
38
|
env?: Record<string, string>;
|
|
30
39
|
verbose?: boolean;
|
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAYH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AA0D3C,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAM,MAAM,CAAA;IACf,MAAM,EAAG,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,IAAI,CAAC,EAAI,MAAM,CAAA;CAChB;AAED;yDACyD;AACzD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,cAAc,CAE/D;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAYH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AA0D3C,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAM,MAAM,CAAA;IACf,MAAM,EAAG,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,IAAI,CAAC,EAAI,MAAM,CAAA;CAChB;AAED;yDACyD;AACzD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,cAAc,CAE/D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,SAAS,CAE/D;AAoGD,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,OAAO,CAAC,EAAM,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACjC,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,gHAAgH;IAChH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,SAAS,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAQ,aAAa,EAAE,CAAA;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,aAAa,CAAC,CA8IxB"}
|
package/dist/runner.js
CHANGED
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
* 3. Map PipelineResponse → RunResult
|
|
17
17
|
*/
|
|
18
18
|
import { readFileSync } from 'fs';
|
|
19
|
-
import { parseVoidFileSections } from '
|
|
20
|
-
import { requestOrchestrator, classifyBlockVersion } from '@voiden/executors';
|
|
19
|
+
import { requestOrchestrator, classifyBlockVersion, parseVoidFileSections } from '@voiden/executors';
|
|
21
20
|
import { createCliElectron } from './cliElectron.js';
|
|
22
21
|
import { loadEnabledPlugins } from './plugins/loader.js';
|
|
23
22
|
import { getInstalledPluginInfo } from './plugins/versionInfo.js';
|
|
24
23
|
import { normalizeBlocks } from './blockSchemaRegistry.js';
|
|
24
|
+
import { findRequestBlock as findRegisteredRequestBlock, getRequestContainerDef } from './requestContainerRegistry.js';
|
|
25
25
|
import { extractRuntimeVarRows, captureRuntimeVars } from './runtimeVars.js';
|
|
26
26
|
// ─── Declared plugin+version check (tagged blocks only — legacy files with no
|
|
27
27
|
// pluginId attr are skipped entirely, unchanged behaviour) ────────────────────
|
|
@@ -63,16 +63,32 @@ function formatVersionError(blockType, pluginId, pluginVersion, status, installe
|
|
|
63
63
|
export function getRequestPreview(blocks) {
|
|
64
64
|
return extractRawRequest(blocks);
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Finds the block that represents "the request" in a section, whichever
|
|
68
|
+
* protocol it belongs to. Backed by requestContainerRegistry.ts, populated
|
|
69
|
+
* by each protocol plugin's own context.registerRequestContainer() call —
|
|
70
|
+
* exported so callers that only need the block's `uid` (e.g. the MCP
|
|
71
|
+
* server's list_requests tool) share this same registry instead of
|
|
72
|
+
* hardcoding their own list of protocol block types.
|
|
73
|
+
*/
|
|
74
|
+
export function findRequestBlock(blocks) {
|
|
75
|
+
return findRegisteredRequestBlock(blocks);
|
|
76
|
+
}
|
|
66
77
|
function extractRawRequest(blocks) {
|
|
67
|
-
const req = blocks.find((b) => b.type === 'request');
|
|
68
78
|
let url = '';
|
|
69
79
|
let method = 'GET';
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
80
|
+
const req = findRequestBlock(blocks);
|
|
81
|
+
if (req) {
|
|
82
|
+
const cfg = getRequestContainerDef(req.type);
|
|
83
|
+
if (cfg && Array.isArray(req.content)) {
|
|
84
|
+
for (const node of req.content) {
|
|
85
|
+
if (cfg.methodType && node.type === cfg.methodType && typeof node.content === 'string')
|
|
86
|
+
method = node.content.trim();
|
|
87
|
+
if (node.type === cfg.urlType && typeof node.content === 'string')
|
|
88
|
+
url = node.content.trim();
|
|
89
|
+
}
|
|
90
|
+
if (cfg.defaultMethod)
|
|
91
|
+
method = cfg.defaultMethod;
|
|
76
92
|
}
|
|
77
93
|
}
|
|
78
94
|
const headers = {};
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|