@dv.nghiem/flowdeck 0.4.6 → 0.4.8

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 (50) hide show
  1. package/README.md +14 -1
  2. package/dist/agents/orchestrator.d.ts +2 -5
  3. package/dist/agents/orchestrator.d.ts.map +1 -1
  4. package/dist/config/schema.d.ts +1 -15
  5. package/dist/config/schema.d.ts.map +1 -1
  6. package/dist/dashboard/server.mjs +14 -1
  7. package/dist/hooks/orchestrator-guard-hook.d.ts +5 -15
  8. package/dist/hooks/orchestrator-guard-hook.d.ts.map +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +617 -1938
  11. package/dist/{tools/dispatch-routing.d.ts → lib/task-routing.d.ts} +1 -3
  12. package/dist/lib/task-routing.d.ts.map +1 -0
  13. package/dist/services/agent-contract-registry.d.ts.map +1 -1
  14. package/dist/services/agent-performance.d.ts +1 -1
  15. package/dist/services/agent-performance.d.ts.map +1 -1
  16. package/dist/services/cost-estimator.d.ts +0 -88
  17. package/dist/services/cost-estimator.d.ts.map +1 -1
  18. package/dist/services/event-logger.d.ts +1 -1
  19. package/dist/services/event-logger.d.ts.map +1 -1
  20. package/dist/services/quick-router.d.ts +24 -0
  21. package/dist/services/quick-router.d.ts.map +1 -1
  22. package/dist/services/supervisor-binding.d.ts +6 -0
  23. package/dist/services/supervisor-binding.d.ts.map +1 -1
  24. package/dist/services/workflow-router.d.ts +57 -0
  25. package/dist/services/workflow-router.d.ts.map +1 -0
  26. package/dist/services/workflow-scorecard.d.ts.map +1 -1
  27. package/dist/tools/planning-state-lib.d.ts +23 -0
  28. package/dist/tools/planning-state-lib.d.ts.map +1 -1
  29. package/docs/concepts/workflows.md +48 -0
  30. package/docs/index.md +15 -2
  31. package/docs/reference/workflow-router.md +337 -0
  32. package/package.json +1 -1
  33. package/src/commands/fd-discuss.md +8 -1
  34. package/src/commands/fd-execute.md +25 -3
  35. package/src/commands/fd-new-feature.md +97 -4
  36. package/src/commands/fd-plan.md +14 -4
  37. package/src/commands/fd-quick.md +43 -16
  38. package/src/rules/common/agent-orchestration.md +52 -18
  39. package/src/skills/agent-harness-construction/SKILL.md +5 -5
  40. package/dist/services/delegation-budget.d.ts +0 -54
  41. package/dist/services/delegation-budget.d.ts.map +0 -1
  42. package/dist/services/prompt-cache.d.ts +0 -61
  43. package/dist/services/prompt-cache.d.ts.map +0 -1
  44. package/dist/services/token-metrics.d.ts +0 -97
  45. package/dist/services/token-metrics.d.ts.map +0 -1
  46. package/dist/tools/delegate.d.ts +0 -4
  47. package/dist/tools/delegate.d.ts.map +0 -1
  48. package/dist/tools/dispatch-routing.d.ts.map +0 -1
  49. package/dist/tools/run-pipeline.d.ts +0 -4
  50. package/dist/tools/run-pipeline.d.ts.map +0 -1
@@ -1,9 +1,7 @@
1
1
  export type TaskType = "planning" | "design" | "implementation" | "debugging" | "review" | "testing" | "documentation" | "analysis" | "security" | "orchestration";
2
- export declare function shouldRetry(promptRes: any): boolean;
3
- export declare function isTransientError(text?: string): boolean;
4
2
  export declare function normalizeTaskType(taskType: string | undefined, agent: string): TaskType;
5
3
  export declare function isTaskType(value: string): value is TaskType;
6
4
  export declare function isUiHeavyTask(input: string): boolean;
7
5
  export type UiTaskType = "landing-page" | "dashboard" | "admin-panel" | "marketing-site" | "mobile-app" | "saas-app" | "internal-tool" | "app-screen" | "general-ui";
8
6
  export declare function classifyUiTaskType(input: string): UiTaskType | null;
9
- //# sourceMappingURL=dispatch-routing.d.ts.map
7
+ //# sourceMappingURL=task-routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-routing.d.ts","sourceRoot":"","sources":["../../src/lib/task-routing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAChB,UAAU,GACV,QAAQ,GACR,gBAAgB,GAChB,WAAW,GACX,QAAQ,GACR,SAAS,GACT,eAAe,GACf,UAAU,GACV,UAAU,GACV,eAAe,CAAA;AAEnB,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAevF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,QAAQ,CAa3D;AAmCD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOpD;AAED,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,WAAW,GACX,aAAa,GACb,gBAAgB,GAChB,YAAY,GACZ,UAAU,GACV,eAAe,GACf,YAAY,GACZ,YAAY,CAAA;AAEhB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAYnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-contract-registry.d.ts","sourceRoot":"","sources":["../../src/services/agent-contract-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAA;IACb,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,iDAAiD;IACjD,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,mDAAmD;IACnD,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,+DAA+D;IAC/D,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,0CAA0C;IAC1C,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,+DAA+D;IAC/D,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,qDAAqD;IACrD,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,oCAAoC;IACpC,eAAe,EAAE,MAAM,EAAE,CAAA;CAC1B;AA+UD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAE/D;AAED,wBAAgB,eAAe,IAAI,aAAa,EAAE,CAEjD;AAED,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD"}
1
+ {"version":3,"file":"agent-contract-registry.d.ts","sourceRoot":"","sources":["../../src/services/agent-contract-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAA;IACb,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,iDAAiD;IACjD,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,mDAAmD;IACnD,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,+DAA+D;IAC/D,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,0CAA0C;IAC1C,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,+DAA+D;IAC/D,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,qDAAqD;IACrD,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,oCAAoC;IACpC,eAAe,EAAE,MAAM,EAAE,CAAA;CAC1B;AA4UD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAE/D;AAED,wBAAgB,eAAe,IAAI,aAAa,EAAE,CAEjD;AAED,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD"}
@@ -1,4 +1,4 @@
1
- import type { TaskType } from "../tools/dispatch-routing";
1
+ import type { TaskType } from "../lib/task-routing";
2
2
  export interface AgentPerfEntry {
3
3
  agent: string;
4
4
  model: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-performance.d.ts","sourceRoot":"","sources":["../../src/services/agent-performance.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAEzD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,QAAQ,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,SAAS,GAAG,SAAS,CAAA;CACnC;AA+BD,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,SAAI,GACP,IAAI,CAgCN;AAED,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,QAAQ,CAAA;CAAE,GAChD,cAAc,EAAE,CAQlB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,mBAAmB,GAAG,IAAI,CAiBhG;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAatE"}
1
+ {"version":3,"file":"agent-performance.d.ts","sourceRoot":"","sources":["../../src/services/agent-performance.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,QAAQ,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,SAAS,GAAG,SAAS,CAAA;CACnC;AA+BD,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,SAAI,GACP,IAAI,CAgCN;AAED,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,QAAQ,CAAA;CAAE,GAChD,cAAc,EAAE,CAQlB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,mBAAmB,GAAG,IAAI,CAiBhG;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAatE"}
@@ -3,101 +3,13 @@
3
3
  *
4
4
  * Provides USD cost estimates for model calls based on a pricing table.
5
5
  * Covers common OpenCode-compatible models (Anthropic, OpenAI, Google).
6
- *
7
- * Prices are per 1,000 tokens (input / output) in USD.
8
- * Rates reflect publicly available list pricing; update when vendors change them.
9
- *
10
- * Usage:
11
- * import { estimateCostUSD, getCostReport } from "./cost-estimator"
12
- * const cost = estimateCostUSD("claude-sonnet-4.6", 5000, 1200)
13
6
  */
14
- import type { MetricEvent } from "./token-metrics";
15
- /** Cost per million tokens in USD. */
16
7
  interface ModelPricing {
17
- /** USD per 1M input tokens. */
18
8
  input: number;
19
- /** USD per 1M output tokens. */
20
9
  output: number;
21
10
  }
22
- /**
23
- * Resolve pricing for a model identifier string.
24
- * Matching is case-insensitive prefix match; more specific prefixes take priority.
25
- */
26
11
  export declare function getModelPricing(model: string): ModelPricing;
27
- /**
28
- * Estimate USD cost for a single model call.
29
- *
30
- * @param model - Model identifier (e.g. "claude-sonnet-4.6", "gpt-4o")
31
- * @param inputTokens - Number of input tokens (use estimateTokens() if char count only)
32
- * @param outputTokens - Number of output tokens
33
- * @returns Estimated cost in USD (unrounded — round at display time)
34
- */
35
12
  export declare function estimateCostUSD(model: string, inputTokens: number, outputTokens: number): number;
36
- /**
37
- * Estimate cost from raw character counts using the 4 chars/token heuristic.
38
- * Convenience wrapper for callers that don't have token counts.
39
- */
40
13
  export declare function estimateCostFromChars(model: string, inputChars: number, outputChars: number): number;
41
- export interface AgentCostEntry {
42
- agent: string;
43
- model_calls: number;
44
- cache_hits: number;
45
- retries: number;
46
- est_input_tokens: number;
47
- est_output_tokens: number;
48
- est_cost_usd: number;
49
- }
50
- export interface StageCostEntry {
51
- stage: string;
52
- model_calls: number;
53
- cache_hits: number;
54
- retries: number;
55
- est_input_tokens: number;
56
- est_output_tokens: number;
57
- est_cost_usd: number;
58
- /** Fraction of total workflow cost (0–1). */
59
- cost_fraction: number;
60
- }
61
- export interface CostReport {
62
- workflow_id: string;
63
- /** Per-agent breakdown. */
64
- by_agent: AgentCostEntry[];
65
- /** Per-stage breakdown. */
66
- by_stage: StageCostEntry[];
67
- totals: {
68
- model_calls: number;
69
- cache_hits: number;
70
- retries: number;
71
- est_input_tokens: number;
72
- est_output_tokens: number;
73
- est_cost_usd: number;
74
- /** Tokens/$ saved by cache hits (based on avg per-call token count). */
75
- cache_savings_est_usd: number;
76
- /** Tokens/$ wasted by retries. */
77
- retry_cost_est_usd: number;
78
- cache_hit_rate: number;
79
- retry_rate: number;
80
- };
81
- /** Sorted from most to least expensive. */
82
- most_expensive_agents: string[];
83
- most_expensive_stages: string[];
84
- }
85
- /**
86
- * Build a cost report from MetricEvent[] for a given workflow.
87
- *
88
- * The caller is responsible for loading the events (from TOKEN_METRICS.jsonl).
89
- * `defaultModel` is used when an event has no model field.
90
- */
91
- export declare function buildCostReport(workflowId: string, events: MetricEvent[], defaultModel?: string): CostReport;
92
- /**
93
- * Load MetricEvents from TOKEN_METRICS.jsonl for a workflow and build a CostReport.
94
- * Convenience wrapper around buildCostReport for production use.
95
- */
96
- export declare function getCostReport(dir: string, workflowId: string, defaultModel?: string): CostReport;
97
- /**
98
- * Format a cost report as a human-readable summary string (for logging/display).
99
- * Returns compact output — use for appLog or tool output.
100
- */
101
- export declare function formatCostReport(report: CostReport): string;
102
14
  export {};
103
15
  //# sourceMappingURL=cost-estimator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cost-estimator.d.ts","sourceRoot":"","sources":["../../src/services/cost-estimator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAKlD,sCAAsC;AACtC,UAAU,YAAY;IACpB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAA;CACf;AAsDD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAO3D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAER;AAID,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,6CAA6C;IAC7C,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,2BAA2B;IAC3B,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,EAAE,MAAM,CAAA;QACf,gBAAgB,EAAE,MAAM,CAAA;QACxB,iBAAiB,EAAE,MAAM,CAAA;QACzB,YAAY,EAAE,MAAM,CAAA;QACpB,wEAAwE;QACxE,qBAAqB,EAAE,MAAM,CAAA;QAC7B,kCAAkC;QAClC,kBAAkB,EAAE,MAAM,CAAA;QAC1B,cAAc,EAAE,MAAM,CAAA;QACtB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,EAAE,CAAA;IAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAA;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,EAAE,EACrB,YAAY,SAAK,GAChB,UAAU,CAyGZ;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,SAAK,GAAG,UAAU,CAe5F;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAgB3D"}
1
+ {"version":3,"file":"cost-estimator.d.ts","sourceRoot":"","sources":["../../src/services/cost-estimator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAgDD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAO3D;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,CAGR;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAER"}
@@ -1,6 +1,6 @@
1
1
  export interface ToolEvent {
2
2
  timestamp: string;
3
- type: "tool.before" | "tool.after" | "session.created" | "session.idle" | "session.error" | "agent.delegated";
3
+ type: "tool.before" | "tool.after" | "session.created" | "session.idle" | "session.error";
4
4
  agent?: string;
5
5
  tool?: string;
6
6
  args?: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"event-logger.d.ts","sourceRoot":"","sources":["../../src/services/event-logger.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,iBAAiB,GAAG,cAAc,GAAG,eAAe,GAAG,iBAAiB,CAAA;IAC7G,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAUD,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAE1D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBnE;AAoBD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAqB/F;AAwBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CA2D7D"}
1
+ {"version":3,"file":"event-logger.d.ts","sourceRoot":"","sources":["../../src/services/event-logger.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,iBAAiB,GAAG,cAAc,GAAG,eAAe,CAAA;IACzF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAUD,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAE1D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBnE;AAkBD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAqB/F;AAqBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAqD7D"}
@@ -20,6 +20,7 @@
20
20
  * supplies the missing context, eliminating the human question entirely.
21
21
  */
22
22
  import type { ExplorationResult } from "./preflight-explorer";
23
+ import { type WorkflowClass } from "./workflow-router";
23
24
  export type TaskType = "feature" | "ui-feature" | "bugfix" | "docs" | "simple" | "ambiguous";
24
25
  /** A single stage in a workflow sequence, mapping to an existing fd-* command. */
25
26
  export interface WorkflowStage {
@@ -46,6 +47,10 @@ export interface ClassificationResult {
46
47
  requiresTDD: boolean;
47
48
  /** Ordered sequence of stages to execute */
48
49
  stageSequence: WorkflowStage[];
50
+ /** Adaptive workflow class when routed through buildAdaptiveWorkflow() */
51
+ workflowClass?: WorkflowClass;
52
+ /** Routing scores from the adaptive router */
53
+ scores?: import("./workflow-router").RoutingScore;
49
54
  /** True when the description is too vague to classify without asking a question */
50
55
  clarificationNeeded: boolean;
51
56
  /** The single clarifying question to ask via supervisor (when clarificationNeeded=true) */
@@ -62,8 +67,16 @@ export declare function classifyTask(description: string): ClassificationResult;
62
67
  /**
63
68
  * Build the ordered WorkflowStage array for a given TaskType.
64
69
  * Each stage maps 1:1 to an existing registered fd-* command.
70
+ *
71
+ * @deprecated Use buildAdaptiveWorkflow() instead for adaptive routing.
72
+ * Kept for backward compatibility.
65
73
  */
66
74
  export declare function buildStageSequence(taskType: TaskType): WorkflowStage[];
75
+ /**
76
+ * Build an adaptive workflow for a task description using the new
77
+ * workflow router. Uses exploration context when available.
78
+ */
79
+ export declare function buildAdaptiveWorkflow(description: string, exploration?: import("./preflight-explorer").ExplorationResult): ClassificationResult;
67
80
  export interface StageProgress {
68
81
  completedStageNames: string[];
69
82
  blockedAtStage?: string;
@@ -135,6 +148,17 @@ export interface QuickRunState {
135
148
  };
136
149
  /** Questions that were suppressed by the guard (not sent to human) */
137
150
  suppressedQuestions: string[];
151
+ /** Adaptive workflow class from the router */
152
+ workflowClass?: string;
153
+ /** Routing scores from the adaptive router */
154
+ routingScores?: {
155
+ simplicity: number;
156
+ confidence: number;
157
+ lowRisk: number;
158
+ knownCodebase: number;
159
+ cheapComplexity: number;
160
+ total: number;
161
+ };
138
162
  }
139
163
  /**
140
164
  * Create a fresh QuickRunState record for a new /fd-quick run.
@@ -1 +1 @@
1
- {"version":3,"file":"quick-router.d.ts","sourceRoot":"","sources":["../../src/services/quick-router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quick-router.d.ts","sourceRoot":"","sources":["../../src/services/quick-router.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,10 @@ export declare const REGISTERED_COMMANDS: readonly string[];
25
25
  * machine. These are the only valid workflow stages in the system.
26
26
  */
27
27
  export declare const WORKFLOW_PHASES: readonly string[];
28
+ /**
29
+ * Determine whether a workflow class indicates an adaptive (non-linear) workflow.
30
+ */
31
+ export declare function isAdaptiveWorkflow(workflowClass?: string): boolean;
28
32
  export type SupervisorDecisionKind = "approve" | "revise" | "block" | "escalate";
29
33
  export type SupervisorTargetType = "command" | "agent" | "workflow";
30
34
  export type SupervisorReviewPhase = "preflight" | "post-stage";
@@ -61,6 +65,8 @@ export interface SupervisorContext {
61
65
  taskDescription?: string;
62
66
  /** Current workflow phase at the time of review */
63
67
  currentPhase?: string;
68
+ /** Current workflow class (for adaptive routing) */
69
+ workflowClass?: string;
64
70
  /** Whether required inputs have been confirmed present */
65
71
  prerequisitesMet?: boolean;
66
72
  /** Specific missing inputs */
@@ -1 +1 @@
1
- {"version":3,"file":"supervisor-binding.d.ts","sourceRoot":"","sources":["../../src/services/supervisor-binding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"supervisor-binding.d.ts","sourceRoot":"","sources":["../../src/services/supervisor-binding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Workflow Router Service
3
+ *
4
+ * Adaptive workflow routing that replaces the fixed pipeline in quick-router.ts.
5
+ * Scores tasks across multiple dimensions and selects the most appropriate
6
+ * workflow class and stage sequence.
7
+ */
8
+ import type { TaskType, WorkflowStage } from "./quick-router";
9
+ export type WorkflowClass = "quick" | "standard" | "explore" | "ui-heavy" | "bugfix" | "docs-only" | "verify-heavy";
10
+ export interface RoutingCriteria {
11
+ taskType: TaskType;
12
+ complexity: "cheap" | "standard" | "expensive";
13
+ confidence: number;
14
+ blastRadius: number;
15
+ isSensitive: boolean;
16
+ codebaseFreshness: "fresh" | "stale" | "unknown";
17
+ requiresTests: boolean;
18
+ }
19
+ export interface RoutingScore {
20
+ simplicity: number;
21
+ confidence: number;
22
+ lowRisk: number;
23
+ knownCodebase: number;
24
+ cheapComplexity: number;
25
+ total: number;
26
+ }
27
+ export interface WorkflowRoute {
28
+ workflowClass: WorkflowClass;
29
+ stages: WorkflowStage[];
30
+ criteria: RoutingCriteria;
31
+ scores: RoutingScore;
32
+ reason: string;
33
+ }
34
+ export interface EscalationEvent {
35
+ from: WorkflowClass;
36
+ to: WorkflowClass;
37
+ trigger: string;
38
+ reason: string;
39
+ timestamp: string;
40
+ }
41
+ export interface RoutingDecision {
42
+ route: WorkflowRoute;
43
+ escalationHistory: EscalationEvent[];
44
+ skippedStages: string[];
45
+ loggedAt: string;
46
+ }
47
+ export declare function scoreTaskForRouting(criteria: RoutingCriteria): RoutingScore;
48
+ export declare function buildAdaptiveStageSequence(criteria: RoutingCriteria): WorkflowRoute;
49
+ export declare function shouldEscalate(currentClass: WorkflowClass, evidence: {
50
+ blastRadius?: number;
51
+ isSensitive?: boolean;
52
+ testsFailing?: boolean;
53
+ designNeeded?: boolean;
54
+ }): WorkflowClass | null;
55
+ export declare function logRoutingDecision(dir: string, decision: RoutingDecision): void;
56
+ export declare function getHistoricalCompliance(dir: string, taskType: TaskType): number | null;
57
+ //# sourceMappingURL=workflow-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-router.d.ts","sourceRoot":"","sources":["../../src/services/workflow-router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAO7D,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,UAAU,GACV,SAAS,GACT,UAAU,GACV,QAAQ,GACR,WAAW,GACX,cAAc,CAAA;AAElB,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAA;IAClB,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAA;IAC9C,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,iBAAiB,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;IAChD,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,aAAa,CAAA;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB,QAAQ,EAAE,eAAe,CAAA;IACzB,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,aAAa,CAAA;IACnB,EAAE,EAAE,aAAa,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,aAAa,CAAA;IACpB,iBAAiB,EAAE,eAAe,EAAE,CAAA;IACpC,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAYD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,YAAY,CAgB3E;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,eAAe,GAAG,aAAa,CA0EnF;AAED,wBAAgB,cAAc,CAC5B,YAAY,EAAE,aAAa,EAC3B,QAAQ,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,GACA,aAAa,GAAG,IAAI,CAuBtB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAY/E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CA6CtF"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-scorecard.d.ts","sourceRoot":"","sources":["../../src/services/workflow-scorecard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAK3C,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,eAAe,EAAE,MAAM,CAAA;IACvB,uDAAuD;IACvD,qBAAqB,EAAE,MAAM,CAAA;IAC7B,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAA;IACrB,oDAAoD;IACpD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAA;IACrB,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAA;IACvB,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAA;IACxB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAA;IACvB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAA;IACtB,mCAAmC;IACnC,kBAAkB,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAA;IAClE,UAAU,EAAE,mBAAmB,CAAA;IAC/B,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,kDAAkD;IAClD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,4DAA4D;IAC5D,qBAAqB,EAAE,MAAM,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAgBD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,QAAQ,EACf,KAAK,GAAE,cAAmB,GACzB,iBAAiB,CAyEnB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,iBAAiB,EAAE,CAS3E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAEvF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,iBAAiB,EAAE,CAIhG;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIhF"}
1
+ {"version":3,"file":"workflow-scorecard.d.ts","sourceRoot":"","sources":["../../src/services/workflow-scorecard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAI3C,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,eAAe,EAAE,MAAM,CAAA;IACvB,uDAAuD;IACvD,qBAAqB,EAAE,MAAM,CAAA;IAC7B,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAA;IACrB,oDAAoD;IACpD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAA;IACrB,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAA;IACvB,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAA;IACxB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAA;IACvB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAA;IACtB,mCAAmC;IACnC,kBAAkB,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAA;IAClE,UAAU,EAAE,mBAAmB,CAAA;IAC/B,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,kDAAkD;IAClD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,4DAA4D;IAC5D,qBAAqB,EAAE,MAAM,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAgBD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,QAAQ,EACf,KAAK,GAAE,cAAmB,GACzB,iBAAiB,CAyEnB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,iBAAiB,EAAE,CAS3E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAEvF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,iBAAiB,EAAE,CAIhG;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIhF"}
@@ -59,6 +59,29 @@ export interface PlanningState {
59
59
  summaryVersion: number;
60
60
  /** Whether the state is still considered fresh enough to use */
61
61
  freshnessStatus: "fresh" | "stale" | "unknown";
62
+ /** Adaptive workflow class selected by the router */
63
+ workflowClass?: string;
64
+ /** Stages intentionally skipped for this task */
65
+ skippedStages?: string[];
66
+ /** History of workflow escalations */
67
+ escalationHistory?: Array<{
68
+ from: string;
69
+ to: string;
70
+ trigger: string;
71
+ reason: string;
72
+ timestamp: string;
73
+ }>;
74
+ /** Routing decision score breakdown */
75
+ routingScores?: {
76
+ simplicity: number;
77
+ confidence: number;
78
+ lowRisk: number;
79
+ knownCodebase: number;
80
+ cheapComplexity: number;
81
+ total: number;
82
+ };
83
+ /** Reason for workflow selection */
84
+ routingReason?: string;
62
85
  }
63
86
  /** Extended PlanningState with TDD state for internal use */
64
87
  export type PlanningStateWithTDD = PlanningState & {
@@ -1 +1 @@
1
- {"version":3,"file":"planning-state-lib.d.ts","sourceRoot":"","sources":["../../src/tools/planning-state-lib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planning-state-lib.d.ts","sourceRoot":"","sources":["../../src/tools/planning-state-lib.ts"],"names":[],"mappings":"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"}
@@ -193,6 +193,54 @@ The orchestrator enforces wave ordering. It will not dispatch Wave 2 tasks until
193
193
 
194
194
  ---
195
195
 
196
+ ## Adaptive Workflow Routing
197
+
198
+ FlowDeck uses **adaptive workflow routing** to select the minimal sufficient workflow for each task. The orchestrator scores tasks across multiple dimensions and chooses the lightest workflow that can reliably do the job.
199
+
200
+ ### Workflow Classes
201
+
202
+ | Class | Stages | When Selected |
203
+ |-------|--------|---------------|
204
+ | `quick` | execute → verify | Simple, low-risk tasks (< 5 files, score ≥ 0.75) |
205
+ | `standard` | plan → execute → verify | Normal implementation tasks |
206
+ | `explore` | discuss → plan → execute → verify | Ambiguous or unfamiliar tasks |
207
+ | `ui-heavy` | discuss → design → plan → execute → verify | UI/UX-heavy tasks |
208
+ | `bugfix` | discuss → fix-bug → verify | Bug fixes |
209
+ | `docs-only` | write-docs → verify | Documentation-only changes |
210
+ | `verify-heavy` | plan → execute → verify | High blast radius or sensitive paths |
211
+
212
+ ### Scoring Dimensions
213
+
214
+ The router scores tasks across 5 dimensions:
215
+
216
+ | Dimension | Weight | Description |
217
+ |-----------|--------|-------------|
218
+ | Simplicity | 30% | Is the task a simple rename, typo fix, or config update? |
219
+ | Confidence | 20% | How well does the task description match known patterns? |
220
+ | Low Risk | 20% | Is blast radius < 3 and are no sensitive paths touched? |
221
+ | Known Codebase | 15% | Is the codebase mapping fresh (< 24h)? |
222
+ | Cheap Complexity | 15% | Is the task cheap (classify, validate, summarize)? |
223
+
224
+ ### Escalation
225
+
226
+ If the initial workflow proves insufficient during execution, the orchestrator escalates to a richer workflow:
227
+
228
+ - **quick → standard**: blast radius exceeds 3 files
229
+ - **standard → verify-heavy**: sensitive paths are touched
230
+ - **standard → ui-heavy**: design requirements emerge
231
+
232
+ Escalation is logged in `.codebase/WORKFLOW_ROUTING.jsonl` with the trigger and reason.
233
+
234
+ ### Skipped Stages
235
+
236
+ For `quick` and `docs-only` workflows, the following stages are intentionally skipped:
237
+ - `discuss` — requirements are clear from the task description
238
+ - `plan` — the task is small enough to not need a formal plan
239
+
240
+ Skipped stages are logged in `STATE.md` under `skippedStages`.
241
+
242
+ ---
243
+
196
244
  ## Mid-Session Checkpointing
197
245
 
198
246
  Any step can be paused and resumed:
package/docs/index.md CHANGED
@@ -2,14 +2,14 @@
2
2
 
3
3
  > AI-powered multi-agent workflow orchestration with built-in safety intelligence for OpenCode
4
4
 
5
- FlowDeck structures every feature through a six-step cycle:
6
- `/fd-map-codebase` → `/fd-new-feature` → `/fd-discuss` → `/fd-plan` → `/fd-execute` → `/fd-verify`
5
+ FlowDeck structures every feature through an **adaptive workflow cycle**. The orchestrator scores each task and selects the minimal sufficient workflow class dynamically.
7
6
 
8
7
  ## Features
9
8
 
10
9
  - **25 agents** — architect, planner, coder, reviewer, tester, debugger, risk-analyst, policy-enforcer, and more
11
10
  - **59 skills** — reusable workflow patterns (TDD, security scan, code review, deploy check, and more)
12
11
  - **20 commands** — workflow commands for all project operations
12
+ - **Adaptive workflow routing** — scores tasks across 5 dimensions and selects the minimal sufficient workflow
13
13
  - **Persistent state** — resume exactly where you left off across sessions via `.planning/STATE.md`
14
14
  - **Parallel execution** — independent tasks run simultaneously in wave-structured batches
15
15
  - **AI Safety layer** — patch trust scoring, edit gates, phase gating, regression prediction built into every workflow
@@ -29,6 +29,19 @@ FlowDeck structures every feature through a six-step cycle:
29
29
  | `/fd-status` | View project progress and roadmap |
30
30
  | `/fd-doctor` | Check FlowDeck installation and environment health |
31
31
 
32
+ ## Reference
33
+
34
+ - [Workflow Router API](reference/workflow-router.md) — Adaptive workflow routing API
35
+ - [Hooks](reference/hooks.md) — Lifecycle hooks and event interception
36
+ - [Rules](reference/rules.md) — Coding standards and behavioral rules
37
+ - [RTK](reference/rtk.md) — Output compression proxy
38
+
39
+ ## Concepts
40
+
41
+ - [Workflows](concepts/workflows.md) — Command cycle, adaptive routing, wave execution, checkpointing
42
+ - [Commands](commands/) — Full command documentation
43
+ - [Skills](skills/) — Reusable skill definitions
44
+
32
45
  ## Next Steps
33
46
 
34
47
  - [Getting Started → Installation](getting-started/installation.md)