@dv.nghiem/flowdeck 0.4.12 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/agents/orchestrator.d.ts.map +1 -1
  2. package/dist/config/index.d.ts +1 -1
  3. package/dist/config/index.d.ts.map +1 -1
  4. package/dist/config/schema.d.ts +27 -1
  5. package/dist/config/schema.d.ts.map +1 -1
  6. package/dist/dashboard/lib/state-reader.d.ts +2 -1
  7. package/dist/dashboard/lib/state-reader.d.ts.map +1 -1
  8. package/dist/dashboard/server.mjs +29 -1
  9. package/dist/dashboard/types.d.ts +14 -0
  10. package/dist/dashboard/types.d.ts.map +1 -1
  11. package/dist/dashboard/views/index.ejs +2 -0
  12. package/dist/dashboard/views/partials/token-budget.ejs +35 -0
  13. package/dist/hooks/approval-hook.d.ts +16 -2
  14. package/dist/hooks/approval-hook.d.ts.map +1 -1
  15. package/dist/hooks/compaction-hook.d.ts +1 -1
  16. package/dist/hooks/compaction-hook.d.ts.map +1 -1
  17. package/dist/hooks/context-window-monitor.d.ts +7 -1
  18. package/dist/hooks/context-window-monitor.d.ts.map +1 -1
  19. package/dist/hooks/decision-trace-hook.d.ts +3 -0
  20. package/dist/hooks/decision-trace-hook.d.ts.map +1 -1
  21. package/dist/hooks/event-log-hook.d.ts +19 -3
  22. package/dist/hooks/event-log-hook.d.ts.map +1 -1
  23. package/dist/hooks/guard-rails.d.ts +16 -5
  24. package/dist/hooks/guard-rails.d.ts.map +1 -1
  25. package/dist/hooks/orchestrator-guard-hook.d.ts +8 -5
  26. package/dist/hooks/orchestrator-guard-hook.d.ts.map +1 -1
  27. package/dist/hooks/tool-guard.d.ts +19 -3
  28. package/dist/hooks/tool-guard.d.ts.map +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +9978 -5880
  31. package/dist/lib/lazy.d.ts +12 -0
  32. package/dist/lib/lazy.d.ts.map +1 -0
  33. package/dist/services/agent-contract-registry.d.ts.map +1 -1
  34. package/dist/services/agent-trace-graph.d.ts +4 -0
  35. package/dist/services/agent-trace-graph.d.ts.map +1 -1
  36. package/dist/services/agent-validator.d.ts +2 -1
  37. package/dist/services/agent-validator.d.ts.map +1 -1
  38. package/dist/services/approval-manager.d.ts +14 -1
  39. package/dist/services/approval-manager.d.ts.map +1 -1
  40. package/dist/services/audit-log.d.ts +23 -0
  41. package/dist/services/audit-log.d.ts.map +1 -0
  42. package/dist/services/context-ingress.d.ts +81 -0
  43. package/dist/services/context-ingress.d.ts.map +1 -0
  44. package/dist/services/council-runner.d.ts +19 -0
  45. package/dist/services/council-runner.d.ts.map +1 -0
  46. package/dist/services/deadlock-detector.d.ts.map +1 -1
  47. package/dist/services/delegation-budget.d.ts +55 -0
  48. package/dist/services/delegation-budget.d.ts.map +1 -0
  49. package/dist/services/event-handlers/command-executed-handler.d.ts +9 -0
  50. package/dist/services/event-handlers/command-executed-handler.d.ts.map +1 -0
  51. package/dist/services/event-handlers/index.d.ts +6 -0
  52. package/dist/services/event-handlers/index.d.ts.map +1 -0
  53. package/dist/services/event-handlers/session-error-handler.d.ts +8 -0
  54. package/dist/services/event-handlers/session-error-handler.d.ts.map +1 -0
  55. package/dist/services/event-handlers/session-idle-handler.d.ts +9 -0
  56. package/dist/services/event-handlers/session-idle-handler.d.ts.map +1 -0
  57. package/dist/services/event-handlers/tool-outcome-handler.d.ts +11 -0
  58. package/dist/services/event-handlers/tool-outcome-handler.d.ts.map +1 -0
  59. package/dist/services/event-handlers/types.d.ts +42 -0
  60. package/dist/services/event-handlers/types.d.ts.map +1 -0
  61. package/dist/services/event-logger.d.ts +3 -1
  62. package/dist/services/event-logger.d.ts.map +1 -1
  63. package/dist/services/execution-substrate.d.ts +35 -0
  64. package/dist/services/execution-substrate.d.ts.map +1 -0
  65. package/dist/services/harness-controller.d.ts +58 -0
  66. package/dist/services/harness-controller.d.ts.map +1 -0
  67. package/dist/services/harness-policy.d.ts +24 -0
  68. package/dist/services/harness-policy.d.ts.map +1 -0
  69. package/dist/services/harness-types.d.ts +185 -0
  70. package/dist/services/harness-types.d.ts.map +1 -0
  71. package/dist/services/lazy-rule-loader.d.ts +2 -0
  72. package/dist/services/lazy-rule-loader.d.ts.map +1 -1
  73. package/dist/services/prompt-cache.d.ts +25 -0
  74. package/dist/services/prompt-cache.d.ts.map +1 -0
  75. package/dist/services/recovery-layer.d.ts +26 -0
  76. package/dist/services/recovery-layer.d.ts.map +1 -0
  77. package/dist/services/run-trace.d.ts +17 -0
  78. package/dist/services/run-trace.d.ts.map +1 -1
  79. package/dist/services/state-persistence.d.ts +22 -0
  80. package/dist/services/state-persistence.d.ts.map +1 -0
  81. package/dist/services/supervisor-binding.d.ts +9 -0
  82. package/dist/services/supervisor-binding.d.ts.map +1 -1
  83. package/dist/services/token-metrics.d.ts +54 -0
  84. package/dist/services/token-metrics.d.ts.map +1 -0
  85. package/dist/services/verification-layer.d.ts +24 -0
  86. package/dist/services/verification-layer.d.ts.map +1 -0
  87. package/dist/services/workflow-scorecard.d.ts +5 -0
  88. package/dist/services/workflow-scorecard.d.ts.map +1 -1
  89. package/dist/tools/council.d.ts.map +1 -1
  90. package/dist/tools/decision-trace.d.ts +4 -0
  91. package/dist/tools/decision-trace.d.ts.map +1 -1
  92. package/dist/tools/delegate.d.ts +16 -0
  93. package/dist/tools/delegate.d.ts.map +1 -0
  94. package/dist/tools/failure-replay.d.ts +8 -0
  95. package/dist/tools/failure-replay.d.ts.map +1 -1
  96. package/dist/tools/policy-engine.d.ts +1 -0
  97. package/dist/tools/policy-engine.d.ts.map +1 -1
  98. package/dist/types/hooks.d.ts +54 -0
  99. package/dist/types/hooks.d.ts.map +1 -0
  100. package/docs/concepts/HARNESS_ARCHITECTURE.md +241 -0
  101. package/docs/concepts/HARNESS_LAYERS.md +378 -0
  102. package/docs/concepts/HARNESS_WIRING.md +404 -0
  103. package/package.json +1 -1
  104. package/src/commands/fd-guarded-edit.md +69 -0
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Shared harness types used across the FlowDeck runtime services.
3
+ *
4
+ * This module contains only type definitions and re-exports. It is imported
5
+ * by services, tools, and the plugin entry point to keep cross-layer contracts
6
+ * explicit and avoid circular dependencies.
7
+ */
8
+ import type { ToolEvent } from "./event-logger";
9
+ import type { PlanningState } from "../tools/planning-state-lib";
10
+ export type { ToolEvent };
11
+ /** Snapshot of token consumption for a single context component. */
12
+ export interface TokenBudgetSnapshot {
13
+ /** Component name, e.g. 'total', 'state', 'plan', 'docs', 'events', 'rules', 'skills'. */
14
+ component: string;
15
+ /** Tokens already consumed by this component. */
16
+ usedTokens: number;
17
+ /** Token limit allocated to this component. */
18
+ limitTokens: number;
19
+ /** How the limit was derived, e.g. 'config', 'env', 'fallback'. */
20
+ source: string;
21
+ }
22
+ /** Workflow route selected for a task. */
23
+ export interface WorkflowRoute {
24
+ workflowClass: string;
25
+ stages: string[];
26
+ criteria: Record<string, unknown>;
27
+ scores: Record<string, number>;
28
+ reason: string;
29
+ }
30
+ /** A free-form observation attached to a run for loop/recovery context. */
31
+ export interface Observation {
32
+ id: string;
33
+ runId: string;
34
+ type: string;
35
+ content: string;
36
+ timestamp: string;
37
+ source: string;
38
+ }
39
+ /** Fully assembled runtime context for a command execution. */
40
+ export interface AssembledContext {
41
+ directory: string;
42
+ sessionID: string;
43
+ runId: string;
44
+ command: string;
45
+ description: string;
46
+ isTrivialChat: boolean;
47
+ planningState: PlanningState;
48
+ planContent: string;
49
+ codebaseDocs: Record<string, string>;
50
+ recentEvents: ToolEvent[];
51
+ selectedRules: string[];
52
+ selectedSkills: string[];
53
+ tokenBudget: TokenBudgetSnapshot;
54
+ }
55
+ /** Status of an individual agent span. */
56
+ export type SpanStatus = "running" | "complete" | "failed" | "blocked" | "skipped";
57
+ /** Options provided when closing an agent span. */
58
+ export interface SpanCloseOpts {
59
+ output_valid?: boolean;
60
+ contract_violations?: string[];
61
+ tools_used?: string[];
62
+ handoff_payload?: Record<string, unknown>;
63
+ cost_estimate?: number;
64
+ retry_count?: number;
65
+ }
66
+ /** A single node in the causal agent trace graph. */
67
+ export interface AgentSpan {
68
+ span_id: string;
69
+ /** trace_id = run_id of the root workflow run. */
70
+ trace_id: string;
71
+ /** span_id of the parent invocation; absent for the root agent. */
72
+ parent_span_id?: string;
73
+ /** Agent or system that delegated to this agent. */
74
+ invoker: string;
75
+ /** This agent's name. */
76
+ agent: string;
77
+ task_description: string;
78
+ stage: string;
79
+ started_at: string;
80
+ ended_at?: string;
81
+ status: SpanStatus;
82
+ /** Whether the agent produced a schema-valid output. */
83
+ output_valid: boolean;
84
+ /** Contract violation messages recorded during this span. */
85
+ contract_violations: string[];
86
+ /** Tool names used during this span. */
87
+ tools_used: string[];
88
+ /** Structured payload passed to the next agent. */
89
+ handoff_payload?: Record<string, unknown>;
90
+ latency_ms?: number;
91
+ model?: string;
92
+ cost_estimate?: number;
93
+ retry_count: number;
94
+ /** Delegation depth: root agent is 0, its delegate is 1, etc. */
95
+ depth: number;
96
+ }
97
+ /** Runtime handle for a single harness run. */
98
+ export interface RunContext {
99
+ runId: string;
100
+ sessionID: string;
101
+ command: string;
102
+ directory: string;
103
+ rootSpanId: string;
104
+ currentSpanId?: string;
105
+ status: "running" | "complete" | "failed" | "cancelled";
106
+ workflowClass?: string;
107
+ currentStage?: string;
108
+ }
109
+ /** Possible recovery actions when a run is stuck or fails. */
110
+ export type RecoveryAction = "retry" | "fallback-agent" | "escalate" | "stop";
111
+ /** Arguments accepted by the delegate tool. */
112
+ export interface DelegateToolArgs {
113
+ agent: string;
114
+ task: string;
115
+ mode?: "direct" | "council" | "pipeline";
116
+ context?: {
117
+ agents?: string[];
118
+ stages?: Array<{
119
+ agent: string;
120
+ task?: string;
121
+ }>;
122
+ previousOutput?: string;
123
+ };
124
+ }
125
+ /** Progress entry for a single pipeline stage. */
126
+ export interface PipelineStageProgress {
127
+ stage: string;
128
+ status: SpanStatus;
129
+ output?: string;
130
+ error?: string;
131
+ }
132
+ /** Result returned by the delegate tool. */
133
+ export interface DelegateResult {
134
+ span_id: string;
135
+ run_id: string;
136
+ status: "running" | "complete" | "failed" | "blocked";
137
+ output: string;
138
+ error?: string;
139
+ pipeline_progress?: PipelineStageProgress[];
140
+ }
141
+ /** Policy evaluation verdict. */
142
+ export type PolicyVerdict = "allow" | "deny" | "ask";
143
+ /** Structured decision returned by every harness policy evaluation. */
144
+ export interface PolicyDecision {
145
+ verdict: PolicyVerdict;
146
+ /** Human-readable reason for the decision. */
147
+ reason: string;
148
+ /** When verdict is 'ask', the approval request id to resolve. */
149
+ approvalRequestId?: string;
150
+ /** Risk classification used for logging and scorecards. */
151
+ riskFlags: string[];
152
+ /** Which layer produced the decision. */
153
+ source: string;
154
+ /** When verdict is 'deny', a structured escalation message. */
155
+ escalationMessage?: string;
156
+ }
157
+ /** Input passed to every harness policy evaluation. */
158
+ export interface PolicyInput {
159
+ directory: string;
160
+ sessionID: string;
161
+ runId: string;
162
+ agent: string;
163
+ tool: string;
164
+ args: Record<string, unknown>;
165
+ command?: string;
166
+ workflowClass?: string;
167
+ currentStage?: string;
168
+ assembledContext?: AssembledContext;
169
+ }
170
+ /** Single append-only audit entry for a policy decision or action. */
171
+ export interface AuditEntry {
172
+ id?: string;
173
+ timestamp: string;
174
+ run_id: string;
175
+ session_id: string;
176
+ agent: string;
177
+ tool?: string;
178
+ command?: string;
179
+ verdict: "allow" | "deny" | "ask";
180
+ reason: string;
181
+ risk_flags: string[];
182
+ source: string;
183
+ approval_request_id?: string;
184
+ }
185
+ //# sourceMappingURL=harness-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-types.d.ts","sourceRoot":"","sources":["../../src/services/harness-types.ts"],"names":[],"mappings":"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"}
@@ -99,6 +99,8 @@ export declare function detectProjectLanguages(projectRoot: string): string[];
99
99
  export declare function buildSelectionDiagnostics(selection: RuleSelection, context: SelectionContext): string;
100
100
  /** Invalidate the discovery cache (call after rule files change, e.g. in tests). */
101
101
  export declare function invalidateRuleCache(): void;
102
+ /** Alias exported for prompt-cache invalidation. */
103
+ export declare function invalidateCache(): void;
102
104
  /** Return current cache entry count (for tests/telemetry). */
103
105
  export declare function getRuleCacheSize(): number;
104
106
  //# sourceMappingURL=lazy-rule-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-rule-loader.d.ts","sourceRoot":"","sources":["../../src/services/lazy-rule-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,2DAA2D;AAC3D,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAA;IACnB,oEAAoE;IACpE,SAAS,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB;;;OAGG;IACH,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,4CAA4C;AAC5C,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAOD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBzE;AAkCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CA0B9D;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,gBAAqB,GAC7B,aAAa,CAiDf;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,MAAM,EAAE,CAGV;AAID;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAiDpE;AAID;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,gBAAgB,GACxB,MAAM,CAgBR;AAID,oFAAoF;AACpF,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
1
+ {"version":3,"file":"lazy-rule-loader.d.ts","sourceRoot":"","sources":["../../src/services/lazy-rule-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,2DAA2D;AAC3D,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAA;IACnB,oEAAoE;IACpE,SAAS,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB;;;OAGG;IACH,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,4CAA4C;AAC5C,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAOD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBzE;AAkCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CA0B9D;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,gBAAqB,GAC7B,aAAa,CAiDf;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,MAAM,EAAE,CAGV;AAID;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAiDpE;AAID;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,gBAAgB,GACxB,MAAM,CAgBR;AAID,oFAAoF;AACpF,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,oDAAoD;AACpD,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Prompt Cache
3
+ *
4
+ * Caches assembled prompt fragments keyed by task description, workflow stage,
5
+ * and detected languages. Entries expire after a 5-minute TTL by default.
6
+ *
7
+ * Thread safety: operations are synchronous and run in the single-process event
8
+ * loop, so the internal Map is safe from races.
9
+ */
10
+ export interface PromptCache {
11
+ /** Build a deterministic cache key from task + stage + languages. */
12
+ getKey(description: string, stage: string, languages: string[]): string;
13
+ /** Return a cached fragment if it is still fresh. */
14
+ get(key: string): string | undefined;
15
+ /** Store a fragment with an optional TTL (defaults to 5 minutes). */
16
+ set(key: string, fragment: string, ttlMs?: number): void;
17
+ /** Drop all cached fragments and invalidate downstream rule caches. */
18
+ invalidate(): void;
19
+ }
20
+ export declare const DEFAULT_PROMPT_CACHE_TTL_MS: number;
21
+ /** Factory for creating a fresh prompt cache (mostly useful in tests). */
22
+ export declare function createPromptCache(): PromptCache;
23
+ /** Shared process-wide prompt cache used by the context ingress service. */
24
+ export declare const sharedPromptCache: PromptCache;
25
+ //# sourceMappingURL=prompt-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-cache.d.ts","sourceRoot":"","sources":["../../src/services/prompt-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACvE,qDAAqD;IACrD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACpC,qEAAqE;IACrE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxD,uEAAuE;IACvE,UAAU,IAAI,IAAI,CAAA;CACnB;AAOD,eAAO,MAAM,2BAA2B,QAAgB,CAAA;AAmCxD,0EAA0E;AAC1E,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C;AAED,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,EAAE,WAAmC,CAAA"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Recovery Layer
3
+ *
4
+ * Detect stuck runs, explain blockages, recommend recovery actions,
5
+ * surface relevant failures from the failure-replay engine, and bound retries.
6
+ */
7
+ import { type DeadlockSignal } from "./deadlock-detector";
8
+ import { type FailureEntry } from "../tools/failure-replay";
9
+ import type { RunContext, RecoveryAction } from "./harness-types";
10
+ import type { TaskType } from "./quick-router";
11
+ export interface RecoveryLayer {
12
+ /** Analyze recent spans and signals for stuck patterns. */
13
+ detectStuckRun(dir: string, runId: string): DeadlockSignal[];
14
+ /** Return true if the run has any auto-stop deadlock signal. */
15
+ isRunStuck(dir: string, runId: string): boolean;
16
+ /** Return a human-readable explanation of why the run is blocked. */
17
+ explainBlockage(ctx: RunContext): string;
18
+ /** Recommend the next recovery action: retry, fallback-agent, escalate, stop. */
19
+ recommendRecovery(ctx: RunContext, signals: DeadlockSignal[]): RecoveryAction;
20
+ /** Check whether a retry is still allowed for the current step. */
21
+ canRetry(runId: string): boolean;
22
+ /** Surface recent failures relevant to the current task. */
23
+ getRelevantFailures(dir: string, taskType: TaskType): FailureEntry[];
24
+ }
25
+ export declare function createRecoveryLayer(appLog?: (msg: string) => void): RecoveryLayer;
26
+ //# sourceMappingURL=recovery-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery-layer.d.ts","sourceRoot":"","sources":["../../src/services/recovery-layer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,qBAAqB,CAAA;AAM5B,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAAA;IAC5D,gEAAgE;IAChE,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;IAC/C,qEAAqE;IACrE,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAAA;IACxC,iFAAiF;IACjF,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,cAAc,CAAA;IAC7E,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;IAChC,4DAA4D;IAC5D,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,YAAY,EAAE,CAAA;CACrE;AAwCD,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,aAAa,CAoFjF"}
@@ -1,4 +1,10 @@
1
+ import type { DelegationBudgetSnapshot } from "./delegation-budget";
1
2
  export type RunStatus = "running" | "complete" | "failed" | "cancelled";
3
+ export interface VerificationRecord {
4
+ kind: string;
5
+ evidence: string;
6
+ timestamp: string;
7
+ }
2
8
  export interface RunTrace {
3
9
  run_id: string;
4
10
  session_id: string;
@@ -12,6 +18,8 @@ export interface RunTrace {
12
18
  risk_score: number;
13
19
  outcome?: string;
14
20
  error?: string;
21
+ budget_snapshot?: DelegationBudgetSnapshot;
22
+ verifications?: VerificationRecord[];
15
23
  }
16
24
  export declare function runsPath(dir: string): string;
17
25
  export declare function startTrace(dir: string, command: string, args: Record<string, unknown>, session_id?: string): RunTrace;
@@ -19,7 +27,16 @@ export declare function endTrace(dir: string, run_id: string, status: Exclude<Ru
19
27
  export declare function touchFile(dir: string, run_id: string, filePath: string): void;
20
28
  export declare function setRiskScore(dir: string, run_id: string, score: number): void;
21
29
  export declare function getTrace(dir: string, run_id: string): RunTrace | null;
30
+ export declare function recordBudget(dir: string, run_id: string, snapshot: DelegationBudgetSnapshot): void;
22
31
  export declare function listTraces(dir: string, limit?: number): RunTrace[];
32
+ /**
33
+ * Return the most recent running trace for a session, or undefined if none.
34
+ */
35
+ export declare function findRunningTrace(dir: string, sessionID: string): RunTrace | undefined;
36
+ /**
37
+ * Append a verification record to the run trace.
38
+ */
39
+ export declare function recordVerification(dir: string, run_id: string, kind: string, evidence: string): void;
23
40
  export interface RunDiff {
24
41
  run_a: string;
25
42
  run_b: string;
@@ -1 +1 @@
1
- {"version":3,"file":"run-trace.d.ts","sourceRoot":"","sources":["../../src/services/run-trace.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAA;AAEvE,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,SAAS,CAAA;IACjB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,SAAc,GACvB,QAAQ,CAiBV;AAqBD,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EACrC,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAYN;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAS7E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAM7E;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAErE;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,QAAQ,EAAE,CAG9D;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,cAAc,EAAE,OAAO,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAkB1F"}
1
+ {"version":3,"file":"run-trace.d.ts","sourceRoot":"","sources":["../../src/services/run-trace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * State Persistence Service
3
+ *
4
+ * Facade over run-trace, agent-trace-graph, and workflow-scorecard.
5
+ * Manages RunContext lifecycle and agent span tracking.
6
+ */
7
+ import type { RunContext, AgentSpan, SpanStatus, SpanCloseOpts } from "./harness-types";
8
+ export interface StatePersistenceService {
9
+ startRun(command: string, args: Record<string, unknown>, sessionID: string): RunContext;
10
+ endRun(ctx: RunContext, status: "complete" | "failed" | "cancelled", outcome?: string, error?: string, scorecardInput?: import("./workflow-scorecard").ScorecardInput): void;
11
+ openAgentSpan(ctx: RunContext, parentSpanId: string | undefined, agent: string, task: string, stage: string): AgentSpan;
12
+ closeAgentSpan(spanId: string, status: SpanStatus, opts?: SpanCloseOpts): void;
13
+ recordObservation(ctx: RunContext, type: string, content: string): void;
14
+ getRunContext(sessionID: string): RunContext | undefined;
15
+ updateRunContext(ctx: RunContext): void;
16
+ }
17
+ export interface StatePersistenceOptions {
18
+ directory: string;
19
+ appLog?: (msg: string) => void;
20
+ }
21
+ export declare function createStatePersistence(options: StatePersistenceOptions): StatePersistenceService;
22
+ //# sourceMappingURL=state-persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-persistence.d.ts","sourceRoot":"","sources":["../../src/services/state-persistence.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAKvF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAAA;IACvF,MAAM,CACJ,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,WAAW,EAC3C,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,OAAO,sBAAsB,EAAE,cAAc,GAC7D,IAAI,CAAA;IACP,aAAa,CACX,GAAG,EAAE,UAAU,EACf,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,SAAS,CAAA;IACZ,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAC9E,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACvE,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA;IACxD,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAA;CACxC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAID,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,uBAAuB,CA4GhG"}
@@ -14,6 +14,7 @@
14
14
  * - It returns a structured decision
15
15
  * - It NEVER creates or modifies commands or workflows
16
16
  */
17
+ import type { PolicyDecision, PolicyInput } from "./harness-types";
17
18
  /**
18
19
  * The canonical set of registered FlowDeck commands.
19
20
  * This list is derived from src/commands/*.md at build time and must NOT
@@ -113,6 +114,14 @@ export declare function isRegisteredTarget(name: string): {
113
114
  * the requested target is not registered.
114
115
  */
115
116
  export declare function runSupervisorReview(directory: string, targetName: string, ctx?: SupervisorContext, clarificationQuestion?: string): SupervisorDecision;
117
+ /**
118
+ * Review a tool call target through the supervisor lens.
119
+ *
120
+ * Returns a PolicyDecision so the harness can treat supervisor review like
121
+ * any other policy layer. `revise` and `escalate` are surfaced as `ask`
122
+ * verdicts; `block` is a `deny`; `approve` is an `allow`.
123
+ */
124
+ export declare function reviewToolCall(directory: string, input: PolicyInput): PolicyDecision;
116
125
  /**
117
126
  * Shorthand: should execution proceed given a decision and the current config mode?
118
127
  * In "advisory" mode, only "block" with a missing-existence check is hard-stopped.
@@ -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":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAIlE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAuBvC,CAAA;AAEV;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAOnC,CAAA;AAEV;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAElE;AAID,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAA;AAChF,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAA;AACnE,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,YAAY,CAAA;AAE9D,MAAM,WAAW,kBAAkB;IACjC,qBAAqB;IACrB,QAAQ,EAAE,sBAAsB,CAAA;IAChC,kCAAkC;IAClC,UAAU,EAAE,oBAAoB,CAAA;IAChC,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAA;IAClB,yDAAyD;IACzD,MAAM,EAAE,OAAO,CAAA;IACf,8CAA8C;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,gDAAgD;IAChD,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,+BAA+B;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,oEAAoE;IACpE,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,2BAA2B;IAC3B,cAAc,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAA;IAC/D,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAA;IACvB,wDAAwD;IACxD,WAAW,EAAE,qBAAqB,CAAA;IAClC,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,8DAA8D;IAC9D,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,yCAAyC;IACzC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,qBAAqB,CAAA;IACnC,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAA;IAC3B,8DAA8D;IAC9D,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,mBAAmB,EAAE,OAAO,CAAA;CAC7B;AAID,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,wBAAwB,CAsBnF;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,oBAAoB,CAAA;CAAE,CAIhG;AAoMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,iBAAsB,EAC3B,qBAAqB,CAAC,EAAE,MAAM,GAC7B,kBAAkB,CA4FpB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,CAoDpF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,EAAE,UAAU,GAAG,QAAQ,EAC3B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAWT"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Token Metrics
3
+ *
4
+ * Tracks per-run token usage from message.updated-style usage payloads and
5
+ * estimates cost. Used by the context ingress layer for real token budgets
6
+ * and by the context window monitor for usage warnings.
7
+ */
8
+ export interface TokenUsageInfo {
9
+ input?: number;
10
+ output?: number;
11
+ reasoning?: number;
12
+ cache?: {
13
+ read?: number;
14
+ write?: number;
15
+ };
16
+ }
17
+ export interface RunUsageSnapshot {
18
+ runId: string;
19
+ totalTokens: number;
20
+ inputTokens: number;
21
+ outputTokens: number;
22
+ reasoningTokens: number;
23
+ cacheReadTokens: number;
24
+ cacheWriteTokens: number;
25
+ messageCount: number;
26
+ }
27
+ export declare const DEFAULT_INPUT_PRICE_PER_1M_TOKENS = 3;
28
+ export declare const DEFAULT_OUTPUT_PRICE_PER_1M_TOKENS = 15;
29
+ /** Coefficients for token estimation when real usage is not yet available. */
30
+ export declare const ESTIMATION_COEFFICIENTS: {
31
+ readonly prose: 4;
32
+ readonly code: 3.5;
33
+ readonly json: 3.5;
34
+ };
35
+ export type TokenContentKind = keyof typeof ESTIMATION_COEFFICIENTS;
36
+ /** Record token usage from a single message.updated-like event. */
37
+ export declare function recordMessageUsage(runId: string, usage: TokenUsageInfo): void;
38
+ /** Return the accumulated usage for a run, or zeros if none recorded. */
39
+ export declare function getRunUsage(runId: string): RunUsageSnapshot;
40
+ /** Estimate cumulative cost in USD for a run. */
41
+ export declare function estimateCostUSD(runId: string): number;
42
+ /** Check whether a run's estimated cost exceeds a maximum budget. */
43
+ export declare function isOverBudget(runId: string, maxCost: number): boolean;
44
+ /**
45
+ * Estimate token count from text length when real token usage is unavailable.
46
+ *
47
+ * Coefficients:
48
+ * - prose: ~4 characters per token
49
+ * - code / json: ~3.5 characters per token
50
+ */
51
+ export declare function estimateTokens(text: string, kind?: TokenContentKind): number;
52
+ /** Clear all recorded usage (intended for tests). */
53
+ export declare function resetTokenMetrics(): void;
54
+ //# sourceMappingURL=token-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-metrics.d.ts","sourceRoot":"","sources":["../../src/services/token-metrics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;CACrB;AAID,eAAO,MAAM,iCAAiC,IAAI,CAAA;AAClD,eAAO,MAAM,kCAAkC,KAAK,CAAA;AAEpD,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAA;AAEV,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,uBAAuB,CAAA;AAqCnE,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAW7E;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAiB3D;AAED,iDAAiD;AACjD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,gBAA0B,GAAG,MAAM,CAIrF;AAED,qDAAqD;AACrD,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Verification Layer
3
+ *
4
+ * Thin wrapper over command-validator, completion-validator, and
5
+ * agent-validator. Called by the harness controller after model outputs
6
+ * and before marking phases complete.
7
+ */
8
+ import { type FullAuditResult } from "./command-validator";
9
+ import { type CompletionReadiness } from "../lib/completion-validator";
10
+ import { type ValidationResult } from "./agent-validator";
11
+ import type { RunContext } from "./harness-types";
12
+ import type { PlanningState } from "../tools/planning-state-lib";
13
+ export interface VerificationLayer {
14
+ /** Validate that a command reference in model output is registered. */
15
+ validateCommandRefs(text: string): FullAuditResult;
16
+ /** Validate completion readiness before allowing /fd-done. */
17
+ validateCompletion(state: PlanningState): CompletionReadiness;
18
+ /** Validate that an agent's output conforms to its contract fields. */
19
+ validateAgentOutput(agent: string, output: Record<string, unknown>): ValidationResult;
20
+ /** Record a verified outcome (test passed, review approved, etc.) to the run trace. */
21
+ recordVerification(ctx: RunContext, kind: string, evidence: string): void;
22
+ }
23
+ export declare function createVerificationLayer(directory: string): VerificationLayer;
24
+ //# sourceMappingURL=verification-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-layer.d.ts","sourceRoot":"","sources":["../../src/services/verification-layer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAEhE,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAA;IAClD,8DAA8D;IAC9D,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB,CAAA;IAC7D,uEAAuE;IACvE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAAA;IACrF,uFAAuF;IACvF,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1E;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,CAkB5E"}
@@ -4,6 +4,7 @@
4
4
  * Scores across 10 dimensions; stored in .codebase/SCORECARDS.jsonl for trend analysis.
5
5
  */
6
6
  import type { RunTrace } from "./run-trace";
7
+ import type { AuditEntry } from "./harness-types";
7
8
  export interface ScorecardDimensions {
8
9
  /** Agents followed phase order and didn't skip required stages */
9
10
  stageCompliance: number;
@@ -31,6 +32,8 @@ export interface ScorecardDimensions {
31
32
  * Defaults to 1.0 when the supervisor is disabled or no reviews occurred.
32
33
  */
33
34
  supervisorCompliance: number;
35
+ /** Overall governance adherence derived from audit entries */
36
+ governanceCompliance: number;
34
37
  }
35
38
  export interface WorkflowScorecard {
36
39
  scorecard_id: string;
@@ -75,6 +78,8 @@ export interface ScorecardInput {
75
78
  * Computed automatically from telemetry when omitted.
76
79
  */
77
80
  supervisor_hard_stops?: number;
81
+ /** Audit entries for this run, used to score governance compliance. */
82
+ audit_entries?: AuditEntry[];
78
83
  }
79
84
  export declare function scorecardsPath(dir: string): string;
80
85
  /**
@@ -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;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"}
1
+ {"version":3,"file":"workflow-scorecard.d.ts","sourceRoot":"","sources":["../../src/services/workflow-scorecard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"council.d.ts","sourceRoot":"","sources":["../../src/tools/council.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAkDtD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAgHxE"}
1
+ {"version":3,"file":"council.d.ts","sourceRoot":"","sources":["../../src/tools/council.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AA+BtD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CA8FxE"}
@@ -11,6 +11,10 @@ export interface DecisionEntry {
11
11
  alternatives_considered: string[];
12
12
  risk_level: "low" | "medium" | "high";
13
13
  agent?: string;
14
+ /** Policy reason that authorized or denied the change, when available. */
15
+ policy_reason?: string;
16
+ /** Audit entry id correlating this decision to the audit log. */
17
+ audit_entry_id?: string;
14
18
  }
15
19
  export declare const decisionTraceTool: ToolDefinition;
16
20
  //# sourceMappingURL=decision-trace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decision-trace.d.ts","sourceRoot":"","sources":["../../src/tools/decision-trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAO/D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;IACtD,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,uBAAuB,EAAE,MAAM,EAAE,CAAA;IACjC,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAgBD,eAAO,MAAM,iBAAiB,EAAE,cA4D9B,CAAA"}
1
+ {"version":3,"file":"decision-trace.d.ts","sourceRoot":"","sources":["../../src/tools/decision-trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAO/D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;IACtD,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,uBAAuB,EAAE,MAAM,EAAE,CAAA;IACjC,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAgBD,eAAO,MAAM,iBAAiB,EAAE,cA4D9B,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Delegate Tool
3
+ *
4
+ * Runtime delegation primitive for the orchestrator. Replaces raw @agent
5
+ * references with an explicit tool call that:
6
+ * - enforces delegation-budget.maxDepth
7
+ * - tracks parent-child spans in the agent trace graph
8
+ * - returns a structured DelegateResult
9
+ */
10
+ import { type ToolDefinition } from "@opencode-ai/plugin";
11
+ import type { OpencodeClient } from "@opencode-ai/sdk";
12
+ import type { StatePersistenceService } from "../services/state-persistence";
13
+ import type { DelegateResult, DelegateToolArgs } from "../services/harness-types";
14
+ export type { DelegateResult, DelegateToolArgs };
15
+ export declare function createDelegateTool(client: OpencodeClient, statePersistence: StatePersistenceService): ToolDefinition;
16
+ //# sourceMappingURL=delegate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../src/tools/delegate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,kBAAkB,CAAA;AAGtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAc,MAAM,2BAA2B,CAAA;AAK7F,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAA;AA6ChD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EACtB,gBAAgB,EAAE,uBAAuB,GACxC,cAAc,CAsPhB"}
@@ -15,5 +15,13 @@ export interface FailureStore {
15
15
  last_updated: string;
16
16
  entries: FailureEntry[];
17
17
  }
18
+ export interface FailureFilter {
19
+ type?: FailureEntry["type"];
20
+ path_prefix?: string;
21
+ tag?: string;
22
+ limit?: number;
23
+ }
24
+ export declare function queryFailures(directory: string, filter?: FailureFilter): FailureEntry[];
25
+ export declare function listFailures(directory: string, limit?: number): FailureEntry[];
18
26
  export declare const failureReplayTool: ToolDefinition;
19
27
  //# sourceMappingURL=failure-replay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"failure-replay.d.ts","sourceRoot":"","sources":["../../src/tools/failure-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAO/D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,YAAY,GAAG,SAAS,GAAG,eAAe,CAAA;IAC1F,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,YAAY,EAAE,CAAA;CACxB;AAuBD,eAAO,MAAM,iBAAiB,EAAE,cA0E9B,CAAA"}
1
+ {"version":3,"file":"failure-replay.d.ts","sourceRoot":"","sources":["../../src/tools/failure-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAO/D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,YAAY,GAAG,SAAS,GAAG,eAAe,CAAA;IAC1F,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,YAAY,EAAE,CAAA;CACxB;AAuBD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,aAAkB,GAAG,YAAY,EAAE,CAW3F;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,YAAY,EAAE,CAK1E;AAED,eAAO,MAAM,iBAAiB,EAAE,cA0E9B,CAAA"}
@@ -15,5 +15,6 @@ export interface PolicyStore {
15
15
  last_updated: string;
16
16
  policies: Policy[];
17
17
  }
18
+ export declare function readStore(directory: string): PolicyStore;
18
19
  export declare const policyEngineTool: ToolDefinition;
19
20
  //# sourceMappingURL=policy-engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy-engine.d.ts","sourceRoot":"","sources":["../../src/tools/policy-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAO/D,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAuBD,eAAO,MAAM,gBAAgB,EAAE,cAyE7B,CAAA"}
1
+ {"version":3,"file":"policy-engine.d.ts","sourceRoot":"","sources":["../../src/tools/policy-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAO/D,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAMD,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAQxD;AASD,eAAO,MAAM,gBAAgB,EAAE,cAyE7B,CAAA"}