@flowdesk/opencode-plugin 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bootstrap-cli.d.ts +16 -0
- package/dist/bootstrap-cli.d.ts.map +1 -0
- package/dist/bootstrap-cli.js +171 -0
- package/dist/bootstrap-cli.js.map +1 -0
- package/dist/bootstrap-installer.d.ts +51 -0
- package/dist/bootstrap-installer.d.ts.map +1 -0
- package/dist/bootstrap-installer.js +458 -0
- package/dist/bootstrap-installer.js.map +1 -0
- package/dist/command-handlers.d.ts +36 -0
- package/dist/command-handlers.d.ts.map +1 -0
- package/dist/command-handlers.js +296 -0
- package/dist/command-handlers.js.map +1 -0
- package/dist/commands.d.ts +74 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +302 -0
- package/dist/commands.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/local-adapter.d.ts +65 -0
- package/dist/local-adapter.d.ts.map +1 -0
- package/dist/local-adapter.js +611 -0
- package/dist/local-adapter.js.map +1 -0
- package/dist/managed-dispatch-adapter.d.ts +145 -0
- package/dist/managed-dispatch-adapter.d.ts.map +1 -0
- package/dist/managed-dispatch-adapter.js +220 -0
- package/dist/managed-dispatch-adapter.js.map +1 -0
- package/dist/server.d.ts +28 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +465 -0
- package/dist/server.js.map +1 -0
- package/dist/tool-stubs.d.ts +107 -0
- package/dist/tool-stubs.d.ts.map +1 -0
- package/dist/tool-stubs.js +329 -0
- package/dist/tool-stubs.js.map +1 -0
- package/package.json +54 -0
package/dist/server.js
ADDED
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
import { evaluateFlowDeskChatIntakeV1, getFlowDeskPortableCommandToolName, getRelease1SchemaArtifact } from "@flowdesk/core";
|
|
2
|
+
import { tool } from "@opencode-ai/plugin";
|
|
3
|
+
import { flowdeskPluginId, flowdeskPluginScaffold, hasProductionOpenCodeRegistration } from "./index.js";
|
|
4
|
+
import { createFlowDeskLocalNonDispatchAdapterSession, flowdeskLocalNonDispatchAdapterProfile } from "./local-adapter.js";
|
|
5
|
+
import { dispatchManagedDispatchBetaPromptV1 } from "./managed-dispatch-adapter.js";
|
|
6
|
+
import { FLOWDESK_PRE_SPIKE_PLUGIN_TOOL_STUBS, getFlowDeskRelease1HandlerReadinessSummary, getFlowDeskRelease1ProductionReadinessSummary, hasPassingFds1SchemaConversionSpike, runFlowDeskPreSpikePluginToolStub } from "./tool-stubs.js";
|
|
7
|
+
export const flowdeskPreSpikeDoctorToolName = "flowdesk_pre_spike_doctor";
|
|
8
|
+
export const flowdeskChatIntakeToolName = "flowdesk_chat_intake";
|
|
9
|
+
export const flowdeskFds1SchemaConversionProbeOption = "fds1SchemaConversionProbe";
|
|
10
|
+
export const flowdeskLocalNonDispatchAdapterOption = "localNonDispatchAdapter";
|
|
11
|
+
export const flowdeskNaturalLanguageRoutingOption = "naturalLanguageRouting";
|
|
12
|
+
export const flowdeskDurableStateRootOption = "durableStateRoot";
|
|
13
|
+
export const flowdeskProductionEnablementOption = "productionEnablement";
|
|
14
|
+
export const flowdeskManagedDispatchBetaAdapterOption = "managedDispatchBetaAdapter";
|
|
15
|
+
export const flowdeskManagedDispatchBetaToolName = "flowdesk_managed_dispatch_beta";
|
|
16
|
+
const flowdeskChatSuggestionDuplicateWindowMs = 10_000;
|
|
17
|
+
const disabledAuthority = {
|
|
18
|
+
productionRegistrationEligible: false,
|
|
19
|
+
dispatchApprovalEligible: false,
|
|
20
|
+
realOpenCodeDispatch: false,
|
|
21
|
+
actualLaneLaunch: false,
|
|
22
|
+
providerCall: false,
|
|
23
|
+
runtimeExecution: false,
|
|
24
|
+
fallbackAuthority: false,
|
|
25
|
+
hardCancelOrNoReplyAuthority: false
|
|
26
|
+
};
|
|
27
|
+
function isRecord(value) {
|
|
28
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
29
|
+
}
|
|
30
|
+
function isManagedDispatchBetaClient(value) {
|
|
31
|
+
if (!isRecord(value) || !isRecord(value.session))
|
|
32
|
+
return false;
|
|
33
|
+
return typeof value.session.prompt === "function" || typeof value.session.promptAsync === "function";
|
|
34
|
+
}
|
|
35
|
+
function boundedText(value, fallback) {
|
|
36
|
+
const trimmed = value.trim();
|
|
37
|
+
return (trimmed.length > 0 ? trimmed : fallback).slice(0, 500);
|
|
38
|
+
}
|
|
39
|
+
function safeToken(value, fallback) {
|
|
40
|
+
const source = typeof value === "string" && value.length > 0 ? value : fallback;
|
|
41
|
+
const token = source.replaceAll(/[^A-Za-z0-9_.:-]/g, "-").slice(0, 80);
|
|
42
|
+
return token.length > 0 ? token : fallback;
|
|
43
|
+
}
|
|
44
|
+
function commandNameFromAction(action) {
|
|
45
|
+
return action.startsWith("/flowdesk-") && action !== "/flowdesk-explain-route" && action !== "/flowdesk-audit" ? action : undefined;
|
|
46
|
+
}
|
|
47
|
+
function routedToolName(actions) {
|
|
48
|
+
const preferredActions = actions.length > 1 ? [...actions.filter((action) => action !== "/flowdesk-status"), ...actions.filter((action) => action === "/flowdesk-status")] : actions;
|
|
49
|
+
for (const action of preferredActions) {
|
|
50
|
+
const commandName = commandNameFromAction(action);
|
|
51
|
+
if (commandName === undefined)
|
|
52
|
+
continue;
|
|
53
|
+
const toolName = getFlowDeskPortableCommandToolName(commandName);
|
|
54
|
+
if (toolName !== undefined)
|
|
55
|
+
return toolName;
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
const chatEnvelopeOptionalFields = ["workflow_id", "session_ref", "redacted_intake_ref", "user_approval_ref"];
|
|
60
|
+
function baseToolRequest(request, schemaVersion, optionalFields = chatEnvelopeOptionalFields) {
|
|
61
|
+
const includeOptional = new Set(optionalFields);
|
|
62
|
+
return {
|
|
63
|
+
schema_version: schemaVersion,
|
|
64
|
+
request_id: safeToken(`${schemaVersion.split(".")[1] ?? "tool"}-${request.request_id}`, "request-chat-routed"),
|
|
65
|
+
input_mode: "chat_routed",
|
|
66
|
+
...(includeOptional.has("workflow_id") && request.workflow_id !== undefined ? { workflow_id: request.workflow_id } : {}),
|
|
67
|
+
...(includeOptional.has("session_ref") && request.session_ref !== undefined ? { session_ref: request.session_ref } : {}),
|
|
68
|
+
...(includeOptional.has("redacted_intake_ref") && request.redacted_intake_ref !== undefined ? { redacted_intake_ref: request.redacted_intake_ref } : {}),
|
|
69
|
+
...(includeOptional.has("user_approval_ref") && request.user_approval_ref !== undefined ? { user_approval_ref: request.user_approval_ref } : {})
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function routedToolRequest(toolName, request, options = {}) {
|
|
73
|
+
const summary = boundedText(request.intake_summary, "FlowDesk natural-language chat intake.");
|
|
74
|
+
if (toolName === "flowdesk_plan") {
|
|
75
|
+
return {
|
|
76
|
+
...baseToolRequest(request, "flowdesk.plan.request.v1"),
|
|
77
|
+
goal_summary: summary,
|
|
78
|
+
scope_summary: "FlowDesk natural-language chat intake routed to command-backed planning.",
|
|
79
|
+
risk_hint: options.requiresConfirmation === true ? "execution-like chat intake requires explicit user confirmation before any run" : "ordinary Release 1 command-backed steering only"
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
if (toolName === "flowdesk_run") {
|
|
83
|
+
return {
|
|
84
|
+
...baseToolRequest(request, "flowdesk.run.request.v1"),
|
|
85
|
+
run_mode: /dry[\s_-]*run|드라이\s*런/i.test(summary) ? "guarded-dry-run" : "fake-runtime",
|
|
86
|
+
plan_revision_id: safeToken(`plan-${request.workflow_id ?? request.request_id}`, "plan-chat-routed"),
|
|
87
|
+
step_id: safeToken(`step-${request.request_id}`, "step-chat-routed")
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (toolName === "flowdesk_status") {
|
|
91
|
+
return {
|
|
92
|
+
...baseToolRequest(request, "flowdesk.status.request.v1"),
|
|
93
|
+
detail_level: "summary"
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (toolName === "flowdesk_doctor") {
|
|
97
|
+
return {
|
|
98
|
+
...baseToolRequest(request, "flowdesk.doctor.request.v1", []),
|
|
99
|
+
check_scope: "all",
|
|
100
|
+
profile: "test",
|
|
101
|
+
persist_report: false
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
if (toolName === "flowdesk_resume") {
|
|
105
|
+
return {
|
|
106
|
+
...baseToolRequest(request, "flowdesk.resume.request.v1", []),
|
|
107
|
+
checkpoint_id: safeToken(`checkpoint-${request.workflow_id ?? request.request_id}`, "checkpoint-chat-routed"),
|
|
108
|
+
resume_mode: "status_only"
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
if (toolName === "flowdesk_retry") {
|
|
112
|
+
return {
|
|
113
|
+
...baseToolRequest(request, "flowdesk.retry.request.v1"),
|
|
114
|
+
attempt_id: safeToken(`attempt-${request.workflow_id ?? request.request_id}`, "attempt-chat-routed"),
|
|
115
|
+
retry_reason: "FlowDesk chat intake requested a non-dispatch retry diagnostic."
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (toolName === "flowdesk_abort") {
|
|
119
|
+
return {
|
|
120
|
+
...baseToolRequest(request, "flowdesk.abort.request.v1"),
|
|
121
|
+
workflow_id: safeToken(request.workflow_id ?? `workflow-${request.request_id}`, "workflow-chat-routed"),
|
|
122
|
+
reason: "FlowDesk chat intake requested a safe abort diagnostic."
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
if (toolName === "flowdesk_usage") {
|
|
126
|
+
return {
|
|
127
|
+
...baseToolRequest(request, "flowdesk.usage.request.v1", []),
|
|
128
|
+
provider_family: "unknown",
|
|
129
|
+
refresh: false
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
if (toolName === "flowdesk_export_debug") {
|
|
133
|
+
return {
|
|
134
|
+
...baseToolRequest(request, "flowdesk.export_debug.request.v1", []),
|
|
135
|
+
include_sections: ["redaction_summary"],
|
|
136
|
+
retention_hint: "keep_until_default_expiry"
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
return baseToolRequest(request, "flowdesk.tool.request.v1");
|
|
140
|
+
}
|
|
141
|
+
function evaluateNaturalLanguageRouting(request, session) {
|
|
142
|
+
const evaluation = evaluateFlowDeskChatIntakeV1({ request, chatIntakeMode: "steering", hookHarnessMode: "enforce" });
|
|
143
|
+
const toolName = evaluation.response.ok ? routedToolName(evaluation.response.safe_next_actions) : undefined;
|
|
144
|
+
const routedToolResult = toolName === undefined ? undefined : session.evaluate(toolName, routedToolRequest(toolName, request, { requiresConfirmation: evaluation.response.route_decision === "ask_clarification" }));
|
|
145
|
+
return {
|
|
146
|
+
schema_version: "flowdesk.chat_intake.routing_result.v1",
|
|
147
|
+
ok: evaluation.ok,
|
|
148
|
+
evaluation,
|
|
149
|
+
...(toolName === undefined ? {} : { routedToolName: toolName }),
|
|
150
|
+
...(routedToolResult === undefined ? {} : { routedToolResult }),
|
|
151
|
+
...disabledAuthority
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
function extractText(value) {
|
|
155
|
+
if (typeof value === "string")
|
|
156
|
+
return value;
|
|
157
|
+
if (!isRecord(value))
|
|
158
|
+
return "";
|
|
159
|
+
const direct = [value.text, value.content, value.message].filter((candidate) => typeof candidate === "string");
|
|
160
|
+
const partText = Array.isArray(value.parts) ? value.parts.map(extractText) : [];
|
|
161
|
+
const nestedMessage = isRecord(value.message) ? [extractText(value.message)] : [];
|
|
162
|
+
return [...direct, ...partText, ...nestedMessage].filter((text) => text.length > 0).join(" ");
|
|
163
|
+
}
|
|
164
|
+
function intakeRequestFromChatMessage(input) {
|
|
165
|
+
const record = isRecord(input) ? input : {};
|
|
166
|
+
const requestId = safeToken(record.request_id ?? record.message_id ?? record.messageID ?? record.id, "chat-message");
|
|
167
|
+
const sessionRef = safeToken(record.session_ref ?? record.session_id ?? record.sessionID, "chat-session");
|
|
168
|
+
return {
|
|
169
|
+
schema_version: "flowdesk.chat_intake.request.v1",
|
|
170
|
+
request_id: `chat-${requestId}`,
|
|
171
|
+
input_mode: "chat_routed",
|
|
172
|
+
session_ref: sessionRef,
|
|
173
|
+
redacted_intake_ref: `intake-${requestId}`,
|
|
174
|
+
intake_summary: boundedText(extractText(record.message ?? record), "FlowDesk chat message."),
|
|
175
|
+
source_surface: "chat.message"
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
function clockMs(clock) {
|
|
179
|
+
return (typeof clock === "function" ? clock() : clock).getTime();
|
|
180
|
+
}
|
|
181
|
+
function previewNaturalLanguageRouting(request) {
|
|
182
|
+
const evaluation = evaluateFlowDeskChatIntakeV1({ request, chatIntakeMode: "steering", hookHarnessMode: "enforce" });
|
|
183
|
+
const toolName = evaluation.response.ok ? routedToolName(evaluation.response.safe_next_actions) : undefined;
|
|
184
|
+
return { evaluation, toolName };
|
|
185
|
+
}
|
|
186
|
+
function mayCreatePendingConfirmation(preview) {
|
|
187
|
+
return preview.evaluation.response.route_decision === "ask_clarification" && preview.toolName === "flowdesk_plan";
|
|
188
|
+
}
|
|
189
|
+
function suggestionDuplicateKey(request, response) {
|
|
190
|
+
const suggestedNextStep = response.safe_next_actions[0] ?? "/flowdesk-status";
|
|
191
|
+
return [request.session_ref, response.route_decision, suggestedNextStep].map((part, index) => safeToken(part, `chat-card-${index}`)).join("|");
|
|
192
|
+
}
|
|
193
|
+
function steeringText(result) {
|
|
194
|
+
const response = result.evaluation.response;
|
|
195
|
+
const actions = response.safe_next_actions.map((action) => action === "ask_clarification" ? "Confirm the goal or plan before FlowDesk suggests a run." : action);
|
|
196
|
+
const suggestedNextStep = actions[0] ?? "/flowdesk-status";
|
|
197
|
+
const localState = isRecord(result.routedToolResult) && isRecord(result.routedToolResult.localState) ? result.routedToolResult.localState : undefined;
|
|
198
|
+
const confirmationRef = localState?.pendingConfirmationStatus === "pending" && typeof localState.pendingConfirmationRef === "string" ? localState.pendingConfirmationRef : undefined;
|
|
199
|
+
const why = response.ok === false
|
|
200
|
+
? "This request needs capabilities that are not available in the safe FlowDesk mode."
|
|
201
|
+
: response.route_decision === "ask_clarification"
|
|
202
|
+
? "FlowDesk needs confirmation or a clearer goal before suggesting a command-backed workflow."
|
|
203
|
+
: response.route_decision === "show_plan"
|
|
204
|
+
? "Your message looks like planning work that FlowDesk can organize as a command-backed plan."
|
|
205
|
+
: "Your message matches a safe FlowDesk command-backed workflow.";
|
|
206
|
+
return [
|
|
207
|
+
"FlowDesk",
|
|
208
|
+
`Suggested next step: ${suggestedNextStep}`,
|
|
209
|
+
`Why: ${why}`,
|
|
210
|
+
...(confirmationRef === undefined ? [] : [`Confirmation code: ${confirmationRef}`, "To continue, review the plan and reply with this confirmation code plus explicit approval."]),
|
|
211
|
+
"Actions:",
|
|
212
|
+
...actions.map((action) => `- ${action}`)
|
|
213
|
+
].join("\n");
|
|
214
|
+
}
|
|
215
|
+
function enumValues(values) {
|
|
216
|
+
if (values.length === 0)
|
|
217
|
+
throw new Error("FDS-1 enum field has no values");
|
|
218
|
+
return [values[0], ...values.slice(1)];
|
|
219
|
+
}
|
|
220
|
+
function zodForSchemaProperty(schemaId, fieldName, required) {
|
|
221
|
+
const artifact = getRelease1SchemaArtifact(schemaId);
|
|
222
|
+
if (artifact === undefined)
|
|
223
|
+
throw new Error(`missing FDS-1 schema artifact: ${schemaId}`);
|
|
224
|
+
const property = artifact.properties[fieldName];
|
|
225
|
+
if (property === undefined)
|
|
226
|
+
throw new Error(`missing FDS-1 property ${fieldName} for ${schemaId}`);
|
|
227
|
+
let schema;
|
|
228
|
+
if (property.enum !== undefined)
|
|
229
|
+
schema = tool.schema.enum(enumValues(property.enum));
|
|
230
|
+
else if (property.type === "number")
|
|
231
|
+
schema = tool.schema.number();
|
|
232
|
+
else if (property.type === "boolean")
|
|
233
|
+
schema = tool.schema.boolean();
|
|
234
|
+
else if (property.type === "array")
|
|
235
|
+
schema = tool.schema.array(tool.schema.string());
|
|
236
|
+
else if (property.type === "object")
|
|
237
|
+
schema = tool.schema.record(tool.schema.string(), tool.schema.unknown());
|
|
238
|
+
else
|
|
239
|
+
schema = tool.schema.string();
|
|
240
|
+
if (property.maxLength !== undefined && property.type === "string")
|
|
241
|
+
schema = schema.max(property.maxLength);
|
|
242
|
+
if (property.maxItems !== undefined && property.type === "array")
|
|
243
|
+
schema = schema.max(property.maxItems);
|
|
244
|
+
schema = schema.describe(property.description);
|
|
245
|
+
return required ? schema : schema.optional();
|
|
246
|
+
}
|
|
247
|
+
export function createFlowDeskFds1SchemaConversionProbeTools() {
|
|
248
|
+
return Object.fromEntries(FLOWDESK_PRE_SPIKE_PLUGIN_TOOL_STUBS.map((stub) => {
|
|
249
|
+
const artifact = getRelease1SchemaArtifact(stub.requestSchemaId);
|
|
250
|
+
if (artifact === undefined)
|
|
251
|
+
throw new Error(`missing FDS-1 schema artifact: ${stub.requestSchemaId}`);
|
|
252
|
+
const required = new Set(artifact.required);
|
|
253
|
+
const args = Object.fromEntries(Object.keys(artifact.properties).map((fieldName) => [fieldName, zodForSchemaProperty(stub.requestSchemaId, fieldName, required.has(fieldName))]));
|
|
254
|
+
return [
|
|
255
|
+
stub.toolName,
|
|
256
|
+
tool({
|
|
257
|
+
description: `FlowDesk FDS-1 schema conversion probe for ${stub.toolName}; no dispatch, provider call, or runtime execution.`,
|
|
258
|
+
args,
|
|
259
|
+
async execute(request) {
|
|
260
|
+
return JSON.stringify(runFlowDeskPreSpikePluginToolStub(stub.toolName, request));
|
|
261
|
+
}
|
|
262
|
+
})
|
|
263
|
+
];
|
|
264
|
+
}));
|
|
265
|
+
}
|
|
266
|
+
export function createFlowDeskLocalNonDispatchAdapterTools(now = new Date(), session = createFlowDeskLocalNonDispatchAdapterSession(now)) {
|
|
267
|
+
return Object.fromEntries(FLOWDESK_PRE_SPIKE_PLUGIN_TOOL_STUBS.map((stub) => {
|
|
268
|
+
const artifact = getRelease1SchemaArtifact(stub.requestSchemaId);
|
|
269
|
+
if (artifact === undefined)
|
|
270
|
+
throw new Error(`missing FDS-1 schema artifact: ${stub.requestSchemaId}`);
|
|
271
|
+
const required = new Set(artifact.required);
|
|
272
|
+
const args = Object.fromEntries(Object.keys(artifact.properties).map((fieldName) => [fieldName, zodForSchemaProperty(stub.requestSchemaId, fieldName, required.has(fieldName))]));
|
|
273
|
+
return [
|
|
274
|
+
stub.toolName,
|
|
275
|
+
tool({
|
|
276
|
+
description: `FlowDesk local non-dispatch command adapter for ${stub.toolName}; no provider call, real dispatch, or lane launch.`,
|
|
277
|
+
args,
|
|
278
|
+
async execute(request) {
|
|
279
|
+
return JSON.stringify(session.evaluate(stub.toolName, request));
|
|
280
|
+
}
|
|
281
|
+
})
|
|
282
|
+
];
|
|
283
|
+
}));
|
|
284
|
+
}
|
|
285
|
+
export function createFlowDeskNaturalLanguageRoutingTools(now = new Date(), session = createFlowDeskLocalNonDispatchAdapterSession(now)) {
|
|
286
|
+
const artifact = getRelease1SchemaArtifact("flowdesk.chat_intake.request.v1");
|
|
287
|
+
if (artifact === undefined)
|
|
288
|
+
throw new Error("missing FDS-1 schema artifact: flowdesk.chat_intake.request.v1");
|
|
289
|
+
const required = new Set(artifact.required);
|
|
290
|
+
const args = Object.fromEntries(Object.keys(artifact.properties).map((fieldName) => [fieldName, zodForSchemaProperty("flowdesk.chat_intake.request.v1", fieldName, required.has(fieldName))]));
|
|
291
|
+
return {
|
|
292
|
+
[flowdeskChatIntakeToolName]: tool({
|
|
293
|
+
description: "FlowDesk natural-language chat intake steering; command-backed only, with no provider call, real dispatch, lane launch, fallback, or hard chat control.",
|
|
294
|
+
args,
|
|
295
|
+
async execute(request) {
|
|
296
|
+
return JSON.stringify(evaluateNaturalLanguageRouting(request, session));
|
|
297
|
+
}
|
|
298
|
+
})
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
function redactedManagedDispatchBetaToolResult(result) {
|
|
302
|
+
return {
|
|
303
|
+
adapterProfile: result.adapterProfile,
|
|
304
|
+
status: result.status,
|
|
305
|
+
dispatchAttempted: result.dispatchAttempted,
|
|
306
|
+
guardDecision: result.guardDecision,
|
|
307
|
+
authority: result.authority,
|
|
308
|
+
verification: result.verification,
|
|
309
|
+
...(result.dispatchAttempted ? {
|
|
310
|
+
dispatchMethod: result.dispatchMethod,
|
|
311
|
+
sessionId: result.sessionId,
|
|
312
|
+
agent: result.agent,
|
|
313
|
+
model: result.model,
|
|
314
|
+
...("redactedErrorCategory" in result ? { redactedErrorCategory: result.redactedErrorCategory } : {}),
|
|
315
|
+
responseObserved: "response" in result && result.response !== undefined
|
|
316
|
+
} : { redactedBlockReason: result.redactedBlockReason })
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
export function createFlowDeskManagedDispatchBetaOptInTools(client) {
|
|
320
|
+
return {
|
|
321
|
+
[flowdeskManagedDispatchBetaToolName]: tool({
|
|
322
|
+
description: "FlowDesk Release 2 managed-dispatch beta opt-in tool; requires full Guard evidence and calls only the injected OpenCode SDK client without fallback.",
|
|
323
|
+
args: {
|
|
324
|
+
boundaryInput: tool.schema.record(tool.schema.string(), tool.schema.unknown()).describe("Complete ManagedDispatchBetaBoundaryInputV1 evidence bundle; no raw prompts or provider payloads."),
|
|
325
|
+
request: tool.schema.record(tool.schema.string(), tool.schema.unknown()).describe("Bounded managed dispatch request with session, agent, provider-qualified model id, and approved prompt summary/text.")
|
|
326
|
+
},
|
|
327
|
+
async execute(input) {
|
|
328
|
+
const record = isRecord(input) ? input : {};
|
|
329
|
+
if (!isRecord(record.boundaryInput) || !isRecord(record.request)) {
|
|
330
|
+
return JSON.stringify({
|
|
331
|
+
adapterProfile: "managed_dispatch_beta_real_opencode_dispatch_adapter",
|
|
332
|
+
status: "blocked_before_dispatch",
|
|
333
|
+
dispatchAttempted: false,
|
|
334
|
+
redactedBlockReason: "Managed-dispatch beta requires boundaryInput and request records.",
|
|
335
|
+
authority: { ...disabledAuthority, toolAuthority: false },
|
|
336
|
+
verification: { defaultRelease1ServerBehaviorUnchanged: true }
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
const result = await dispatchManagedDispatchBetaPromptV1({
|
|
340
|
+
client,
|
|
341
|
+
boundaryInput: record.boundaryInput,
|
|
342
|
+
request: record.request
|
|
343
|
+
});
|
|
344
|
+
return JSON.stringify(redactedManagedDispatchBetaToolResult(result));
|
|
345
|
+
}
|
|
346
|
+
})
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
export function createFlowDeskNaturalLanguageChatMessageHook(now = () => new Date(), session = createFlowDeskLocalNonDispatchAdapterSession(now)) {
|
|
350
|
+
const recentSuggestionCards = new Map();
|
|
351
|
+
return async function message(input, output) {
|
|
352
|
+
const inputRecord = isRecord(input) ? input : {};
|
|
353
|
+
const request = intakeRequestFromChatMessage({ ...inputRecord, ...output });
|
|
354
|
+
const preview = previewNaturalLanguageRouting(request);
|
|
355
|
+
if (preview.evaluation.response.route_decision === "continue_chat")
|
|
356
|
+
return;
|
|
357
|
+
const nowMs = clockMs(now);
|
|
358
|
+
for (const [key, recordedAtMs] of recentSuggestionCards) {
|
|
359
|
+
if (nowMs - recordedAtMs > flowdeskChatSuggestionDuplicateWindowMs || nowMs < recordedAtMs)
|
|
360
|
+
recentSuggestionCards.delete(key);
|
|
361
|
+
}
|
|
362
|
+
if (!mayCreatePendingConfirmation(preview)) {
|
|
363
|
+
const duplicateKey = suggestionDuplicateKey(request, preview.evaluation.response);
|
|
364
|
+
const previousAtMs = recentSuggestionCards.get(duplicateKey);
|
|
365
|
+
recentSuggestionCards.set(duplicateKey, nowMs);
|
|
366
|
+
if (previousAtMs !== undefined && nowMs - previousAtMs <= flowdeskChatSuggestionDuplicateWindowMs)
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
const result = evaluateNaturalLanguageRouting(request, session);
|
|
370
|
+
if (!Array.isArray(output.parts))
|
|
371
|
+
output.parts = [];
|
|
372
|
+
output.parts.push({ type: "text", text: steeringText(result) });
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
function isFds1SchemaConversionProbeEnabled(options) {
|
|
376
|
+
return options?.[flowdeskFds1SchemaConversionProbeOption] === true;
|
|
377
|
+
}
|
|
378
|
+
function isLocalNonDispatchAdapterEnabled(options) {
|
|
379
|
+
const value = options?.[flowdeskLocalNonDispatchAdapterOption];
|
|
380
|
+
if (value !== undefined)
|
|
381
|
+
return value !== false;
|
|
382
|
+
return !isFds1SchemaConversionProbeEnabled(options);
|
|
383
|
+
}
|
|
384
|
+
function isNaturalLanguageRoutingEnabled(options) {
|
|
385
|
+
const value = options?.[flowdeskNaturalLanguageRoutingOption];
|
|
386
|
+
if (value !== undefined)
|
|
387
|
+
return value !== false;
|
|
388
|
+
return !isFds1SchemaConversionProbeEnabled(options);
|
|
389
|
+
}
|
|
390
|
+
function durableStateRootFromOptions(options) {
|
|
391
|
+
const value = options?.[flowdeskDurableStateRootOption];
|
|
392
|
+
return typeof value === "string" && value.trim().length > 0 ? value : undefined;
|
|
393
|
+
}
|
|
394
|
+
function productionEnablementFromOptions(options) {
|
|
395
|
+
const value = options?.[flowdeskProductionEnablementOption];
|
|
396
|
+
if (!isRecord(value) || value.enabled !== true)
|
|
397
|
+
return undefined;
|
|
398
|
+
return {
|
|
399
|
+
enabled: true,
|
|
400
|
+
...(typeof value.preDispatchAuditRef === "string" ? { preDispatchAuditRef: value.preDispatchAuditRef } : {}),
|
|
401
|
+
...(typeof value.configuredVerificationRef === "string" ? { configuredVerificationRef: value.configuredVerificationRef } : {}),
|
|
402
|
+
...(typeof value.externalAuthPolicyRef === "string" ? { externalAuthPolicyRef: value.externalAuthPolicyRef } : {}),
|
|
403
|
+
...(typeof value.providerPolicyRef === "string" ? { providerPolicyRef: value.providerPolicyRef } : {}),
|
|
404
|
+
...(Array.isArray(value.laneConformanceRefs) && value.laneConformanceRefs.every((ref) => typeof ref === "string") ? { laneConformanceRefs: value.laneConformanceRefs } : {}),
|
|
405
|
+
...(typeof value.allowIncompleteConformance === "boolean" ? { allowIncompleteConformance: value.allowIncompleteConformance } : {})
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
function isManagedDispatchBetaAdapterEnabled(options) {
|
|
409
|
+
const value = options?.[flowdeskManagedDispatchBetaAdapterOption];
|
|
410
|
+
return value === true || (isRecord(value) && value.enabled === true);
|
|
411
|
+
}
|
|
412
|
+
function managedDispatchBetaClientFrom(input, options) {
|
|
413
|
+
const option = options?.[flowdeskManagedDispatchBetaAdapterOption];
|
|
414
|
+
if (isRecord(option) && isManagedDispatchBetaClient(option.client))
|
|
415
|
+
return option.client;
|
|
416
|
+
return isRecord(input) && isManagedDispatchBetaClient(input.client) ? input.client : undefined;
|
|
417
|
+
}
|
|
418
|
+
const flowdeskServerPlugin = async (input, options) => {
|
|
419
|
+
const localSession = isLocalNonDispatchAdapterEnabled(options) || isNaturalLanguageRoutingEnabled(options) ? createFlowDeskLocalNonDispatchAdapterSession(new Date(), undefined, { durableStateRootDir: durableStateRootFromOptions(options), productionEnablement: productionEnablementFromOptions(options) }) : undefined;
|
|
420
|
+
const managedDispatchBetaClient = isManagedDispatchBetaAdapterEnabled(options) ? managedDispatchBetaClientFrom(input, options) : undefined;
|
|
421
|
+
const tools = {
|
|
422
|
+
[flowdeskPreSpikeDoctorToolName]: tool({
|
|
423
|
+
description: "Report FlowDesk plugin load status without enabling real dispatch, provider calls, or runtime execution.",
|
|
424
|
+
args: {},
|
|
425
|
+
async execute() {
|
|
426
|
+
return JSON.stringify({
|
|
427
|
+
pluginId: flowdeskPluginId,
|
|
428
|
+
loaded: true,
|
|
429
|
+
probeRegistrationProfile: isFds1SchemaConversionProbeEnabled(options) ? "sandbox_conformance_probe_only" : "disabled",
|
|
430
|
+
localNonDispatchAdapterProfile: isLocalNonDispatchAdapterEnabled(options) ? flowdeskLocalNonDispatchAdapterProfile : "disabled",
|
|
431
|
+
naturalLanguageRoutingProfile: isNaturalLanguageRoutingEnabled(options) ? "chat_steering_command_backed_non_dispatch" : "disabled",
|
|
432
|
+
productionPromotionGate: "release1_non_dispatch_command_registration_ready",
|
|
433
|
+
productionOpenCodeRegistration: hasProductionOpenCodeRegistration(),
|
|
434
|
+
productionToolRegistration: flowdeskPluginScaffold.productionToolRegistration,
|
|
435
|
+
release1HandlerReadiness: getFlowDeskRelease1HandlerReadinessSummary(),
|
|
436
|
+
release1ProductionReadiness: getFlowDeskRelease1ProductionReadinessSummary(),
|
|
437
|
+
fds1SchemaConversionSpikePassed: hasPassingFds1SchemaConversionSpike(),
|
|
438
|
+
realOpenCodeDispatch: flowdeskPluginScaffold.runtimeBoundary.realOpenCodeDispatch,
|
|
439
|
+
providerCall: false,
|
|
440
|
+
runtimeExecution: false,
|
|
441
|
+
actualLaneLaunch: false,
|
|
442
|
+
fallbackAuthority: false,
|
|
443
|
+
hardCancelOrNoReplyAuthority: false
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
})
|
|
447
|
+
};
|
|
448
|
+
if (isFds1SchemaConversionProbeEnabled(options))
|
|
449
|
+
Object.assign(tools, createFlowDeskFds1SchemaConversionProbeTools());
|
|
450
|
+
if (isLocalNonDispatchAdapterEnabled(options))
|
|
451
|
+
Object.assign(tools, createFlowDeskLocalNonDispatchAdapterTools(new Date(), localSession));
|
|
452
|
+
if (isNaturalLanguageRoutingEnabled(options))
|
|
453
|
+
Object.assign(tools, createFlowDeskNaturalLanguageRoutingTools(new Date(), localSession));
|
|
454
|
+
if (managedDispatchBetaClient !== undefined)
|
|
455
|
+
Object.assign(tools, createFlowDeskManagedDispatchBetaOptInTools(managedDispatchBetaClient));
|
|
456
|
+
if (!isNaturalLanguageRoutingEnabled(options))
|
|
457
|
+
return { tool: tools };
|
|
458
|
+
return { tool: tools, "chat.message": createFlowDeskNaturalLanguageChatMessageHook(() => new Date(), localSession) };
|
|
459
|
+
};
|
|
460
|
+
export const flowdeskOpenCodeServerPlugin = {
|
|
461
|
+
id: flowdeskPluginId,
|
|
462
|
+
server: flowdeskServerPlugin
|
|
463
|
+
};
|
|
464
|
+
export default flowdeskOpenCodeServerPlugin;
|
|
465
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type { FlowDeskCommandManifestEntryV1, FlowDeskRelease1MinimumToolName, ValidationResult } from "@flowdesk/core";
|
|
2
|
+
export interface FlowDeskPreSpikePluginToolStubV1 {
|
|
3
|
+
stubId: string;
|
|
4
|
+
commandName: FlowDeskCommandManifestEntryV1["commandName"];
|
|
5
|
+
toolName: FlowDeskRelease1MinimumToolName;
|
|
6
|
+
requestSchemaId: string;
|
|
7
|
+
responseSchemaId: string;
|
|
8
|
+
fixturePrefix: string;
|
|
9
|
+
registrationProfile: "sandbox_conformance_probe_only";
|
|
10
|
+
handlerMode: "pre_spike_test_harness_stub";
|
|
11
|
+
schemaConversionArtifactStatus: "compatible_runtime_closed_validation";
|
|
12
|
+
productionPromotionGate: "blocked_production_opencode_registration_disabled";
|
|
13
|
+
productionToolRegistration: "disabled_production_opencode_registration";
|
|
14
|
+
runtimeDispatch: "disabled_release1_pre_spike";
|
|
15
|
+
productionRegistrationEligible: false;
|
|
16
|
+
schemaConversionReady: false;
|
|
17
|
+
dispatchApprovalEligible: false;
|
|
18
|
+
fallbackAuthority: false;
|
|
19
|
+
hardCancelOrNoReplyAuthority: false;
|
|
20
|
+
actualLaneLaunch: false;
|
|
21
|
+
providerCall: false;
|
|
22
|
+
runtimeExecution: false;
|
|
23
|
+
}
|
|
24
|
+
export interface FlowDeskPreSpikePluginToolHandlerResultV1 {
|
|
25
|
+
toolName: FlowDeskRelease1MinimumToolName;
|
|
26
|
+
accepted: false;
|
|
27
|
+
requestSchemaValid: boolean;
|
|
28
|
+
responseSchemaValid: boolean;
|
|
29
|
+
blockedReason: "production_opencode_registration_disabled" | "request_schema_invalid";
|
|
30
|
+
registrationProfile: "sandbox_conformance_probe_only";
|
|
31
|
+
productionPromotionGate: "blocked_production_opencode_registration_disabled";
|
|
32
|
+
responseSample: Readonly<Record<string, unknown>>;
|
|
33
|
+
productionRegistrationEligible: false;
|
|
34
|
+
dispatchApprovalEligible: false;
|
|
35
|
+
providerCall: false;
|
|
36
|
+
runtimeExecution: false;
|
|
37
|
+
}
|
|
38
|
+
export type FlowDeskRelease1HandlerReadinessStatusV1 = "diagnostic_scaffold_available" | "core_evaluator_available" | "schema_only_pending";
|
|
39
|
+
export interface FlowDeskRelease1HandlerReadinessEntryV1 {
|
|
40
|
+
commandName: FlowDeskCommandManifestEntryV1["commandName"];
|
|
41
|
+
toolName: FlowDeskRelease1MinimumToolName;
|
|
42
|
+
handlerReadiness: FlowDeskRelease1HandlerReadinessStatusV1;
|
|
43
|
+
productionRegistrationEligible: true;
|
|
44
|
+
productionPromotionGate: "release1_command_backed_handlers_ready";
|
|
45
|
+
realOpenCodeDispatch: false;
|
|
46
|
+
actualLaneLaunch: false;
|
|
47
|
+
providerCall: false;
|
|
48
|
+
runtimeExecution: false;
|
|
49
|
+
}
|
|
50
|
+
export interface FlowDeskRelease1HandlerReadinessSummaryV1 {
|
|
51
|
+
totalTools: number;
|
|
52
|
+
diagnosticScaffoldAvailable: number;
|
|
53
|
+
coreEvaluatorAvailable: number;
|
|
54
|
+
schemaOnlyPending: number;
|
|
55
|
+
productionReady: true;
|
|
56
|
+
productionPromotionGate: "release1_command_backed_handlers_ready";
|
|
57
|
+
}
|
|
58
|
+
export type FlowDeskRelease1ProductionReadinessCheckIdV1 = "handler_readiness" | "schema_evidence" | "guard_boundary" | "audit_write_boundary" | "policy_permission_boundary" | "redaction_boundary" | "disabled_modes" | "production_adapter_boundary";
|
|
59
|
+
export type FlowDeskRelease1ProductionReadinessCheckStatusV1 = "passed" | "blocked";
|
|
60
|
+
export interface FlowDeskRelease1ProductionReadinessCheckV1 {
|
|
61
|
+
checkId: FlowDeskRelease1ProductionReadinessCheckIdV1;
|
|
62
|
+
status: FlowDeskRelease1ProductionReadinessCheckStatusV1;
|
|
63
|
+
evidenceRef: string;
|
|
64
|
+
blocker: string;
|
|
65
|
+
productionRegistrationEligible: true;
|
|
66
|
+
realOpenCodeDispatch: false;
|
|
67
|
+
actualLaneLaunch: false;
|
|
68
|
+
providerCall: false;
|
|
69
|
+
runtimeExecution: false;
|
|
70
|
+
fallbackAuthority: false;
|
|
71
|
+
hardCancelOrNoReplyAuthority: false;
|
|
72
|
+
}
|
|
73
|
+
export interface FlowDeskRelease1ProductionReadinessSummaryV1 {
|
|
74
|
+
totalChecks: number;
|
|
75
|
+
passedChecks: number;
|
|
76
|
+
blockedChecks: number;
|
|
77
|
+
productionReady: true;
|
|
78
|
+
productionPromotionGate: "release1_non_dispatch_registration_ready";
|
|
79
|
+
blockedReasons: string[];
|
|
80
|
+
productionRegistrationEligible: true;
|
|
81
|
+
realOpenCodeDispatch: false;
|
|
82
|
+
actualLaneLaunch: false;
|
|
83
|
+
providerCall: false;
|
|
84
|
+
runtimeExecution: false;
|
|
85
|
+
fallbackAuthority: false;
|
|
86
|
+
hardCancelOrNoReplyAuthority: false;
|
|
87
|
+
}
|
|
88
|
+
export declare const FLOWDESK_PRE_SPIKE_PLUGIN_TOOL_STUBS: readonly FlowDeskPreSpikePluginToolStubV1[];
|
|
89
|
+
export declare const FLOWDESK_PRE_SPIKE_PRODUCTION_TOOL_REGISTRY: readonly [];
|
|
90
|
+
export declare const FLOWDESK_RELEASE_1_HANDLER_READINESS: readonly FlowDeskRelease1HandlerReadinessEntryV1[];
|
|
91
|
+
export declare const FLOWDESK_RELEASE_1_PRODUCTION_READINESS_CHECKS: readonly FlowDeskRelease1ProductionReadinessCheckV1[];
|
|
92
|
+
export declare function hasPassingFds1SchemaConversionSpike(): true;
|
|
93
|
+
export declare function getFlowDeskRelease1HandlerReadiness(): readonly FlowDeskRelease1HandlerReadinessEntryV1[];
|
|
94
|
+
export declare function getFlowDeskRelease1HandlerReadinessSummary(): FlowDeskRelease1HandlerReadinessSummaryV1;
|
|
95
|
+
export declare function getFlowDeskRelease1ProductionReadinessChecks(): readonly FlowDeskRelease1ProductionReadinessCheckV1[];
|
|
96
|
+
export declare function getFlowDeskRelease1ProductionReadinessSummary(): FlowDeskRelease1ProductionReadinessSummaryV1;
|
|
97
|
+
export declare function getFlowDeskPreSpikePluginToolStubs(): readonly FlowDeskPreSpikePluginToolStubV1[];
|
|
98
|
+
export declare function getFlowDeskPreSpikePluginToolStub(toolName: string): FlowDeskPreSpikePluginToolStubV1 | undefined;
|
|
99
|
+
export declare function getFlowDeskPreSpikeProductionToolRegistry(): readonly FlowDeskPreSpikePluginToolStubV1[];
|
|
100
|
+
export declare function validateFlowDeskPreSpikePluginToolStub(stub: unknown): ValidationResult;
|
|
101
|
+
export declare function validateFlowDeskPreSpikePluginToolStubsComplete(stubs?: readonly unknown[]): ValidationResult;
|
|
102
|
+
export declare function validateFlowDeskRelease1HandlerReadinessEntry(entry: unknown): ValidationResult;
|
|
103
|
+
export declare function validateFlowDeskRelease1HandlerReadiness(readiness?: readonly unknown[]): ValidationResult;
|
|
104
|
+
export declare function validateFlowDeskRelease1ProductionReadinessCheck(check: unknown): ValidationResult;
|
|
105
|
+
export declare function validateFlowDeskRelease1ProductionReadiness(checks?: readonly unknown[]): ValidationResult;
|
|
106
|
+
export declare function runFlowDeskPreSpikePluginToolStub(toolName: string, request: unknown): FlowDeskPreSpikePluginToolHandlerResultV1;
|
|
107
|
+
//# sourceMappingURL=tool-stubs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-stubs.d.ts","sourceRoot":"","sources":["../src/tool-stubs.ts"],"names":[],"mappings":"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"}
|