@hover-dev/core 0.17.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/engine.d.ts +16 -39
  2. package/dist/engine.d.ts.map +1 -1
  3. package/dist/engine.js +18 -67
  4. package/dist/specs/pageObjectManifest.d.ts.map +1 -1
  5. package/dist/specs/pageObjectManifest.js +11 -10
  6. package/dist/specs/replayGrounded.d.ts.map +1 -1
  7. package/dist/specs/writeApiSpec.d.ts +36 -0
  8. package/dist/specs/writeApiSpec.d.ts.map +1 -0
  9. package/dist/specs/writeApiSpec.js +94 -0
  10. package/package.json +5 -22
  11. package/dist/agents/argv.d.ts +0 -11
  12. package/dist/agents/argv.d.ts.map +0 -1
  13. package/dist/agents/argv.js +0 -23
  14. package/dist/agents/claude.d.ts +0 -3
  15. package/dist/agents/claude.d.ts.map +0 -1
  16. package/dist/agents/claude.js +0 -220
  17. package/dist/agents/codex.d.ts +0 -19
  18. package/dist/agents/codex.d.ts.map +0 -1
  19. package/dist/agents/codex.js +0 -231
  20. package/dist/agents/detect.d.ts +0 -46
  21. package/dist/agents/detect.d.ts.map +0 -1
  22. package/dist/agents/detect.js +0 -80
  23. package/dist/agents/gemini.d.ts +0 -17
  24. package/dist/agents/gemini.d.ts.map +0 -1
  25. package/dist/agents/gemini.js +0 -186
  26. package/dist/agents/index.d.ts +0 -6
  27. package/dist/agents/index.d.ts.map +0 -1
  28. package/dist/agents/index.js +0 -5
  29. package/dist/agents/invoke.d.ts +0 -12
  30. package/dist/agents/invoke.d.ts.map +0 -1
  31. package/dist/agents/invoke.js +0 -93
  32. package/dist/agents/qwen.d.ts +0 -17
  33. package/dist/agents/qwen.d.ts.map +0 -1
  34. package/dist/agents/qwen.js +0 -172
  35. package/dist/agents/registry.d.ts +0 -19
  36. package/dist/agents/registry.d.ts.map +0 -1
  37. package/dist/agents/registry.js +0 -30
  38. package/dist/agents/shared.d.ts +0 -28
  39. package/dist/agents/shared.d.ts.map +0 -1
  40. package/dist/agents/shared.js +0 -35
  41. package/dist/agents/types.d.ts +0 -194
  42. package/dist/agents/types.d.ts.map +0 -1
  43. package/dist/agents/types.js +0 -23
  44. package/dist/index.d.ts +0 -3
  45. package/dist/index.d.ts.map +0 -1
  46. package/dist/index.js +0 -2
  47. package/dist/mcp/actuateServer.d.ts +0 -3
  48. package/dist/mcp/actuateServer.d.ts.map +0 -1
  49. package/dist/mcp/actuateServer.js +0 -594
  50. package/dist/mcp/sourceFence.d.ts +0 -23
  51. package/dist/mcp/sourceFence.d.ts.map +0 -1
  52. package/dist/mcp/sourceFence.js +0 -79
  53. package/dist/mcp/sourceServer.d.ts +0 -3
  54. package/dist/mcp/sourceServer.d.ts.map +0 -1
  55. package/dist/mcp/sourceServer.js +0 -191
  56. package/dist/modes.d.ts +0 -39
  57. package/dist/modes.d.ts.map +0 -1
  58. package/dist/modes.js +0 -34
  59. package/dist/playwright/cdpStatus.d.ts +0 -14
  60. package/dist/playwright/cdpStatus.d.ts.map +0 -1
  61. package/dist/playwright/cdpStatus.js +0 -52
  62. package/dist/playwright/preflight.d.ts +0 -31
  63. package/dist/playwright/preflight.d.ts.map +0 -1
  64. package/dist/playwright/preflight.js +0 -82
  65. package/dist/playwright/preflightCache.d.ts +0 -27
  66. package/dist/playwright/preflightCache.d.ts.map +0 -1
  67. package/dist/playwright/preflightCache.js +0 -21
  68. package/dist/playwright/resolveMcpConfig.d.ts +0 -61
  69. package/dist/playwright/resolveMcpConfig.d.ts.map +0 -1
  70. package/dist/playwright/resolveMcpConfig.js +0 -84
  71. package/dist/plugin-api.d.ts +0 -237
  72. package/dist/plugin-api.d.ts.map +0 -1
  73. package/dist/plugin-api.js +0 -52
  74. package/dist/qa/classify.d.ts +0 -38
  75. package/dist/qa/classify.d.ts.map +0 -1
  76. package/dist/qa/classify.js +0 -138
  77. package/dist/runSession.d.ts +0 -53
  78. package/dist/runSession.d.ts.map +0 -1
  79. package/dist/runSession.js +0 -96
  80. package/dist/service/cdpHandlers.d.ts +0 -24
  81. package/dist/service/cdpHandlers.d.ts.map +0 -1
  82. package/dist/service/cdpHandlers.js +0 -50
  83. package/dist/service/cdpHint.d.ts +0 -41
  84. package/dist/service/cdpHint.d.ts.map +0 -1
  85. package/dist/service/cdpHint.js +0 -158
  86. package/dist/service/conventions.d.ts +0 -8
  87. package/dist/service/conventions.d.ts.map +0 -1
  88. package/dist/service/conventions.js +0 -42
  89. package/dist/service/relayHandlers.d.ts +0 -28
  90. package/dist/service/relayHandlers.d.ts.map +0 -1
  91. package/dist/service/relayHandlers.js +0 -105
  92. package/dist/service/saveHandlers.d.ts +0 -50
  93. package/dist/service/saveHandlers.d.ts.map +0 -1
  94. package/dist/service/saveHandlers.js +0 -77
  95. package/dist/service/types.d.ts +0 -158
  96. package/dist/service/types.d.ts.map +0 -1
  97. package/dist/service/types.js +0 -26
  98. package/dist/service.d.ts +0 -54
  99. package/dist/service.d.ts.map +0 -1
  100. package/dist/service.js +0 -1772
  101. package/dist/specs/businessMap.d.ts +0 -29
  102. package/dist/specs/businessMap.d.ts.map +0 -1
  103. package/dist/specs/businessMap.js +0 -95
  104. package/dist/specs/extractPageObjects.d.ts +0 -18
  105. package/dist/specs/extractPageObjects.d.ts.map +0 -1
  106. package/dist/specs/extractPageObjects.js +0 -98
  107. package/dist/specs/optimizeSpecWithAgent.d.ts +0 -9
  108. package/dist/specs/optimizeSpecWithAgent.d.ts.map +0 -1
  109. package/dist/specs/optimizeSpecWithAgent.js +0 -39
@@ -1,194 +0,0 @@
1
- /**
2
- * Local CLI Agent First — agent abstraction layer.
3
- *
4
- * Hover does not bundle any AI runtime. It spawns whatever coding-agent CLI the
5
- * user has on PATH (`claude`, `codex`, `cursor`, `aider`, ...) and treats it as
6
- * a strategy implementation behind this interface.
7
- *
8
- * To add a new agent: write an AgentDescriptor and register it in registry.ts.
9
- */
10
- export type AgentProtocol = 'argv' | 'stdin' | 'acp' | 'pi-rpc';
11
- export type StreamFormat = 'stream-json' | 'sse' | 'plain-text' | 'json-lines';
12
- export declare class UnsupportedAgentProtocolError extends Error {
13
- constructor(message: string);
14
- }
15
- export declare class AgentNotInstalledError extends Error {
16
- readonly agentId: string;
17
- constructor(agentId: string);
18
- }
19
- export interface InvokeOptions {
20
- agentId: string;
21
- prompt: string;
22
- mcpConfig?: string;
23
- allowedTools?: string[];
24
- disallowedTools?: string[];
25
- maxBudgetUsd?: number;
26
- /** Hard ceiling on agent turns (~steps) — claude `--max-turns`. Used by QA
27
- * intensity to bound an exploratory run by step count. */
28
- maxTurns?: number;
29
- model?: string;
30
- /** Reasoning-effort level for the run. claude → `--effort <level>` (low /
31
- * medium / high / xhigh / max); codex → `-c model_reasoning_effort=<level>`
32
- * (minimal / low / medium / high / xhigh). The caller is responsible for
33
- * passing a level the chosen model actually supports. */
34
- effort?: string;
35
- cwd?: string;
36
- sessionId?: string;
37
- /** Extra text appended to the agent's system prompt (claude: via
38
- * --append-system-prompt). Used to inject session-specific context like
39
- * "the user's current Chrome tab is already on http://localhost:5173/,
40
- * don't browser_navigate there". */
41
- appendSystemPrompt?: string;
42
- /** Extra environment variables for the spawned CLI (merged over process.env).
43
- * Used for the "Local LLM" path: qwen-code reads OPENAI_BASE_URL /
44
- * OPENAI_API_KEY to target a user's self-hosted OpenAI-compatible endpoint. */
45
- env?: Record<string, string>;
46
- /** Aborts the spawned child if signaled. Used to stop an orphan run when
47
- * the WebSocket caller disconnects (e.g. user reloads the dev page). */
48
- signal?: AbortSignal;
49
- }
50
- /**
51
- * Normalized event emitted by every agent, regardless of its native wire format.
52
- * Each agent's `parseEvent` translates its own stream into these.
53
- */
54
- export type InvokeEvent = {
55
- kind: 'session_start';
56
- sessionId: string;
57
- model?: string;
58
- } | {
59
- kind: 'mcp_status';
60
- server: string;
61
- status: string;
62
- } | {
63
- kind: 'tool_use';
64
- tool: string;
65
- input: unknown;
66
- costUsdSnapshot?: number;
67
- tokensSnapshot?: number;
68
- } | {
69
- kind: 'tool_result';
70
- isError?: boolean;
71
- preview?: string;
72
- } | {
73
- kind: 'text';
74
- text: string;
75
- }
76
- /** Running cost / turn-count update emitted mid-session so the widget can
77
- * show a live $ counter without waiting for session_end. Claude Code's
78
- * stream-json includes `total_cost_usd` on intermediate result-ish events;
79
- * agents that don't surface running cost simply never emit this. */
80
- | {
81
- kind: 'usage';
82
- costUsd?: number;
83
- turns?: number;
84
- tokens?: number;
85
- }
86
- /** End-of-session event. Three terminal states the widget renders distinctly:
87
- *
88
- * - normal completion: `isError: false`, no `cancelled` flag
89
- * - agent / runtime failure: `isError: true`, no `cancelled` flag
90
- * - user-initiated stop: `cancelled: true` (and we leave `isError: false`
91
- * so downstream "did the agent fail?" predicates don't conflate
92
- * "user pressed Stop" with "agent crashed mid-run"). The widget
93
- * renders this as a neutral "Stopped" state, not a red Failed card.
94
- */
95
- | {
96
- kind: 'session_end';
97
- turns?: number;
98
- costUsd?: number;
99
- tokens?: number;
100
- isError?: boolean;
101
- cancelled?: boolean;
102
- summary?: string;
103
- } | {
104
- kind: 'raw';
105
- line: string;
106
- };
107
- /**
108
- * How tightly the agent's tool surface can be locked down per invocation.
109
- *
110
- * 'hard' — the agent CLI accepts a deny-list / allow-list that effectively
111
- * removes built-in tools (shell, file edit, etc.) so the only
112
- * callable surface is whatever MCP servers we configure. Claude
113
- * Code's `--strict-mcp-config` + `--allowedTools mcp__playwright`
114
- * + `--disallowedTools <every built-in>` is the canonical example.
115
- *
116
- * 'soft' — the agent CLI does not expose a way to disable its built-in
117
- * tools (shell, fs). We can constrain side-effects via OS-level
118
- * sandbox flags (e.g. codex's `--sandbox read-only`) and we lean
119
- * on a strict `developer_instructions` system-prompt to nudge the
120
- * agent toward MCP-only behavior, but a determined / hallucinating
121
- * agent COULD still try a built-in shell call. The widget should
122
- * mark this agent with a warning indicator.
123
- */
124
- export type SandboxStrength = 'hard' | 'soft';
125
- /**
126
- * Human-facing metadata for the widget's agent picker. None of these affect
127
- * agent invocation — they only shape how the agent is presented in the UI.
128
- */
129
- export interface AgentDisplay {
130
- /** Pretty name for the dropdown ("Claude Code", "OpenAI Codex"). */
131
- label: string;
132
- /** One-line tagline shown under the label. */
133
- tagline?: string;
134
- /** Vendor / source URL — clicking the agent name in the widget can open
135
- * this in a new tab when the agent isn't installed. */
136
- homepage?: string;
137
- /** Shell command the user can run to install (copy-paste from a tooltip
138
- * in the widget when the agent is listed but not on PATH). */
139
- installHint?: string;
140
- }
141
- /**
142
- * Per-invocation parser state. A fresh object is created by `invokeAgent`
143
- * for each spawn and passed to both `parseEvent` and `onStreamEnd`.
144
- *
145
- * Descriptors that need to accumulate state across lines (cost, turn count,
146
- * last agent message for synthesized session_end, etc.) read and write
147
- * their own keys on this object. There is no shared shape — each agent
148
- * uses whatever fields it needs.
149
- *
150
- * Why: module-level state in claude.ts / codex.ts worked only because the
151
- * service enforces one in-flight invocation per Node process. Two concurrent
152
- * agent runs (future: tests in parallel, in-process workers) would silently
153
- * smear their cost accumulators together. Threading the state object per
154
- * invocation removes that hazard at zero runtime cost.
155
- */
156
- export type ParserState = Record<string, unknown>;
157
- export interface AgentDescriptor {
158
- id: string;
159
- binName: string;
160
- protocol: AgentProtocol;
161
- streamFormat: StreamFormat;
162
- sandboxStrength: SandboxStrength;
163
- display: AgentDisplay;
164
- /** Hard-sandbox agents pass this list to `disallowedTools` when the
165
- * service-level allow/deny config isn't explicitly overridden. Lets the
166
- * per-CLI deny list live alongside its descriptor instead of as a magic
167
- * array in the service. Soft-sandbox agents leave this undefined. */
168
- defaultDisallowedTools?: readonly string[];
169
- /** A cheap/fast model id for non-interactive refinement work (the F7 optimize
170
- * pass) where the big model isn't worth the cost. Used when the user hasn't
171
- * set `hover.optimizeModel`; undefined → fall back to the session model. */
172
- cheapModel?: string;
173
- buildArgs(opts: InvokeOptions): string[];
174
- /**
175
- * Parse a single line of agent stdout into normalised InvokeEvents.
176
- * `state` is a per-invocation scratch pad (see ParserState). Optional
177
- * for callers that don't accumulate across lines (and for unit tests
178
- * that don't care about cost / turn carry-over) — descriptors that
179
- * DO accumulate must check / initialise the state object themselves.
180
- */
181
- parseEvent(line: string, state?: ParserState): InvokeEvent[];
182
- /**
183
- * Optional. Called once after the agent's stream closes, with the child's
184
- * exit code (or null if it was aborted). Lets agents whose protocol does
185
- * NOT emit an explicit session-terminating event synthesize one from
186
- * accumulated parser state. Returns `null` if the agent's own `parseEvent`
187
- * already emitted a `session_end` and nothing further is needed.
188
- *
189
- * Used by codex.ts (no native session_end). Claude does not implement
190
- * this — `result` events terminate naturally.
191
- */
192
- onStreamEnd?(exitCode: number | null, state?: ParserState): InvokeEvent | null;
193
- }
194
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Local CLI Agent First — agent abstraction layer.
3
- *
4
- * Hover does not bundle any AI runtime. It spawns whatever coding-agent CLI the
5
- * user has on PATH (`claude`, `codex`, `cursor`, `aider`, ...) and treats it as
6
- * a strategy implementation behind this interface.
7
- *
8
- * To add a new agent: write an AgentDescriptor and register it in registry.ts.
9
- */
10
- export class UnsupportedAgentProtocolError extends Error {
11
- constructor(message) {
12
- super(message);
13
- this.name = 'UnsupportedAgentProtocolError';
14
- }
15
- }
16
- export class AgentNotInstalledError extends Error {
17
- agentId;
18
- constructor(agentId) {
19
- super(`Agent "${agentId}" is not installed (binary not found on PATH).`);
20
- this.agentId = agentId;
21
- this.name = 'AgentNotInstalledError';
22
- }
23
- }
package/dist/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './agents/index.js';
2
- export { connectAndListTabs } from './playwright/preflight.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/index.js DELETED
@@ -1,2 +0,0 @@
1
- export * from './agents/index.js';
2
- export { connectAndListTabs } from './playwright/preflight.js';
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=actuateServer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"actuateServer.d.ts","sourceRoot":"","sources":["../../src/mcp/actuateServer.ts"],"names":[],"mappings":""}