@flowdesk/opencode-plugin 0.1.13 → 0.1.15

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.
Files changed (80) hide show
  1. package/README.md +1 -1
  2. package/dist/agent-task-output.d.ts +29 -0
  3. package/dist/agent-task-output.d.ts.map +1 -0
  4. package/dist/agent-task-output.js +225 -0
  5. package/dist/agent-task-output.js.map +1 -0
  6. package/dist/agent-task-runner.d.ts +34 -0
  7. package/dist/agent-task-runner.d.ts.map +1 -1
  8. package/dist/agent-task-runner.js +634 -84
  9. package/dist/agent-task-runner.js.map +1 -1
  10. package/dist/auto-continue-preview-tool.d.ts +36 -0
  11. package/dist/auto-continue-preview-tool.d.ts.map +1 -0
  12. package/dist/auto-continue-preview-tool.js +119 -0
  13. package/dist/auto-continue-preview-tool.js.map +1 -0
  14. package/dist/completion-ui-cache.d.ts +6 -0
  15. package/dist/completion-ui-cache.d.ts.map +1 -0
  16. package/dist/completion-ui-cache.js +390 -0
  17. package/dist/completion-ui-cache.js.map +1 -0
  18. package/dist/event-hook-observer.d.ts +14 -0
  19. package/dist/event-hook-observer.d.ts.map +1 -0
  20. package/dist/event-hook-observer.js +257 -0
  21. package/dist/event-hook-observer.js.map +1 -0
  22. package/dist/managed-dispatch-adapter.d.ts +62 -0
  23. package/dist/managed-dispatch-adapter.d.ts.map +1 -1
  24. package/dist/managed-dispatch-adapter.js +472 -4
  25. package/dist/managed-dispatch-adapter.js.map +1 -1
  26. package/dist/model-selection-engine.d.ts +60 -0
  27. package/dist/model-selection-engine.d.ts.map +1 -0
  28. package/dist/model-selection-engine.js +242 -0
  29. package/dist/model-selection-engine.js.map +1 -0
  30. package/dist/provider-usage-live-tool.d.ts +10 -0
  31. package/dist/provider-usage-live-tool.d.ts.map +1 -1
  32. package/dist/provider-usage-live-tool.js +262 -33
  33. package/dist/provider-usage-live-tool.js.map +1 -1
  34. package/dist/server.d.ts +36 -1
  35. package/dist/server.d.ts.map +1 -1
  36. package/dist/server.js +497 -20
  37. package/dist/server.js.map +1 -1
  38. package/dist/stall-recovery.d.ts +34 -0
  39. package/dist/stall-recovery.d.ts.map +1 -1
  40. package/dist/stall-recovery.js +680 -3
  41. package/dist/stall-recovery.js.map +1 -1
  42. package/dist/status-live-tool.d.ts +54 -0
  43. package/dist/status-live-tool.d.ts.map +1 -1
  44. package/dist/status-live-tool.js +449 -44
  45. package/dist/status-live-tool.js.map +1 -1
  46. package/dist/tui-subtask-activity.d.ts +73 -0
  47. package/dist/tui-subtask-activity.d.ts.map +1 -0
  48. package/dist/tui-subtask-activity.js +271 -0
  49. package/dist/tui-subtask-activity.js.map +1 -0
  50. package/dist/tui-usage-snapshot.d.ts +14 -0
  51. package/dist/tui-usage-snapshot.d.ts.map +1 -1
  52. package/dist/tui-usage-snapshot.js +275 -8
  53. package/dist/tui-usage-snapshot.js.map +1 -1
  54. package/dist/tui.d.ts.map +1 -1
  55. package/dist/tui.js +102 -44
  56. package/dist/tui.js.map +1 -1
  57. package/dist/workflow-assign-tool.d.ts +23 -0
  58. package/dist/workflow-assign-tool.d.ts.map +1 -0
  59. package/dist/workflow-assign-tool.js +135 -0
  60. package/dist/workflow-assign-tool.js.map +1 -0
  61. package/dist/workflow-author-tool.d.ts +29 -0
  62. package/dist/workflow-author-tool.d.ts.map +1 -0
  63. package/dist/workflow-author-tool.js +227 -0
  64. package/dist/workflow-author-tool.js.map +1 -0
  65. package/dist/workflow-dispatch-tool.d.ts +12 -0
  66. package/dist/workflow-dispatch-tool.d.ts.map +1 -1
  67. package/dist/workflow-dispatch-tool.js +31 -3
  68. package/dist/workflow-dispatch-tool.js.map +1 -1
  69. package/dist/workflow-orchestrator.d.ts +31 -0
  70. package/dist/workflow-orchestrator.d.ts.map +1 -0
  71. package/dist/workflow-orchestrator.js +160 -0
  72. package/dist/workflow-orchestrator.js.map +1 -0
  73. package/dist/workflow-scheduler.d.ts.map +1 -1
  74. package/dist/workflow-scheduler.js +3 -1
  75. package/dist/workflow-scheduler.js.map +1 -1
  76. package/dist/workflow-synthesis-tool.d.ts +31 -0
  77. package/dist/workflow-synthesis-tool.d.ts.map +1 -0
  78. package/dist/workflow-synthesis-tool.js +194 -0
  79. package/dist/workflow-synthesis-tool.js.map +1 -0
  80. package/package.json +2 -2
package/dist/tui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { FlowDeskTuiUsageProviderRowV1 } from "./tui-usage-snapshot.js";
2
+ export interface FlowDeskWorkflowAssignToolResultV1 {
3
+ status: "assignments_written" | "blocked_before_assignments";
4
+ workflowId?: string;
5
+ assignmentCount?: number;
6
+ evidenceRefs?: string[];
7
+ redactedBlockReason?: string;
8
+ summaryForUser: string;
9
+ safeNextActions: readonly string[];
10
+ authority: {
11
+ realOpenCodeDispatch: false;
12
+ providerCall: false;
13
+ runtimeExecution: false;
14
+ actualLaneLaunch: false;
15
+ fallbackAuthority: false;
16
+ };
17
+ }
18
+ export declare function executeFlowDeskWorkflowAssignToolV1(input: {
19
+ workflowId: string;
20
+ rootDir: string;
21
+ sidebarCacheRows?: FlowDeskTuiUsageProviderRowV1[];
22
+ }): FlowDeskWorkflowAssignToolResultV1;
23
+ //# sourceMappingURL=workflow-assign-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-assign-tool.d.ts","sourceRoot":"","sources":["../src/workflow-assign-tool.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAG7E,MAAM,WAAW,kCAAkC;IAClD,MAAM,EAAE,qBAAqB,GAAG,4BAA4B,CAAC;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,SAAS,EAAE;QACV,oBAAoB,EAAE,KAAK,CAAC;QAC5B,YAAY,EAAE,KAAK,CAAC;QACpB,gBAAgB,EAAE,KAAK,CAAC;QACxB,gBAAgB,EAAE,KAAK,CAAC;QACxB,iBAAiB,EAAE,KAAK,CAAC;KACzB,CAAC;CACF;AAeD,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,6BAA6B,EAAE,CAAC;CACnD,GAAG,kCAAkC,CAyHrC"}
@@ -0,0 +1,135 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { readFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { validateFlowDeskTaskAgentAssignmentV1, validateFlowDeskTaskModelSelectionV1, applyFlowDeskSessionEvidenceWriteIntentsV1, prepareFlowDeskSessionEvidenceWriteIntentV1, reloadFlowDeskSessionEvidenceV1, } from "@flowdesk/core";
5
+ import { selectModelForTask, buildUsageMapFromProviders } from "./model-selection-engine.js";
6
+ const SAFE_AUTHORITY = { realOpenCodeDispatch: false, providerCall: false, runtimeExecution: false, actualLaneLaunch: false, fallbackAuthority: false };
7
+ function blocked(reason, workflowId) {
8
+ return { status: "blocked_before_assignments", workflowId, redactedBlockReason: reason, summaryForUser: `Blocked: ${reason}`, safeNextActions: ["/flowdesk-status", "/flowdesk-doctor"], authority: SAFE_AUTHORITY };
9
+ }
10
+ function loadWorkingModelIds(rootDir) {
11
+ const snapshotPath = join(rootDir, "model-availability/working-models.json");
12
+ const raw = JSON.parse(readFileSync(snapshotPath, "utf8"));
13
+ const ids = raw.available_model_ids;
14
+ return Array.isArray(ids) ? ids.filter((value) => typeof value === "string" && value.includes("/")).filter((value, index, array) => array.indexOf(value) === index) : [];
15
+ }
16
+ export function executeFlowDeskWorkflowAssignToolV1(input) {
17
+ if (!input.workflowId?.trim())
18
+ return blocked("workflowId is required");
19
+ if (!input.rootDir?.trim())
20
+ return blocked("rootDir is required");
21
+ const reload = reloadFlowDeskSessionEvidenceV1({ workflowId: input.workflowId, rootDir: input.rootDir });
22
+ if (!reload.ok)
23
+ return blocked("session evidence reload failed", input.workflowId);
24
+ const graphEntry = reload.entries.find(e => e.evidenceClass === "task_graph");
25
+ if (!graphEntry)
26
+ return blocked("task_graph evidence not found – run author tool first", input.workflowId);
27
+ const graph = graphEntry.record;
28
+ const nodes = Array.isArray(graph.nodes) ? graph.nodes : [];
29
+ if (nodes.length === 0)
30
+ return blocked("task_graph has no nodes", input.workflowId);
31
+ const rows = input.sidebarCacheRows ?? [];
32
+ if (rows.length === 0)
33
+ return blocked("no provider usage data available – run flowdesk_provider_usage_live first", input.workflowId);
34
+ let workingModelIds;
35
+ try {
36
+ workingModelIds = loadWorkingModelIds(input.rootDir);
37
+ }
38
+ catch {
39
+ return blocked("working-model cache missing – run models refresh first", input.workflowId);
40
+ }
41
+ if (workingModelIds.length === 0)
42
+ return blocked("working-model cache empty – run models refresh first", input.workflowId);
43
+ const selectionNow = new Date();
44
+ const createdAt = selectionNow.toISOString();
45
+ const evidenceRefs = [];
46
+ const writeIntents = [];
47
+ for (const node of nodes) {
48
+ const taskId = typeof node.task_id === "string" ? node.task_id : "";
49
+ const agentRole = typeof node.agent_role === "string" ? node.agent_role : "implementation";
50
+ if (!taskId)
51
+ continue;
52
+ const usageMap = buildUsageMapFromProviders(rows, () => selectionNow);
53
+ const selected = selectModelForTask(agentRole, usageMap, { availableModelIds: workingModelIds }, () => selectionNow);
54
+ if (!selected)
55
+ return blocked(`no available provider for task ${taskId} (role: ${agentRole})`, input.workflowId);
56
+ const assignmentId = `assignment-${randomBytes(4).toString("hex")}`;
57
+ const selectionId = `selection-${randomBytes(4).toString("hex")}`;
58
+ const agentName = selected.candidate.agentName;
59
+ const modelId = selected.candidate.providerQualifiedModelId;
60
+ const selectedFamily = selected.candidate.providerFamily;
61
+ const selectedRemaining = rows.find(r => r.providerFamily === selectedFamily)?.remainingPercent ?? null;
62
+ const assignmentRecord = {
63
+ schema_version: "flowdesk.task_agent_assignment.v1",
64
+ workflow_id: input.workflowId,
65
+ task_id: taskId,
66
+ assignment_id: assignmentId,
67
+ agent_role: agentRole,
68
+ agent_role_ref: `agent-${agentName}`,
69
+ selected_agent_ref: agentName,
70
+ selected_profile_ref: `profile-${agentName}`,
71
+ compatibility_status: "compatible",
72
+ fit_label: selected.candidate.tier === "heavy" ? "strong_fit" : "acceptable_fit",
73
+ registry_evidence_ref: "registry-default",
74
+ profile_evidence_ref: "profile-default",
75
+ blocked_labels: [],
76
+ created_at: createdAt,
77
+ release_gate: "release1_planning_only",
78
+ dispatch_authority_enabled: false,
79
+ provider_call_made: false,
80
+ runtime_execution: false,
81
+ actual_lane_launch: false,
82
+ write_authority_enabled: false,
83
+ redaction_version: "v1",
84
+ };
85
+ const selectionRecord = {
86
+ schema_version: "flowdesk.task_model_selection.v1",
87
+ workflow_id: input.workflowId,
88
+ task_id: taskId,
89
+ selection_id: selectionId,
90
+ provider_family: selectedFamily,
91
+ provider_qualified_model_id: modelId,
92
+ usage_snapshot_ref: `usage-${selectedFamily}-recent`,
93
+ usage_snapshot_freshness: "fresh",
94
+ provider_health_ref: `health-${selectedFamily}-recent`,
95
+ provider_health_label: rows.find(r => r.providerFamily === selectedFamily)?.alertLevel === "ok" ? "ok" : "warning",
96
+ exact_model_availability_ref: `avail-${selectedFamily}-recent`,
97
+ exact_model_availability_label: "available",
98
+ fit_label: selected.candidate.tier === "heavy" ? "strong_fit" : "acceptable_fit",
99
+ performance_label: (selectedRemaining ?? 100) > 50 ? "headroom_ok" : "headroom_tight",
100
+ selection_status: "selected",
101
+ blocked_labels: [],
102
+ fallback_allowed: false,
103
+ reselection_allowed: false,
104
+ created_at: createdAt,
105
+ release_gate: "release1_planning_only",
106
+ dispatch_authority_enabled: false,
107
+ provider_call_made: false,
108
+ runtime_execution: false,
109
+ actual_lane_launch: false,
110
+ write_authority_enabled: false,
111
+ redaction_version: "v1",
112
+ };
113
+ if (!validateFlowDeskTaskAgentAssignmentV1(assignmentRecord).ok)
114
+ return blocked(`assignment validation failed for ${taskId}`, input.workflowId);
115
+ if (!validateFlowDeskTaskModelSelectionV1(selectionRecord).ok)
116
+ return blocked(`model selection validation failed for ${taskId}`, input.workflowId);
117
+ writeIntents.push(prepareFlowDeskSessionEvidenceWriteIntentV1({ workflowId: input.workflowId, evidenceId: assignmentId, record: assignmentRecord }), prepareFlowDeskSessionEvidenceWriteIntentV1({ workflowId: input.workflowId, evidenceId: selectionId, record: selectionRecord }));
118
+ evidenceRefs.push(assignmentId, selectionId);
119
+ }
120
+ if (writeIntents.some(i => !i.ok || !i.writeIntent))
121
+ return blocked("evidence write intent preparation failed", input.workflowId);
122
+ const applied = applyFlowDeskSessionEvidenceWriteIntentsV1(input.rootDir, writeIntents.map(i => i.writeIntent));
123
+ if (!applied.ok)
124
+ return blocked("evidence write failed", input.workflowId);
125
+ return {
126
+ status: "assignments_written",
127
+ workflowId: input.workflowId,
128
+ assignmentCount: nodes.length,
129
+ evidenceRefs,
130
+ summaryForUser: `FlowDesk assigned ${nodes.length} task(s) to agents/models using usage-weighted selection. Planning only: no dispatch authority opened.`,
131
+ safeNextActions: ["/flowdesk-status", "/flowdesk-export-debug"],
132
+ authority: SAFE_AUTHORITY,
133
+ };
134
+ }
135
+ //# sourceMappingURL=workflow-assign-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-assign-tool.js","sourceRoot":"","sources":["../src/workflow-assign-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { type FlowDeskAgentTaskInputV1 } from "./agent-task-runner.js";
2
+ export interface FlowDeskWorkflowAuthorToolResultV1 {
3
+ status: "workflow_authoring_completed" | "workflow_authoring_incomplete" | "blocked_before_workflow_authoring";
4
+ workflowId?: string;
5
+ authoringResultId?: string;
6
+ taskGraphId?: string;
7
+ taskCount?: number;
8
+ redactedBlockReason?: string;
9
+ safeNextActions: readonly string[];
10
+ authority: {
11
+ realOpenCodeDispatch: false;
12
+ providerCall: false;
13
+ runtimeExecution: false;
14
+ actualLaneLaunch: false;
15
+ fallbackAuthority: false;
16
+ hardCancelOrNoReplyAuthority: false;
17
+ toolAuthority: false;
18
+ };
19
+ }
20
+ export declare function executeFlowDeskWorkflowAuthorToolV1(input: {
21
+ workflowId?: string;
22
+ goalSummary: string;
23
+ parentSessionId: string;
24
+ rootDir: string;
25
+ client: FlowDeskAgentTaskInputV1["client"];
26
+ providerQualifiedModelId: string;
27
+ agentName: string;
28
+ }): Promise<FlowDeskWorkflowAuthorToolResultV1>;
29
+ //# sourceMappingURL=workflow-author-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-author-tool.d.ts","sourceRoot":"","sources":["../src/workflow-author-tool.ts"],"names":[],"mappings":"AAQA,OAAO,EAA8B,KAAK,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAyGnG,MAAM,WAAW,kCAAkC;IAClD,MAAM,EAAE,8BAA8B,GAAG,+BAA+B,GAAG,mCAAmC,CAAC;IAC/G,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,SAAS,EAAE;QACV,oBAAoB,EAAE,KAAK,CAAC;QAC5B,YAAY,EAAE,KAAK,CAAC;QACpB,gBAAgB,EAAE,KAAK,CAAC;QACxB,gBAAgB,EAAE,KAAK,CAAC;QACxB,iBAAiB,EAAE,KAAK,CAAC;QACzB,4BAA4B,EAAE,KAAK,CAAC;QACpC,aAAa,EAAE,KAAK,CAAC;KACrB,CAAC;CACF;AAgBD,wBAAsB,mCAAmC,CAAC,KAAK,EAAE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC3C,wBAAwB,EAAE,MAAM,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,kCAAkC,CAAC,CA6G9C"}
@@ -0,0 +1,227 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { validateFlowDeskWorkflowAuthoringResultV1, validateFlowDeskTaskGraphV1, applyFlowDeskSessionEvidenceWriteIntentsV1, prepareFlowDeskSessionEvidenceWriteIntentV1, reloadFlowDeskSessionEvidenceV1, } from "@flowdesk/core";
3
+ import { executeFlowDeskAgentTaskV1 } from "./agent-task-runner.js";
4
+ /** Normalize any string to a safe opaque-id: ASCII alphanumeric plus -._ only */
5
+ function toSafeId(raw, fallback) {
6
+ const cleaned = raw.replace(/[^A-Za-z0-9._-]/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
7
+ const safe = cleaned.length >= 3 ? cleaned : fallback;
8
+ return safe.slice(0, 64);
9
+ }
10
+ /** Redact any text that might trigger forbidden-payload validators */
11
+ function safeText(raw, max) {
12
+ return raw
13
+ .replace(/\b(prompt|system prompt|developer message|transcript|stack trace|provider payload|provider response|tool args|tool result|shell output|raw log|raw config)\b/gi, "[redacted]")
14
+ .replace(/([A-Za-z]:[\\/]|\\\\|\/(Users|home|etc|var|private|tmp|usr|opt)(?:\/|$))/g, "[redacted-path]")
15
+ .replace(/\b(sk-[A-Za-z0-9]|api[_-]?key|bearer\s+[A-Za-z0-9]|token[:=]|secret)\b/gi, "[redacted-cred]")
16
+ .slice(0, max);
17
+ }
18
+ function randomId(prefix) {
19
+ return `${prefix}-${randomBytes(5).toString("hex")}`;
20
+ }
21
+ function extractJsonBlock(text) {
22
+ const fenced = text.match(/```(?:json)?\s*([\s\S]*?)```/);
23
+ if (fenced?.[1]) {
24
+ try {
25
+ return JSON.parse(fenced[1].trim());
26
+ }
27
+ catch { /* fall through */ }
28
+ }
29
+ const bare = text.match(/\{[\s\S]*\}/);
30
+ if (bare) {
31
+ try {
32
+ return JSON.parse(bare[0]);
33
+ }
34
+ catch { /* fall through */ }
35
+ }
36
+ return null;
37
+ }
38
+ function parseTasks(raw) {
39
+ if (!raw)
40
+ return { ok: false, tasks: [], error: "no JSON found" };
41
+ // Support: array directly, { tasks: [...] }, { task_list: [...] }, { plan: { tasks: [...] } }
42
+ let arr = undefined;
43
+ if (Array.isArray(raw)) {
44
+ arr = raw;
45
+ }
46
+ else if (typeof raw === "object" && raw !== null) {
47
+ const r = raw;
48
+ arr = Array.isArray(r.tasks) ? r.tasks
49
+ : Array.isArray(r.task_list) ? r.task_list
50
+ : Array.isArray(r.plan_tasks) ? r.plan_tasks
51
+ : typeof r.plan === "object" && r.plan !== null && Array.isArray(r.plan.tasks)
52
+ ? r.plan.tasks
53
+ : undefined;
54
+ }
55
+ if (!arr || !Array.isArray(arr))
56
+ return { ok: false, tasks: [], error: "missing tasks field" };
57
+ const taskArr = arr;
58
+ const seen = new Set();
59
+ const rawIdMap = new Map(); // raw LLM id → normalized safe id
60
+ const tasks = [];
61
+ for (let idx = 0; idx < taskArr.length; idx++) {
62
+ const item = taskArr[idx];
63
+ if (!item || typeof item !== "object")
64
+ return { ok: false, tasks: [], error: "task must be an object" };
65
+ const t = item;
66
+ const rawId = typeof t.task_id === "string" ? t.task_id.trim() : "";
67
+ if (!rawId)
68
+ return { ok: false, tasks: [], error: "task_id required" };
69
+ // Normalize task_id to ASCII-safe format
70
+ const safeId = toSafeId(rawId, `task-${idx + 1}`);
71
+ // Ensure it starts with "task-" for clarity
72
+ const finalId = safeId.startsWith("task") ? safeId : `task-${safeId}`;
73
+ if (seen.has(finalId)) {
74
+ // deduplicate by appending index
75
+ const dedupId = `${finalId}-${idx}`;
76
+ rawIdMap.set(rawId, dedupId);
77
+ seen.add(dedupId);
78
+ tasks.push({
79
+ task_id: dedupId,
80
+ title: safeText(typeof t.title === "string" ? t.title : "Task", 120),
81
+ summary: safeText(typeof t.summary === "string" ? t.summary : "No summary.", 400),
82
+ agent_role: typeof t.agent_role === "string" ? t.agent_role : "implementation",
83
+ depends_on: [],
84
+ });
85
+ }
86
+ else {
87
+ rawIdMap.set(rawId, finalId);
88
+ seen.add(finalId);
89
+ tasks.push({
90
+ task_id: finalId,
91
+ title: safeText(typeof t.title === "string" ? t.title : "Task", 120),
92
+ summary: safeText(typeof t.summary === "string" ? t.summary : "No summary.", 400),
93
+ agent_role: typeof t.agent_role === "string" ? t.agent_role : "implementation",
94
+ depends_on: Array.isArray(t.depends_on) ? t.depends_on.filter((d) => typeof d === "string") : [],
95
+ });
96
+ }
97
+ }
98
+ // Resolve depends_on using the rawIdMap
99
+ for (const task of tasks) {
100
+ task.depends_on = task.depends_on
101
+ .map(rawDep => rawIdMap.get(rawDep) ?? rawDep)
102
+ .filter(dep => seen.has(dep) && dep !== task.task_id);
103
+ }
104
+ return { ok: true, tasks };
105
+ }
106
+ const SAFE_AUTHORITY = {
107
+ realOpenCodeDispatch: false,
108
+ providerCall: false,
109
+ runtimeExecution: false,
110
+ actualLaneLaunch: false,
111
+ fallbackAuthority: false,
112
+ hardCancelOrNoReplyAuthority: false,
113
+ toolAuthority: false,
114
+ };
115
+ function blocked(reason, workflowId) {
116
+ return { status: "blocked_before_workflow_authoring", workflowId, redactedBlockReason: reason, safeNextActions: ["/flowdesk-status", "/flowdesk-doctor"], authority: SAFE_AUTHORITY };
117
+ }
118
+ export async function executeFlowDeskWorkflowAuthorToolV1(input) {
119
+ if (!input.goalSummary?.trim())
120
+ return blocked("goalSummary is required");
121
+ if (!input.parentSessionId?.trim())
122
+ return blocked("parentSessionId is required");
123
+ if (!input.rootDir?.trim())
124
+ return blocked("rootDir is required");
125
+ if (!input.providerQualifiedModelId?.includes("/"))
126
+ return blocked("providerQualifiedModelId must be concrete");
127
+ if (!input.agentName?.trim())
128
+ return blocked("agentName is required");
129
+ const workflowId = input.workflowId?.trim() || `workflow-author-${randomBytes(5).toString("hex")}`;
130
+ const authoringResultId = randomId("authoring-result");
131
+ const taskGraphId = randomId("task-graph");
132
+ const promptText = [
133
+ "OUTPUT ONLY: Return a single raw JSON object. No thinking. No prose. No code fence. No explanation.",
134
+ "The JSON must have exactly this structure:",
135
+ '{"tasks":[{"task_id":"task-1","title":"Short title here","summary":"What this task does","agent_role":"implementation","depends_on":[]},{"task_id":"task-2","title":"Second task","summary":"What this task does","agent_role":"review","depends_on":["task-1"]}]}',
136
+ "Rules:",
137
+ "- Use exactly task-1, task-2, task-3, task-4 as task_ids (2 to 4 tasks)",
138
+ "- agent_role must be one of: implementation, review, verification, security, architecture, documentation, migration",
139
+ "- depends_on contains task_ids that must complete first (empty array if none)",
140
+ "- title max 80 chars, summary max 300 chars",
141
+ "- Start your response with { and end with }",
142
+ "",
143
+ `GOAL: ${input.goalSummary.slice(0, 400)}`,
144
+ ].join("\n");
145
+ const taskResult = await executeFlowDeskAgentTaskV1({
146
+ workflowId,
147
+ taskId: randomId("task"),
148
+ laneId: randomId("lane"),
149
+ agentRef: `agent-${input.agentName.toLowerCase().replace(/[^a-z0-9-]/g, "-")}`,
150
+ providerQualifiedModelId: input.providerQualifiedModelId,
151
+ promptText,
152
+ parentSessionId: input.parentSessionId,
153
+ rootDir: input.rootDir,
154
+ client: input.client,
155
+ outputContract: "final_assistant_text",
156
+ });
157
+ if (taskResult.status !== "task_completed") {
158
+ const reason = taskResult.status === "task_failed" ? taskResult.redactedReason : taskResult.status === "task_launched" ? "async mode not supported for authoring" : "unknown";
159
+ return { status: "workflow_authoring_incomplete", workflowId, redactedBlockReason: reason, safeNextActions: ["/flowdesk-status"], authority: SAFE_AUTHORITY };
160
+ }
161
+ const parsed = extractJsonBlock(taskResult.resultText);
162
+ const { ok, tasks, error } = parseTasks(parsed);
163
+ if (!ok || tasks.length === 0)
164
+ return { status: "workflow_authoring_incomplete", workflowId, redactedBlockReason: `task parse failed: ${error ?? "no tasks"}`, safeNextActions: ["/flowdesk-status"], authority: SAFE_AUTHORITY };
165
+ const createdAt = new Date().toISOString();
166
+ const authoringRecord = {
167
+ schema_version: "flowdesk.workflow_authoring_result.v1",
168
+ workflow_id: workflowId,
169
+ authoring_result_id: authoringResultId,
170
+ goal_summary: safeText(input.goalSummary, 400),
171
+ scope_summary: `Planning evidence only: ${tasks.length} task(s) identified.`,
172
+ output_summary: "Task graph ready for agent assignment.",
173
+ risk_summary: "Planning only, no execution authority.",
174
+ status: "authored",
175
+ created_at: createdAt,
176
+ evidence_refs: [taskGraphId],
177
+ release_gate: "release1_planning_only",
178
+ dispatch_authority_enabled: false,
179
+ provider_call_made: false,
180
+ runtime_execution: false,
181
+ actual_lane_launch: false,
182
+ write_authority_enabled: false,
183
+ redaction_version: "v1",
184
+ };
185
+ const graphRecord = {
186
+ schema_version: "flowdesk.task_graph.v1",
187
+ workflow_id: workflowId,
188
+ task_graph_id: taskGraphId,
189
+ nodes: tasks.map(t => ({ task_id: t.task_id, title: t.title, summary: t.summary })),
190
+ edges: tasks.flatMap(t => t.depends_on.map(dep => ({ from_task_id: dep, to_task_id: t.task_id, relation: "depends_on" }))),
191
+ graph_summary: `${tasks.length} task(s) planned from goal.`,
192
+ created_at: createdAt,
193
+ release_gate: "release1_planning_only",
194
+ dispatch_authority_enabled: false,
195
+ provider_call_made: false,
196
+ runtime_execution: false,
197
+ actual_lane_launch: false,
198
+ write_authority_enabled: false,
199
+ redaction_version: "v1",
200
+ };
201
+ if (!validateFlowDeskWorkflowAuthoringResultV1(authoringRecord).ok)
202
+ return blocked("authoring record validation failed", workflowId);
203
+ if (!validateFlowDeskTaskGraphV1(graphRecord).ok)
204
+ return blocked("task graph validation failed", workflowId);
205
+ const intents = [
206
+ prepareFlowDeskSessionEvidenceWriteIntentV1({ workflowId, evidenceId: authoringResultId, record: authoringRecord }),
207
+ prepareFlowDeskSessionEvidenceWriteIntentV1({ workflowId, evidenceId: taskGraphId, record: graphRecord }),
208
+ ];
209
+ if (intents.some(i => !i.ok || !i.writeIntent))
210
+ return blocked("evidence write intent preparation failed", workflowId);
211
+ const applied = applyFlowDeskSessionEvidenceWriteIntentsV1(input.rootDir, intents.map(i => i.writeIntent));
212
+ if (!applied.ok)
213
+ return blocked("evidence write failed", workflowId);
214
+ const reload = reloadFlowDeskSessionEvidenceV1({ workflowId, rootDir: input.rootDir });
215
+ if (!reload.ok || !reload.entries.some(e => e.evidenceId === authoringResultId))
216
+ return blocked("authoring evidence reload failed", workflowId);
217
+ return {
218
+ status: "workflow_authoring_completed",
219
+ workflowId,
220
+ authoringResultId,
221
+ taskGraphId,
222
+ taskCount: tasks.length,
223
+ safeNextActions: ["/flowdesk-status", "/flowdesk-export-debug"],
224
+ authority: SAFE_AUTHORITY,
225
+ };
226
+ }
227
+ //# sourceMappingURL=workflow-author-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-author-tool.js","sourceRoot":"","sources":["../src/workflow-author-tool.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,18 @@ export interface FlowDeskWorkflowDispatchToolResultV1 {
29
29
  laneId?: string;
30
30
  taskId?: string;
31
31
  taskResultEvidenceId?: string;
32
+ /**
33
+ * ADVISORY capture metadata for the coordinator's substance judgement. The
34
+ * workflow dispatch tool only confirms that a lane captured text; it does NOT
35
+ * judge whether the text actually satisfies the task. The coordinator reads
36
+ * this to decide success/failure and whether to re-select a model and retry.
37
+ */
38
+ captureAdvisory?: {
39
+ outputKind?: string;
40
+ completionStatus?: string;
41
+ finalizationReason?: string;
42
+ looksLikeRefusalOrError?: boolean;
43
+ };
32
44
  redactedBlockReason?: string;
33
45
  summaryForUser: string;
34
46
  safeNextActions: readonly ("/flowdesk-status" | "/flowdesk-export-debug" | "/flowdesk-doctor")[];
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-dispatch-tool.d.ts","sourceRoot":"","sources":["../src/workflow-dispatch-tool.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,2CAA2C,EAAE,MAAM,+BAA+B,CAAC;AAEjG,MAAM,WAAW,oCAAoC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,2CAA2C,CAAC;CACpD;AAED,MAAM,WAAW,qCAAqC;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qCAAqC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,qCAAqC,CAAC;IAC7C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,oCAAoC;IACpD,MAAM,EACH,6BAA6B,GAC7B,8BAA8B,GAC9B,kCAAkC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,SAAS,CAAC,kBAAkB,GAAG,wBAAwB,GAAG,kBAAkB,CAAC,EAAE,CAAC;IACjG,SAAS,EAAE;QACV,oBAAoB,EAAE,KAAK,CAAC;QAC5B,YAAY,EAAE,OAAO,CAAC;QACtB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,gBAAgB,EAAE,OAAO,CAAC;QAC1B,iBAAiB,EAAE,KAAK,CAAC;QACzB,4BAA4B,EAAE,KAAK,CAAC;QACpC,aAAa,EAAE,KAAK,CAAC;QACrB,wBAAwB,EAAE,KAAK,CAAC;QAChC,gCAAgC,EAAE,KAAK,CAAC;QACxC,yBAAyB,EAAE,OAAO,CAAC;QACnC,6BAA6B,EAAE,OAAO,CAAC;QACvC,gCAAgC,EAAE,OAAO,CAAC;KAC1C,CAAC;CACF;AAwJD,wBAAsB,qCAAqC,CAAC,KAAK,EAAE;IAClE,MAAM,EAAE,oCAAoC,CAAC;IAC7C,OAAO,CAAC,EAAE,qCAAqC,CAAC;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CACjB,GAAG,OAAO,CAAC,oCAAoC,CAAC,CAgKhD"}
1
+ {"version":3,"file":"workflow-dispatch-tool.d.ts","sourceRoot":"","sources":["../src/workflow-dispatch-tool.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,2CAA2C,EAAE,MAAM,+BAA+B,CAAC;AAEjG,MAAM,WAAW,oCAAoC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,2CAA2C,CAAC;CACpD;AAED,MAAM,WAAW,qCAAqC;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qCAAqC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,qCAAqC,CAAC;IAC7C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,oCAAoC;IACpD,MAAM,EACH,6BAA6B,GAC7B,8BAA8B,GAC9B,kCAAkC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,eAAe,CAAC,EAAE;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,uBAAuB,CAAC,EAAE,OAAO,CAAC;KAClC,CAAC;IACF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,SAAS,CAAC,kBAAkB,GAAG,wBAAwB,GAAG,kBAAkB,CAAC,EAAE,CAAC;IACjG,SAAS,EAAE;QACV,oBAAoB,EAAE,KAAK,CAAC;QAC5B,YAAY,EAAE,OAAO,CAAC;QACtB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,gBAAgB,EAAE,OAAO,CAAC;QAC1B,iBAAiB,EAAE,KAAK,CAAC;QACzB,4BAA4B,EAAE,KAAK,CAAC;QACpC,aAAa,EAAE,KAAK,CAAC;QACrB,wBAAwB,EAAE,KAAK,CAAC;QAChC,gCAAgC,EAAE,KAAK,CAAC;QACxC,yBAAyB,EAAE,OAAO,CAAC;QACnC,6BAA6B,EAAE,OAAO,CAAC;QACvC,gCAAgC,EAAE,OAAO,CAAC;KAC1C,CAAC;CACF;AAmLD,wBAAsB,qCAAqC,CAAC,KAAK,EAAE;IAClE,MAAM,EAAE,oCAAoC,CAAC;IAC7C,OAAO,CAAC,EAAE,qCAAqC,CAAC;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CACjB,GAAG,OAAO,CAAC,oCAAoC,CAAC,CAwKhD"}
@@ -109,6 +109,26 @@ function terminalEvidencePresent(input) {
109
109
  entry.evidenceClass === (input.completed ? "task_result" : "task_failed"));
110
110
  return terminalLifecycle && terminalTaskEvidence;
111
111
  }
112
+ function captureAdvisoryFor(input) {
113
+ const reload = reloadFlowDeskSessionEvidenceV1({
114
+ workflowId: input.workflowId,
115
+ rootDir: input.rootDir,
116
+ });
117
+ if (!reload.ok || reload.blocked.length > 0)
118
+ return undefined;
119
+ const entry = reload.entries.find((e) => e.evidenceClass === "task_result" &&
120
+ e.record.lane_id === input.laneId &&
121
+ e.record.task_id === input.taskId);
122
+ if (entry === undefined)
123
+ return undefined;
124
+ const record = entry.record;
125
+ return {
126
+ ...(typeof record.output_kind === "string" ? { outputKind: record.output_kind } : {}),
127
+ ...(typeof record.completion_status === "string" ? { completionStatus: record.completion_status } : {}),
128
+ ...(typeof record.finalization_reason === "string" ? { finalizationReason: record.finalization_reason } : {}),
129
+ ...(typeof record.looks_like_refusal_or_error === "boolean" ? { looksLikeRefusalOrError: record.looks_like_refusal_or_error } : {}),
130
+ };
131
+ }
112
132
  function planningLabel(value) {
113
133
  return value
114
134
  .replaceAll(/real\s*-?(?:opencode\s*-?)?dispatch/gi, "explicit dev-mode workflow")
@@ -253,6 +273,13 @@ export async function executeFlowDeskWorkflowDispatchToolV1(input) {
253
273
  planPersisted: true,
254
274
  actualLaneLaunchAttempted: true,
255
275
  });
276
+ // Capture/judgement separation: if the lane captured any text we report it as
277
+ // completed (captured) and surface advisory metadata. We do NOT mark the
278
+ // dispatch incomplete just because the captured text "looks like" process
279
+ // notes or lacks a strict format — the coordinator judges substance.
280
+ const captureAdvisory = completed
281
+ ? captureAdvisoryFor({ rootDir: input.config.rootDir, workflowId, laneId, taskId })
282
+ : undefined;
256
283
  return {
257
284
  status: completed ? "workflow_dispatch_completed" : "workflow_dispatch_incomplete",
258
285
  rootDir: input.config.rootDir,
@@ -261,10 +288,11 @@ export async function executeFlowDeskWorkflowDispatchToolV1(input) {
261
288
  parentSessionId: request.parentSessionId,
262
289
  laneId,
263
290
  taskId,
264
- ...(completed ? { taskResultEvidenceId: taskResult.taskResultEvidenceId } : { redactedBlockReason: taskResult.redactedReason }),
291
+ ...(completed ? { taskResultEvidenceId: taskResult.taskResultEvidenceId } : { redactedBlockReason: taskResult.status === "task_failed" ? taskResult.redactedReason : taskResult.status === "task_launched" ? "async mode" : "unknown" }),
292
+ ...(captureAdvisory === undefined ? {} : { captureAdvisory }),
265
293
  summaryForUser: completed
266
- ? `FlowDesk dev-mode workflow dispatch completed one lane for ${workflowId}. Default Release 1 dispatch authority remains disabled.`
267
- : `FlowDesk dev-mode workflow dispatch launched one lane but ended incomplete: ${taskResult.redactedReason}. Default Release 1 dispatch authority remains disabled.`,
294
+ ? `FlowDesk dev-mode workflow dispatch captured one lane result for ${workflowId} (advisory: ${captureAdvisory?.outputKind ?? "unknown"}${captureAdvisory?.looksLikeRefusalOrError ? ", looks-like-refusal/error" : ""}). The coordinator judges substance. Default Release 1 dispatch authority remains disabled.`
295
+ : `FlowDesk dev-mode workflow dispatch launched one lane but captured no result: ${taskResult.status === "task_failed" ? taskResult.redactedReason : taskResult.status === "task_launched" ? "async lane launched" : "unknown"}. Default Release 1 dispatch authority remains disabled.`,
268
296
  safeNextActions: safeNextActions(),
269
297
  authority: authority({
270
298
  developerModeAcknowledged: true,