@conciv/protocol 0.0.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.
- package/LICENSE +21 -0
- package/README.md +5 -0
- package/dist/bundler-types.d.ts +37 -0
- package/dist/bundler-types.d.ts.map +1 -0
- package/dist/bundler-types.js +9 -0
- package/dist/bundler-types.js.map +1 -0
- package/dist/chat-types.d.ts +250 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +127 -0
- package/dist/chat-types.js.map +1 -0
- package/dist/config-types.d.ts +44 -0
- package/dist/config-types.d.ts.map +1 -0
- package/dist/config-types.js +8 -0
- package/dist/config-types.js.map +1 -0
- package/dist/done-types.d.ts +14 -0
- package/dist/done-types.d.ts.map +1 -0
- package/dist/done-types.js +13 -0
- package/dist/done-types.js.map +1 -0
- package/dist/editor-types.d.ts +11 -0
- package/dist/editor-types.d.ts.map +1 -0
- package/dist/editor-types.js +10 -0
- package/dist/editor-types.js.map +1 -0
- package/dist/harness-types.d.ts +138 -0
- package/dist/harness-types.d.ts.map +1 -0
- package/dist/harness-types.js +8 -0
- package/dist/harness-types.js.map +1 -0
- package/dist/page-introspect-types.d.ts +55 -0
- package/dist/page-introspect-types.d.ts.map +1 -0
- package/dist/page-introspect-types.js +1 -0
- package/dist/page-types.d.ts +222 -0
- package/dist/page-types.d.ts.map +1 -0
- package/dist/page-types.js +163 -0
- package/dist/page-types.js.map +1 -0
- package/dist/tool-timing.d.ts +14 -0
- package/dist/tool-timing.d.ts.map +1 -0
- package/dist/tool-timing.js +22 -0
- package/dist/tool-timing.js.map +1 -0
- package/dist/tool-view-types.d.ts +13794 -0
- package/dist/tool-view-types.d.ts.map +1 -0
- package/dist/tool-view-types.js +1 -0
- package/dist/ui-types.d.ts +118 -0
- package/dist/ui-types.d.ts.map +1 -0
- package/dist/ui-types.js +136 -0
- package/dist/ui-types.js.map +1 -0
- package/dist/usage-types.d.ts +24 -0
- package/dist/usage-types.d.ts.map +1 -0
- package/dist/usage-types.js +68 -0
- package/dist/usage-types.js.map +1 -0
- package/package.json +96 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { UsageSnapshot } from "./usage-types.js";
|
|
2
|
+
import { StreamChunk, UIMessage } from "@tanstack/ai";
|
|
3
|
+
import { Readable, Writable } from "node:stream";
|
|
4
|
+
|
|
5
|
+
//#region src/harness-types.d.ts
|
|
6
|
+
type HarnessCapabilities = {
|
|
7
|
+
resume: boolean;
|
|
8
|
+
permissionGate: 'hook' | 'callback' | 'none';
|
|
9
|
+
transcriptHistory: boolean;
|
|
10
|
+
compaction: boolean;
|
|
11
|
+
systemPrompt: 'file' | 'flag' | 'none';
|
|
12
|
+
mcp: 'http' | 'stdio' | 'none';
|
|
13
|
+
imageInput: 'native' | 'fileRef' | false;
|
|
14
|
+
};
|
|
15
|
+
type HarnessImage = {
|
|
16
|
+
mediaType: string;
|
|
17
|
+
dataBase64: string;
|
|
18
|
+
};
|
|
19
|
+
type HarnessModel = {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
group?: string;
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
};
|
|
26
|
+
type HarnessModels = HarnessModel[] | (() => HarnessModel[] | Promise<HarnessModel[]>);
|
|
27
|
+
type HarnessTurn = {
|
|
28
|
+
prompt: string;
|
|
29
|
+
cwd: string;
|
|
30
|
+
resumeSessionId: string | null;
|
|
31
|
+
systemPrompt: string;
|
|
32
|
+
permissionUrl?: string;
|
|
33
|
+
mcpUrl?: string;
|
|
34
|
+
sessionId?: string;
|
|
35
|
+
images?: HarnessImage[];
|
|
36
|
+
model?: string;
|
|
37
|
+
kind?: 'chat' | 'compact';
|
|
38
|
+
};
|
|
39
|
+
type HarnessChild = {
|
|
40
|
+
pid: number;
|
|
41
|
+
stdout: Readable;
|
|
42
|
+
stderr: Readable;
|
|
43
|
+
stdin?: Writable;
|
|
44
|
+
kill(): void;
|
|
45
|
+
};
|
|
46
|
+
type HarnessLaunchResult = {
|
|
47
|
+
opened: boolean;
|
|
48
|
+
command: string;
|
|
49
|
+
};
|
|
50
|
+
type HarnessLaunchContext = {
|
|
51
|
+
cwd: string;
|
|
52
|
+
sessionId: string | null;
|
|
53
|
+
model: string | null;
|
|
54
|
+
mcpUrl: string | null;
|
|
55
|
+
openTerminal(argv: string[]): Promise<HarnessLaunchResult>;
|
|
56
|
+
openUrl(url: string): Promise<HarnessLaunchResult>;
|
|
57
|
+
};
|
|
58
|
+
type HarnessLaunch = (ctx: HarnessLaunchContext) => HarnessLaunchResult | Promise<HarnessLaunchResult>;
|
|
59
|
+
type HarnessArgsBuilder = (turn: HarnessTurn) => string[];
|
|
60
|
+
type HarnessRunContext = {
|
|
61
|
+
sessionId: string;
|
|
62
|
+
env: Record<string, string | undefined>;
|
|
63
|
+
onSessionId(id: string): void;
|
|
64
|
+
onUsage?(usage: UsageSnapshot): void;
|
|
65
|
+
signal: AbortSignal;
|
|
66
|
+
decide(toolName: string, input: unknown, toolUseId: string): Promise<'allow' | 'deny'>;
|
|
67
|
+
runId?: string;
|
|
68
|
+
threadId?: string;
|
|
69
|
+
logger?: HarnessDecodeLogger;
|
|
70
|
+
};
|
|
71
|
+
type HarnessRun = (turn: HarnessTurn, ctx: HarnessRunContext) => AsyncGenerator<StreamChunk>;
|
|
72
|
+
type HarnessDeliverInput = (child: HarnessChild, turn: HarnessTurn) => void | Promise<void>;
|
|
73
|
+
type HarnessDecodeLogger = {
|
|
74
|
+
provider(msg: string, meta?: unknown): void;
|
|
75
|
+
};
|
|
76
|
+
type HarnessDecodeOpts = {
|
|
77
|
+
onSessionId(id: string): void;
|
|
78
|
+
onUsage?(usage: UsageSnapshot): void;
|
|
79
|
+
runId?: string;
|
|
80
|
+
threadId?: string;
|
|
81
|
+
logger?: HarnessDecodeLogger;
|
|
82
|
+
};
|
|
83
|
+
type HarnessDecoder = (lines: AsyncIterable<string>, opts: HarnessDecodeOpts) => AsyncGenerator<StreamChunk>;
|
|
84
|
+
type HarnessSessionMeta = {
|
|
85
|
+
id: string;
|
|
86
|
+
derivedTitle: string;
|
|
87
|
+
updatedAt: number;
|
|
88
|
+
messageCount: number;
|
|
89
|
+
model?: string | null;
|
|
90
|
+
totalTokens?: number;
|
|
91
|
+
lastMessage?: string | null;
|
|
92
|
+
createdAt?: number;
|
|
93
|
+
};
|
|
94
|
+
type HarnessHistory = {
|
|
95
|
+
transcriptPath(cwd: string, sessionId: string): string;
|
|
96
|
+
parse(raw: string): UIMessage[];
|
|
97
|
+
nameFromTranscript?(raw: string): string | null;
|
|
98
|
+
list?(cwd: string, home?: string): HarnessSessionMeta[] | Promise<HarnessSessionMeta[]>;
|
|
99
|
+
};
|
|
100
|
+
type HarnessAdapterBase = {
|
|
101
|
+
id: string;
|
|
102
|
+
binName: string;
|
|
103
|
+
displayName?: string;
|
|
104
|
+
launch?: HarnessLaunch;
|
|
105
|
+
buildArgs: HarnessArgsBuilder;
|
|
106
|
+
buildCompactArgs?: HarnessArgsBuilder;
|
|
107
|
+
decode: HarnessDecoder;
|
|
108
|
+
deliverInput?: HarnessDeliverInput;
|
|
109
|
+
run?: HarnessRun;
|
|
110
|
+
shutdown?: () => void | Promise<void>;
|
|
111
|
+
models?: HarnessModels;
|
|
112
|
+
defaultModel?: string;
|
|
113
|
+
};
|
|
114
|
+
type HarnessAdapter = HarnessAdapterBase & ({
|
|
115
|
+
capabilities: HarnessCapabilities & {
|
|
116
|
+
transcriptHistory: true;
|
|
117
|
+
};
|
|
118
|
+
history: HarnessHistory;
|
|
119
|
+
} | {
|
|
120
|
+
capabilities: HarnessCapabilities & {
|
|
121
|
+
transcriptHistory: false;
|
|
122
|
+
};
|
|
123
|
+
history?: undefined;
|
|
124
|
+
}) & ({
|
|
125
|
+
capabilities: HarnessCapabilities & {
|
|
126
|
+
compaction: true;
|
|
127
|
+
};
|
|
128
|
+
buildCompactArgs: HarnessArgsBuilder;
|
|
129
|
+
} | {
|
|
130
|
+
capabilities: HarnessCapabilities & {
|
|
131
|
+
compaction: false;
|
|
132
|
+
};
|
|
133
|
+
buildCompactArgs?: undefined;
|
|
134
|
+
});
|
|
135
|
+
declare function defineHarness<T extends HarnessAdapter>(adapter: T): T;
|
|
136
|
+
//#endregion
|
|
137
|
+
export { HarnessAdapter, HarnessArgsBuilder, HarnessCapabilities, HarnessChild, HarnessDecodeLogger, HarnessDecodeOpts, HarnessDecoder, HarnessDeliverInput, HarnessHistory, HarnessImage, HarnessLaunch, HarnessLaunchContext, HarnessLaunchResult, HarnessModel, HarnessModels, HarnessRun, HarnessRunContext, HarnessSessionMeta, HarnessTurn, defineHarness };
|
|
138
|
+
//# sourceMappingURL=harness-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-types.d.ts","names":[],"sources":["../src/harness-types.ts"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-types.js","names":[],"sources":["../src/harness-types.ts"],"sourcesContent":["import type {Readable, Writable} from 'node:stream'\nimport type {StreamChunk, UIMessage} from '@tanstack/ai'\nimport type {UsageSnapshot} from './usage-types.js'\n\n// A harness is the underlying coding agent CLI (claude, codex, …). Core resolves a\n// HarnessAdapter and feature-detects by capability, degrading gracefully when one is absent.\n\nexport type HarnessCapabilities = {\n resume: boolean\n permissionGate: 'hook' | 'callback' | 'none'\n transcriptHistory: boolean\n // Native context compaction (the agent rewrites its own context to a summary, freeing the window).\n // true → the adapter must supply `buildCompactArgs` (type-enforced below). false → core falls back\n // to a summarize-prompt turn, which produces a summary but does not free the resumed context.\n compaction: boolean\n systemPrompt: 'file' | 'flag' | 'none'\n mcp: 'http' | 'stdio' | 'none'\n // 'native' → ingests image content blocks (claude: --input-format stream-json on stdin)\n // 'fileRef' → no vision channel; server writes temp files + appends path refs to the prompt\n // false → no image support\n imageInput: 'native' | 'fileRef' | false\n}\n\n// An image content part carried from chat()'s messages to the harness (base64 data source).\nexport type HarnessImage = {mediaType: string; dataBase64: string}\n\n// A model the harness can run. `id` is what the CLI receives (e.g. claude --model <id>); `name`\n// is the display label; `group` buckets the combobox by provider/family.\nexport type HarnessModel = {id: string; name: string; description?: string; group?: string; disabled?: boolean}\n\n// A harness's models: either a static list or a (possibly async) resolver, so an adapter that\n// can enumerate its CLI's models at runtime returns a function instead of a literal array.\nexport type HarnessModels = HarnessModel[] | (() => HarnessModel[] | Promise<HarnessModel[]>)\n\nexport type HarnessTurn = {\n prompt: string\n cwd: string\n resumeSessionId: string | null\n systemPrompt: string\n permissionUrl?: string\n mcpUrl?: string\n // The conciv chat session this turn runs in; rides the MCP config as a header so session-scoped\n // tools (canvas.draw, comments) resolve the same room the widget joined.\n sessionId?: string\n images?: HarnessImage[]\n // The selected model id, forwarded by buildArgs to the CLI's model flag. Absent → CLI default.\n model?: string\n // 'compact' → core wants this turn to compact the resumed context, not chat. The adapter's\n // buildCompactArgs builds it (only reached for compaction-capable harnesses). Default 'chat'.\n kind?: 'chat' | 'compact'\n}\n\nexport type HarnessChild = {pid: number; stdout: Readable; stderr: Readable; stdin?: Writable; kill(): void}\n\n// \"Open in <harness>\": reopen a chat session as the harness's own interactive CLI in a terminal.\n// Core owns the open logic (OS detection, cwd, shell quoting, spawning) and hands it to the harness\n// via the context's open* methods; the harness only builds the interactive argv.\nexport type HarnessLaunchResult = {opened: boolean; command: string}\nexport type HarnessLaunchContext = {\n cwd: string\n sessionId: string | null\n model: string | null // the model the widget currently has selected, mirrored from the chat turn\n mcpUrl: string | null // the conciv MCP-over-HTTP endpoint, for tool parity (null if not http-capable)\n // Run `argv` in an interactive terminal at cwd. Core shell-quotes it, prepends `cd`, spawns the\n // per-OS terminal, and returns {opened, command} — command is the resolved paste-able fallback.\n openTerminal(argv: string[]): Promise<HarnessLaunchResult>\n openUrl(url: string): Promise<HarnessLaunchResult>\n}\nexport type HarnessLaunch = (ctx: HarnessLaunchContext) => HarnessLaunchResult | Promise<HarnessLaunchResult>\n\n// Builds the CLI argv for one turn.\nexport type HarnessArgsBuilder = (turn: HarnessTurn) => string[]\n\n// In-process turn runner (SDK transport): core branches to this in place of buildArgs/spawn/decode.\nexport type HarnessRunContext = {\n sessionId: string\n env: Record<string, string | undefined>\n onSessionId(id: string): void\n onUsage?(usage: UsageSnapshot): void\n signal: AbortSignal\n decide(toolName: string, input: unknown, toolUseId: string): Promise<'allow' | 'deny'>\n runId?: string\n threadId?: string\n logger?: HarnessDecodeLogger\n}\nexport type HarnessRun = (turn: HarnessTurn, ctx: HarnessRunContext) => AsyncGenerator<StreamChunk>\n\n// Optional: write the turn's input to the child after spawn (e.g. claude native images →\n// a stream-json user message on stdin). Harnesses that take everything via argv omit it.\nexport type HarnessDeliverInput = (child: HarnessChild, turn: HarnessTurn) => void | Promise<void>\n\n// Minimal logger shape the adapter threads in (matches @tanstack/ai InternalLogger surface we use).\nexport type HarnessDecodeLogger = {provider(msg: string, meta?: unknown): void}\n\nexport type HarnessDecodeOpts = {\n onSessionId(id: string): void\n // Live usage as the harness learns it mid-turn (claude message_start carries full context at the\n // start of the response). Core injects it onto the stream for the widget's tracker.\n onUsage?(usage: UsageSnapshot): void\n runId?: string\n threadId?: string\n logger?: HarnessDecodeLogger\n}\n\n// Turns the harness's raw stdout lines into the AG-UI StreamChunk stream, surfacing the session id.\nexport type HarnessDecoder = (lines: AsyncIterable<string>, opts: HarnessDecodeOpts) => AsyncGenerator<StreamChunk>\n\n// One enumerated session from a harness's transcript store (for the session selector list). The\n// enrichment fields (gathered when cheap) are joined onto selector rows / persisted onto the record.\nexport type HarnessSessionMeta = {\n id: string\n derivedTitle: string\n updatedAt: number\n messageCount: number\n model?: string | null\n totalTokens?: number\n lastMessage?: string | null\n createdAt?: number\n}\n\n// Where a harness persists a session's transcript, and how to parse it into UIMessages.\nexport type HarnessHistory = {\n transcriptPath(cwd: string, sessionId: string): string\n parse(raw: string): UIMessage[]\n // Optional human-readable session name derived from the transcript (e.g. claude's `summary`\n // record). Harnesses that omit it fall back to a short id in the UI.\n nameFromTranscript?(raw: string): string | null\n // Enumerate the cwd's sessions, newest first, bounded. `home` is injectable for testing. Optional\n // so a transcript adapter without enumeration still typechecks (the selector just stays empty).\n list?(cwd: string, home?: string): HarnessSessionMeta[] | Promise<HarnessSessionMeta[]>\n}\n\ntype HarnessAdapterBase = {\n id: string\n binName: string\n // Human label for \"Open in <displayName>\" and other UI; falls back to id when absent.\n displayName?: string\n // How to reopen a session as this harness's interactive CLI. Absent → \"open in <harness>\" is\n // unavailable (core reports unsupported, the widget hides the button).\n launch?: HarnessLaunch\n buildArgs: HarnessArgsBuilder\n // Builds the argv for a compaction turn. Present iff capabilities.compaction (enforced by the\n // adapter union below), mirroring how transcriptHistory enforces `history`.\n buildCompactArgs?: HarnessArgsBuilder\n decode: HarnessDecoder\n deliverInput?: HarnessDeliverInput\n run?: HarnessRun\n shutdown?: () => void | Promise<void>\n // Models this harness can run + the id to pre-select. Both optional: a harness with no model\n // choice omits them and the widget hides its selector.\n models?: HarnessModels\n defaultModel?: string\n}\n\n// `history` is present iff `capabilities.transcriptHistory` and `buildCompactArgs` iff\n// `capabilities.compaction` — the type enforces both, so there is no runtime check: a\n// transcriptHistory:true adapter without a history (or a compaction:true adapter without\n// buildCompactArgs) is a compile error.\nexport type HarnessAdapter = HarnessAdapterBase &\n (\n | {capabilities: HarnessCapabilities & {transcriptHistory: true}; history: HarnessHistory}\n | {capabilities: HarnessCapabilities & {transcriptHistory: false}; history?: undefined}\n ) &\n (\n | {capabilities: HarnessCapabilities & {compaction: true}; buildCompactArgs: HarnessArgsBuilder}\n | {capabilities: HarnessCapabilities & {compaction: false}; buildCompactArgs?: undefined}\n )\n\nexport function defineHarness<T extends HarnessAdapter>(adapter: T): T {\n return adapter\n}\n"],"mappings":";AAwKA,SAAgB,cAAwC,SAAe;CACrE,OAAO;AACT"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
//#region src/page-introspect-types.d.ts
|
|
2
|
+
type RawFrame = {
|
|
3
|
+
fileName?: string;
|
|
4
|
+
line?: number;
|
|
5
|
+
column?: number;
|
|
6
|
+
fn?: string;
|
|
7
|
+
};
|
|
8
|
+
type SourceLoc = {
|
|
9
|
+
file: string;
|
|
10
|
+
line: number;
|
|
11
|
+
column: number;
|
|
12
|
+
};
|
|
13
|
+
type Owner = {
|
|
14
|
+
component: string;
|
|
15
|
+
ref: string;
|
|
16
|
+
};
|
|
17
|
+
type LocateResult = {
|
|
18
|
+
component: string | null;
|
|
19
|
+
stack: string[];
|
|
20
|
+
frames: RawFrame[];
|
|
21
|
+
owners: Owner[];
|
|
22
|
+
source?: SourceLoc;
|
|
23
|
+
};
|
|
24
|
+
type TreeNode = {
|
|
25
|
+
component: string;
|
|
26
|
+
ref: string;
|
|
27
|
+
children: TreeNode[];
|
|
28
|
+
truncated?: number;
|
|
29
|
+
};
|
|
30
|
+
type HookNode = {
|
|
31
|
+
id: number;
|
|
32
|
+
name: string;
|
|
33
|
+
value: unknown;
|
|
34
|
+
editable: boolean;
|
|
35
|
+
};
|
|
36
|
+
type Rect = {
|
|
37
|
+
x: number;
|
|
38
|
+
y: number;
|
|
39
|
+
w: number;
|
|
40
|
+
h: number;
|
|
41
|
+
};
|
|
42
|
+
type InspectResult = {
|
|
43
|
+
component: string | null;
|
|
44
|
+
props: unknown;
|
|
45
|
+
state: unknown;
|
|
46
|
+
hooks: HookNode[];
|
|
47
|
+
rect: Rect | null;
|
|
48
|
+
};
|
|
49
|
+
type TreeResult = {
|
|
50
|
+
nodes: TreeNode[];
|
|
51
|
+
truncated: number;
|
|
52
|
+
};
|
|
53
|
+
//#endregion
|
|
54
|
+
export { HookNode, InspectResult, LocateResult, Owner, RawFrame, Rect, SourceLoc, TreeNode, TreeResult };
|
|
55
|
+
//# sourceMappingURL=page-introspect-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-introspect-types.d.ts","names":[],"sources":["../src/page-introspect-types.ts"],"mappings":";KACY,QAAA;EAAY,QAAA;EAAmB,IAAA;EAAe,MAAA;EAAiB,EAAA;AAAA;AAAA,KAC/D,SAAA;EAAa,IAAA;EAAc,IAAA;EAAc,MAAA;AAAA;AAAA,KACzC,KAAA;EAAS,SAAA;EAAmB,GAAG;AAAA;AAAA,KAC/B,YAAA;EACV,SAAA;EACA,KAAA;EACA,MAAA,EAAQ,QAAA;EACR,MAAA,EAAQ,KAAA;EAGR,MAAA,GAAS,SAAA;AAAA;AAAA,KAEC,QAAA;EAAY,SAAA;EAAmB,GAAA;EAAa,QAAA,EAAU,QAAQ;EAAI,SAAA;AAAA;AAAA,KAClE,QAAA;EAAY,EAAA;EAAY,IAAA;EAAc,KAAA;EAAgB,QAAA;AAAA;AAAA,KACtD,IAAA;EAAQ,CAAA;EAAW,CAAA;EAAW,CAAA;EAAW,CAAA;AAAA;AAAA,KACzC,aAAA;EACV,SAAA;EACA,KAAA;EACA,KAAA;EACA,KAAA,EAAO,QAAA;EAGP,IAAA,EAAM,IAAI;AAAA;AAAA,KAEA,UAAA;EAAc,KAAA,EAAO,QAAQ;EAAI,SAAA;AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
//#region src/page-types.d.ts
|
|
4
|
+
declare const PAGE_QUERY_KINDS: readonly ["route", "dom", "query", "console", "text", "value", "attr", "exists", "snapshot", "locate", "tree", "inspect", "override", "find", "track", "effect", "wait", "click", "fill", "select", "check", "uncheck", "press", "hover", "scroll", "submit", "setattr", "removeattr", "addclass", "removeclass", "setstyle", "settext", "sethtml", "remove", "insert", "css", "eval"];
|
|
5
|
+
type PageQueryKind = (typeof PAGE_QUERY_KINDS)[number];
|
|
6
|
+
declare const MUTATING_KINDS: readonly ["override", "click", "fill", "select", "check", "uncheck", "press", "hover", "scroll", "submit", "setattr", "removeattr", "addclass", "removeclass", "setstyle", "settext", "sethtml", "remove", "insert", "css", "eval"];
|
|
7
|
+
declare const MIRROR_KINDS: readonly ["click", "fill", "select", "check", "uncheck", "press", "hover", "scroll", "submit"];
|
|
8
|
+
declare function mirrorsKind(kind: PageQueryKind): boolean;
|
|
9
|
+
declare const PageQueryKindSchema: z.ZodEnum<{
|
|
10
|
+
value: "value";
|
|
11
|
+
check: "check";
|
|
12
|
+
text: "text";
|
|
13
|
+
select: "select";
|
|
14
|
+
route: "route";
|
|
15
|
+
dom: "dom";
|
|
16
|
+
query: "query";
|
|
17
|
+
console: "console";
|
|
18
|
+
attr: "attr";
|
|
19
|
+
exists: "exists";
|
|
20
|
+
snapshot: "snapshot";
|
|
21
|
+
locate: "locate";
|
|
22
|
+
tree: "tree";
|
|
23
|
+
inspect: "inspect";
|
|
24
|
+
override: "override";
|
|
25
|
+
find: "find";
|
|
26
|
+
track: "track";
|
|
27
|
+
effect: "effect";
|
|
28
|
+
wait: "wait";
|
|
29
|
+
click: "click";
|
|
30
|
+
fill: "fill";
|
|
31
|
+
uncheck: "uncheck";
|
|
32
|
+
press: "press";
|
|
33
|
+
hover: "hover";
|
|
34
|
+
scroll: "scroll";
|
|
35
|
+
submit: "submit";
|
|
36
|
+
setattr: "setattr";
|
|
37
|
+
removeattr: "removeattr";
|
|
38
|
+
addclass: "addclass";
|
|
39
|
+
removeclass: "removeclass";
|
|
40
|
+
setstyle: "setstyle";
|
|
41
|
+
settext: "settext";
|
|
42
|
+
sethtml: "sethtml";
|
|
43
|
+
remove: "remove";
|
|
44
|
+
insert: "insert";
|
|
45
|
+
css: "css";
|
|
46
|
+
eval: "eval";
|
|
47
|
+
}>;
|
|
48
|
+
declare const PagePositionSchema: z.ZodEnum<{
|
|
49
|
+
before: "before";
|
|
50
|
+
after: "after";
|
|
51
|
+
prepend: "prepend";
|
|
52
|
+
append: "append";
|
|
53
|
+
}>;
|
|
54
|
+
declare const PageWaitStateSchema: z.ZodEnum<{
|
|
55
|
+
visible: "visible";
|
|
56
|
+
hidden: "hidden";
|
|
57
|
+
}>;
|
|
58
|
+
type PagePosition = z.infer<typeof PagePositionSchema>;
|
|
59
|
+
type PageWaitState = z.infer<typeof PageWaitStateSchema>;
|
|
60
|
+
declare const PageQuerySchema: z.ZodObject<{
|
|
61
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
62
|
+
kind: z.ZodEnum<{
|
|
63
|
+
value: "value";
|
|
64
|
+
check: "check";
|
|
65
|
+
text: "text";
|
|
66
|
+
select: "select";
|
|
67
|
+
route: "route";
|
|
68
|
+
dom: "dom";
|
|
69
|
+
query: "query";
|
|
70
|
+
console: "console";
|
|
71
|
+
attr: "attr";
|
|
72
|
+
exists: "exists";
|
|
73
|
+
snapshot: "snapshot";
|
|
74
|
+
locate: "locate";
|
|
75
|
+
tree: "tree";
|
|
76
|
+
inspect: "inspect";
|
|
77
|
+
override: "override";
|
|
78
|
+
find: "find";
|
|
79
|
+
track: "track";
|
|
80
|
+
effect: "effect";
|
|
81
|
+
wait: "wait";
|
|
82
|
+
click: "click";
|
|
83
|
+
fill: "fill";
|
|
84
|
+
uncheck: "uncheck";
|
|
85
|
+
press: "press";
|
|
86
|
+
hover: "hover";
|
|
87
|
+
scroll: "scroll";
|
|
88
|
+
submit: "submit";
|
|
89
|
+
setattr: "setattr";
|
|
90
|
+
removeattr: "removeattr";
|
|
91
|
+
addclass: "addclass";
|
|
92
|
+
removeclass: "removeclass";
|
|
93
|
+
setstyle: "setstyle";
|
|
94
|
+
settext: "settext";
|
|
95
|
+
sethtml: "sethtml";
|
|
96
|
+
remove: "remove";
|
|
97
|
+
insert: "insert";
|
|
98
|
+
css: "css";
|
|
99
|
+
eval: "eval";
|
|
100
|
+
}>;
|
|
101
|
+
selector: z.ZodOptional<z.ZodString>;
|
|
102
|
+
ref: z.ZodOptional<z.ZodString>;
|
|
103
|
+
since: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
104
|
+
value: z.ZodOptional<z.ZodString>;
|
|
105
|
+
name: z.ZodOptional<z.ZodString>;
|
|
106
|
+
class: z.ZodOptional<z.ZodString>;
|
|
107
|
+
prop: z.ZodOptional<z.ZodString>;
|
|
108
|
+
text: z.ZodOptional<z.ZodString>;
|
|
109
|
+
html: z.ZodOptional<z.ZodString>;
|
|
110
|
+
key: z.ZodOptional<z.ZodString>;
|
|
111
|
+
position: z.ZodOptional<z.ZodEnum<{
|
|
112
|
+
before: "before";
|
|
113
|
+
after: "after";
|
|
114
|
+
prepend: "prepend";
|
|
115
|
+
append: "append";
|
|
116
|
+
}>>;
|
|
117
|
+
state: z.ZodOptional<z.ZodEnum<{
|
|
118
|
+
visible: "visible";
|
|
119
|
+
hidden: "hidden";
|
|
120
|
+
}>>;
|
|
121
|
+
timeout: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
122
|
+
code: z.ZodOptional<z.ZodString>;
|
|
123
|
+
path: z.ZodOptional<z.ZodString>;
|
|
124
|
+
target: z.ZodOptional<z.ZodEnum<{
|
|
125
|
+
state: "state";
|
|
126
|
+
props: "props";
|
|
127
|
+
hooks: "hooks";
|
|
128
|
+
context: "context";
|
|
129
|
+
}>>;
|
|
130
|
+
hookId: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
131
|
+
json: z.ZodOptional<z.ZodString>;
|
|
132
|
+
effect: z.ZodOptional<z.ZodString>;
|
|
133
|
+
action: z.ZodOptional<z.ZodEnum<{
|
|
134
|
+
start: "start";
|
|
135
|
+
stop: "stop";
|
|
136
|
+
report: "report";
|
|
137
|
+
enable: "enable";
|
|
138
|
+
disable: "disable";
|
|
139
|
+
toggle: "toggle";
|
|
140
|
+
list: "list";
|
|
141
|
+
}>>;
|
|
142
|
+
}, z.core.$strip>;
|
|
143
|
+
type PageQuery = z.infer<typeof PageQuerySchema>;
|
|
144
|
+
declare const PageQueryInputSchema: z.ZodObject<{
|
|
145
|
+
value: z.ZodOptional<z.ZodString>;
|
|
146
|
+
name: z.ZodOptional<z.ZodString>;
|
|
147
|
+
path: z.ZodOptional<z.ZodString>;
|
|
148
|
+
code: z.ZodOptional<z.ZodString>;
|
|
149
|
+
text: z.ZodOptional<z.ZodString>;
|
|
150
|
+
effect: z.ZodOptional<z.ZodString>;
|
|
151
|
+
selector: z.ZodOptional<z.ZodString>;
|
|
152
|
+
ref: z.ZodOptional<z.ZodString>;
|
|
153
|
+
since: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
154
|
+
class: z.ZodOptional<z.ZodString>;
|
|
155
|
+
prop: z.ZodOptional<z.ZodString>;
|
|
156
|
+
html: z.ZodOptional<z.ZodString>;
|
|
157
|
+
key: z.ZodOptional<z.ZodString>;
|
|
158
|
+
position: z.ZodOptional<z.ZodEnum<{
|
|
159
|
+
before: "before";
|
|
160
|
+
after: "after";
|
|
161
|
+
prepend: "prepend";
|
|
162
|
+
append: "append";
|
|
163
|
+
}>>;
|
|
164
|
+
state: z.ZodOptional<z.ZodEnum<{
|
|
165
|
+
visible: "visible";
|
|
166
|
+
hidden: "hidden";
|
|
167
|
+
}>>;
|
|
168
|
+
timeout: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
169
|
+
target: z.ZodOptional<z.ZodEnum<{
|
|
170
|
+
state: "state";
|
|
171
|
+
props: "props";
|
|
172
|
+
hooks: "hooks";
|
|
173
|
+
context: "context";
|
|
174
|
+
}>>;
|
|
175
|
+
hookId: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
176
|
+
json: z.ZodOptional<z.ZodString>;
|
|
177
|
+
action: z.ZodOptional<z.ZodEnum<{
|
|
178
|
+
start: "start";
|
|
179
|
+
stop: "stop";
|
|
180
|
+
report: "report";
|
|
181
|
+
enable: "enable";
|
|
182
|
+
disable: "disable";
|
|
183
|
+
toggle: "toggle";
|
|
184
|
+
list: "list";
|
|
185
|
+
}>>;
|
|
186
|
+
}, z.core.$strip>;
|
|
187
|
+
type PageQueryInput = z.infer<typeof PageQueryInputSchema>;
|
|
188
|
+
declare const PageReplySchema: z.ZodObject<{
|
|
189
|
+
requestId: z.ZodString;
|
|
190
|
+
data: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
191
|
+
}, z.core.$strip>;
|
|
192
|
+
type PageReply = z.infer<typeof PageReplySchema>;
|
|
193
|
+
type PageResult = Record<string, unknown>;
|
|
194
|
+
declare function ok(data?: Record<string, unknown>): PageResult;
|
|
195
|
+
declare function err(message: string): PageResult;
|
|
196
|
+
declare function isError(result: PageResult): boolean;
|
|
197
|
+
declare function isMutating(kind: string): boolean;
|
|
198
|
+
declare const RawFrameSchema: z.ZodObject<{
|
|
199
|
+
fileName: z.ZodOptional<z.ZodString>;
|
|
200
|
+
line: z.ZodOptional<z.ZodNumber>;
|
|
201
|
+
column: z.ZodOptional<z.ZodNumber>;
|
|
202
|
+
fn: z.ZodOptional<z.ZodString>;
|
|
203
|
+
}, z.core.$strip>;
|
|
204
|
+
declare const OpenSourceSchema: z.ZodObject<{
|
|
205
|
+
frames: z.ZodArray<z.ZodObject<{
|
|
206
|
+
fileName: z.ZodOptional<z.ZodString>;
|
|
207
|
+
line: z.ZodOptional<z.ZodNumber>;
|
|
208
|
+
column: z.ZodOptional<z.ZodNumber>;
|
|
209
|
+
fn: z.ZodOptional<z.ZodString>;
|
|
210
|
+
}, z.core.$strip>>;
|
|
211
|
+
}, z.core.$strip>;
|
|
212
|
+
declare const OpenSourceResultSchema: z.ZodObject<{
|
|
213
|
+
status: z.ZodEnum<{
|
|
214
|
+
opened: "opened";
|
|
215
|
+
"no-source": "no-source";
|
|
216
|
+
failed: "failed";
|
|
217
|
+
}>;
|
|
218
|
+
}, z.core.$strip>;
|
|
219
|
+
type OpenSourceResult = z.infer<typeof OpenSourceResultSchema>['status'];
|
|
220
|
+
//#endregion
|
|
221
|
+
export { MIRROR_KINDS, MUTATING_KINDS, OpenSourceResult, OpenSourceResultSchema, OpenSourceSchema, PAGE_QUERY_KINDS, PagePosition, PagePositionSchema, PageQuery, PageQueryInput, PageQueryInputSchema, PageQueryKind, PageQueryKindSchema, PageQuerySchema, PageReply, PageReplySchema, PageResult, PageWaitState, PageWaitStateSchema, RawFrameSchema, err, isError, isMutating, mirrorsKind, ok };
|
|
222
|
+
//# sourceMappingURL=page-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-types.d.ts","names":[],"sources":["../src/page-types.ts"],"mappings":";;;cAKa,gBAAA;AAAA,KAwCD,aAAA,WAAwB,gBAAgB;AAAA,cAEvC,cAAA;AAAA,cA2BA,YAAA;AAAA,iBAYG,WAAA,CAAY,IAAmB,EAAb,aAAa;AAAA,cAIlC,mBAAA,EAAmB,CAAA,CAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cACnB,kBAAA,EAAkB,CAAA,CAAA,OAAA;;;;;;cAClB,mBAAA,EAAmB,CAAA,CAAA,OAAA;;;;KAEpB,YAAA,GAAe,CAAA,CAAE,KAAK,QAAQ,kBAAA;AAAA,KAC9B,aAAA,GAAgB,CAAA,CAAE,KAAK,QAAQ,mBAAA;AAAA,cAE9B,eAAA,EAAe,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6BhB,SAAA,GAAY,CAAA,CAAE,KAAK,QAAQ,eAAA;AAAA,cAE1B,oBAAA,EAAoB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KACrB,cAAA,GAAiB,CAAA,CAAE,KAAK,QAAQ,oBAAA;AAAA,cAI/B,eAAA,EAAe,CAAA,CAAA,SAAA;;;;KAChB,SAAA,GAAY,CAAA,CAAE,KAAK,QAAQ,eAAA;AAAA,KAG3B,UAAA,GAAa,MAAM;AAAA,iBAEf,EAAA,CAAG,IAAA,GAAM,MAAA,oBAA+B,UAAU;AAAA,iBAGlD,GAAA,CAAI,OAAA,WAAkB,UAAU;AAAA,iBAGhC,OAAA,CAAQ,MAAkB,EAAV,UAAU;AAAA,iBAK1B,UAAA,CAAW,IAAY;AAAA,cAI1B,cAAA,EAAc,CAAA,CAAA,SAAA;;;;;;cAMd,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;;;;;;cAChB,sBAAA,EAAsB,CAAA,CAAA,SAAA;;;;;;;KACvB,gBAAA,GAAmB,CAAA,CAAE,KAAK,QAAQ,sBAAA"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
//#region src/page-types.ts
|
|
3
|
+
const PAGE_QUERY_KINDS = [
|
|
4
|
+
"route",
|
|
5
|
+
"dom",
|
|
6
|
+
"query",
|
|
7
|
+
"console",
|
|
8
|
+
"text",
|
|
9
|
+
"value",
|
|
10
|
+
"attr",
|
|
11
|
+
"exists",
|
|
12
|
+
"snapshot",
|
|
13
|
+
"locate",
|
|
14
|
+
"tree",
|
|
15
|
+
"inspect",
|
|
16
|
+
"override",
|
|
17
|
+
"find",
|
|
18
|
+
"track",
|
|
19
|
+
"effect",
|
|
20
|
+
"wait",
|
|
21
|
+
"click",
|
|
22
|
+
"fill",
|
|
23
|
+
"select",
|
|
24
|
+
"check",
|
|
25
|
+
"uncheck",
|
|
26
|
+
"press",
|
|
27
|
+
"hover",
|
|
28
|
+
"scroll",
|
|
29
|
+
"submit",
|
|
30
|
+
"setattr",
|
|
31
|
+
"removeattr",
|
|
32
|
+
"addclass",
|
|
33
|
+
"removeclass",
|
|
34
|
+
"setstyle",
|
|
35
|
+
"settext",
|
|
36
|
+
"sethtml",
|
|
37
|
+
"remove",
|
|
38
|
+
"insert",
|
|
39
|
+
"css",
|
|
40
|
+
"eval"
|
|
41
|
+
];
|
|
42
|
+
const MUTATING_KINDS = [
|
|
43
|
+
"override",
|
|
44
|
+
"click",
|
|
45
|
+
"fill",
|
|
46
|
+
"select",
|
|
47
|
+
"check",
|
|
48
|
+
"uncheck",
|
|
49
|
+
"press",
|
|
50
|
+
"hover",
|
|
51
|
+
"scroll",
|
|
52
|
+
"submit",
|
|
53
|
+
"setattr",
|
|
54
|
+
"removeattr",
|
|
55
|
+
"addclass",
|
|
56
|
+
"removeclass",
|
|
57
|
+
"setstyle",
|
|
58
|
+
"settext",
|
|
59
|
+
"sethtml",
|
|
60
|
+
"remove",
|
|
61
|
+
"insert",
|
|
62
|
+
"css",
|
|
63
|
+
"eval"
|
|
64
|
+
];
|
|
65
|
+
const MIRROR_KINDS = [
|
|
66
|
+
"click",
|
|
67
|
+
"fill",
|
|
68
|
+
"select",
|
|
69
|
+
"check",
|
|
70
|
+
"uncheck",
|
|
71
|
+
"press",
|
|
72
|
+
"hover",
|
|
73
|
+
"scroll",
|
|
74
|
+
"submit"
|
|
75
|
+
];
|
|
76
|
+
function mirrorsKind(kind) {
|
|
77
|
+
return MIRROR_KINDS.includes(kind);
|
|
78
|
+
}
|
|
79
|
+
const PageQueryKindSchema = z.enum(PAGE_QUERY_KINDS);
|
|
80
|
+
const PagePositionSchema = z.enum([
|
|
81
|
+
"before",
|
|
82
|
+
"after",
|
|
83
|
+
"prepend",
|
|
84
|
+
"append"
|
|
85
|
+
]);
|
|
86
|
+
const PageWaitStateSchema = z.enum(["visible", "hidden"]);
|
|
87
|
+
const PageQuerySchema = z.object({
|
|
88
|
+
requestId: z.string().optional(),
|
|
89
|
+
kind: PageQueryKindSchema,
|
|
90
|
+
selector: z.string().optional(),
|
|
91
|
+
ref: z.string().optional(),
|
|
92
|
+
since: z.coerce.number().optional(),
|
|
93
|
+
value: z.string().optional(),
|
|
94
|
+
name: z.string().optional(),
|
|
95
|
+
class: z.string().optional(),
|
|
96
|
+
prop: z.string().optional(),
|
|
97
|
+
text: z.string().optional(),
|
|
98
|
+
html: z.string().optional(),
|
|
99
|
+
key: z.string().optional(),
|
|
100
|
+
position: PagePositionSchema.optional(),
|
|
101
|
+
state: PageWaitStateSchema.optional(),
|
|
102
|
+
timeout: z.coerce.number().optional(),
|
|
103
|
+
code: z.string().optional(),
|
|
104
|
+
path: z.string().optional(),
|
|
105
|
+
target: z.enum([
|
|
106
|
+
"props",
|
|
107
|
+
"state",
|
|
108
|
+
"hooks",
|
|
109
|
+
"context"
|
|
110
|
+
]).optional(),
|
|
111
|
+
hookId: z.coerce.number().optional(),
|
|
112
|
+
json: z.string().optional(),
|
|
113
|
+
effect: z.string().optional(),
|
|
114
|
+
action: z.enum([
|
|
115
|
+
"start",
|
|
116
|
+
"stop",
|
|
117
|
+
"report",
|
|
118
|
+
"enable",
|
|
119
|
+
"disable",
|
|
120
|
+
"toggle",
|
|
121
|
+
"list"
|
|
122
|
+
]).optional()
|
|
123
|
+
});
|
|
124
|
+
const PageQueryInputSchema = PageQuerySchema.omit({
|
|
125
|
+
kind: true,
|
|
126
|
+
requestId: true
|
|
127
|
+
});
|
|
128
|
+
const PageReplySchema = z.object({
|
|
129
|
+
requestId: z.string(),
|
|
130
|
+
data: z.record(z.string(), z.unknown()).default({})
|
|
131
|
+
});
|
|
132
|
+
function ok(data = {}) {
|
|
133
|
+
return {
|
|
134
|
+
ok: true,
|
|
135
|
+
...data
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
function err(message) {
|
|
139
|
+
return { error: message };
|
|
140
|
+
}
|
|
141
|
+
function isError(result) {
|
|
142
|
+
return typeof result.error === "string";
|
|
143
|
+
}
|
|
144
|
+
const MUTATING = new Set(MUTATING_KINDS);
|
|
145
|
+
function isMutating(kind) {
|
|
146
|
+
return MUTATING.has(kind);
|
|
147
|
+
}
|
|
148
|
+
const RawFrameSchema = z.object({
|
|
149
|
+
fileName: z.string().optional(),
|
|
150
|
+
line: z.number().optional(),
|
|
151
|
+
column: z.number().optional(),
|
|
152
|
+
fn: z.string().optional()
|
|
153
|
+
});
|
|
154
|
+
const OpenSourceSchema = z.object({ frames: z.array(RawFrameSchema) });
|
|
155
|
+
const OpenSourceResultSchema = z.object({ status: z.enum([
|
|
156
|
+
"opened",
|
|
157
|
+
"no-source",
|
|
158
|
+
"failed"
|
|
159
|
+
]) });
|
|
160
|
+
//#endregion
|
|
161
|
+
export { MIRROR_KINDS, MUTATING_KINDS, OpenSourceResultSchema, OpenSourceSchema, PAGE_QUERY_KINDS, PagePositionSchema, PageQueryInputSchema, PageQueryKindSchema, PageQuerySchema, PageReplySchema, PageWaitStateSchema, RawFrameSchema, err, isError, isMutating, mirrorsKind, ok };
|
|
162
|
+
|
|
163
|
+
//# sourceMappingURL=page-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-types.js","names":[],"sources":["../src/page-types.ts"],"sourcesContent":["import {z} from 'zod'\n\n// The single source of truth for the page-bus contract, shared by core (server) and the\n// widget (browser). The kind union is derived from a runtime array so a contract test can\n// assert the verb table + handler registry never drift from it.\nexport const PAGE_QUERY_KINDS = [\n 'route',\n 'dom',\n 'query',\n 'console',\n 'text',\n 'value',\n 'attr',\n 'exists',\n 'snapshot',\n 'locate',\n 'tree',\n 'inspect',\n 'override',\n 'find',\n 'track',\n 'effect',\n 'wait',\n 'click',\n 'fill',\n 'select',\n 'check',\n 'uncheck',\n 'press',\n 'hover',\n 'scroll',\n 'submit',\n 'setattr',\n 'removeattr',\n 'addclass',\n 'removeclass',\n 'setstyle',\n 'settext',\n 'sethtml',\n 'remove',\n 'insert',\n 'css',\n 'eval',\n] as const\n\nexport type PageQueryKind = (typeof PAGE_QUERY_KINDS)[number]\n\nexport const MUTATING_KINDS = [\n 'override',\n 'click',\n 'fill',\n 'select',\n 'check',\n 'uncheck',\n 'press',\n 'hover',\n 'scroll',\n 'submit',\n 'setattr',\n 'removeattr',\n 'addclass',\n 'removeclass',\n 'setstyle',\n 'settext',\n 'sethtml',\n 'remove',\n 'insert',\n 'css',\n 'eval',\n] as const satisfies readonly PageQueryKind[]\n\n// Visual action verbs that move/affect a visible element — the ones worth mirroring on the real page\n// (cursor glide + ring) and flagging in the tool card. Shared so the widget's page-mirror and the\n// tool-ui card never drift on which actions claim \"shown on your page\". Non-visual reads are excluded.\nexport const MIRROR_KINDS = [\n 'click',\n 'fill',\n 'select',\n 'check',\n 'uncheck',\n 'press',\n 'hover',\n 'scroll',\n 'submit',\n] as const satisfies readonly PageQueryKind[]\n\nexport function mirrorsKind(kind: PageQueryKind): boolean {\n return (MIRROR_KINDS as readonly PageQueryKind[]).includes(kind)\n}\n\nexport const PageQueryKindSchema = z.enum(PAGE_QUERY_KINDS)\nexport const PagePositionSchema = z.enum(['before', 'after', 'prepend', 'append'])\nexport const PageWaitStateSchema = z.enum(['visible', 'hidden'])\n\nexport type PagePosition = z.infer<typeof PagePositionSchema>\nexport type PageWaitState = z.infer<typeof PageWaitStateSchema>\n\nexport const PageQuerySchema = z.object({\n requestId: z.string().optional(),\n kind: PageQueryKindSchema,\n selector: z.string().optional(),\n ref: z.string().optional(),\n since: z.coerce.number().optional(),\n value: z.string().optional(),\n name: z.string().optional(),\n class: z.string().optional(),\n prop: z.string().optional(),\n text: z.string().optional(),\n html: z.string().optional(),\n key: z.string().optional(),\n position: PagePositionSchema.optional(),\n state: PageWaitStateSchema.optional(),\n timeout: z.coerce.number().optional(),\n code: z.string().optional(),\n // Dot-path into an inspect result for drill-down, e.g. \"props.user.address\" or \"hooks.0.value\".\n // Numeric segments index arrays. Stays a plain string so it rides the query-string + MCP alike.\n path: z.string().optional(),\n // override verb: which slice to edit, the hook id (from inspect's hooks tree), and the new value\n // as a JSON-encoded string (so `42`, `\"text\"`, `{\"a\":1}` are unambiguous over query-string + MCP).\n target: z.enum(['props', 'state', 'hooks', 'context']).optional(),\n hookId: z.coerce.number().optional(),\n json: z.string().optional(),\n effect: z.string().optional(),\n action: z.enum(['start', 'stop', 'report', 'enable', 'disable', 'toggle', 'list']).optional(),\n})\n\nexport type PageQuery = z.infer<typeof PageQuerySchema>\n\nexport const PageQueryInputSchema = PageQuerySchema.omit({kind: true, requestId: true})\nexport type PageQueryInput = z.infer<typeof PageQueryInputSchema>\n\n// POST /api/page/reply body — the widget's answer to a pushed PageQuery. Shared by core (validation)\n// and the widget transport (typing) so the two ends can't drift.\nexport const PageReplySchema = z.object({requestId: z.string(), data: z.record(z.string(), z.unknown()).default({})})\nexport type PageReply = z.infer<typeof PageReplySchema>\n\n// A reply is always a plain JSON object: either an error or some data (often {ok:true}).\nexport type PageResult = Record<string, unknown>\n\nexport function ok(data: Record<string, unknown> = {}): PageResult {\n return {ok: true, ...data}\n}\nexport function err(message: string): PageResult {\n return {error: message}\n}\nexport function isError(result: PageResult): boolean {\n return typeof result.error === 'string'\n}\n\nconst MUTATING = new Set<string>(MUTATING_KINDS)\nexport function isMutating(kind: string): boolean {\n return MUTATING.has(kind)\n}\n\nexport const RawFrameSchema = z.object({\n fileName: z.string().optional(),\n line: z.number().optional(),\n column: z.number().optional(),\n fn: z.string().optional(),\n})\nexport const OpenSourceSchema = z.object({frames: z.array(RawFrameSchema)})\nexport const OpenSourceResultSchema = z.object({status: z.enum(['opened', 'no-source', 'failed'])})\nexport type OpenSourceResult = z.infer<typeof OpenSourceResultSchema>['status']\n"],"mappings":";;AAKA,MAAa,mBAAmB;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAIA,MAAa,iBAAiB;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAKA,MAAa,eAAe;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,SAAgB,YAAY,MAA8B;CACxD,OAAQ,aAA0C,SAAS,IAAI;AACjE;AAEA,MAAa,sBAAsB,EAAE,KAAK,gBAAgB;AAC1D,MAAa,qBAAqB,EAAE,KAAK;CAAC;CAAU;CAAS;CAAW;AAAQ,CAAC;AACjF,MAAa,sBAAsB,EAAE,KAAK,CAAC,WAAW,QAAQ,CAAC;AAK/D,MAAa,kBAAkB,EAAE,OAAO;CACtC,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS;CAC/B,MAAM;CACN,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS;CAC9B,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS;CACzB,OAAO,EAAE,OAAO,OAAO,CAAC,CAAC,SAAS;CAClC,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAC1B,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAC1B,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAC1B,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS;CACzB,UAAU,mBAAmB,SAAS;CACtC,OAAO,oBAAoB,SAAS;CACpC,SAAS,EAAE,OAAO,OAAO,CAAC,CAAC,SAAS;CACpC,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAG1B,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAG1B,QAAQ,EAAE,KAAK;EAAC;EAAS;EAAS;EAAS;CAAS,CAAC,CAAC,CAAC,SAAS;CAChE,QAAQ,EAAE,OAAO,OAAO,CAAC,CAAC,SAAS;CACnC,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAC1B,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS;CAC5B,QAAQ,EAAE,KAAK;EAAC;EAAS;EAAQ;EAAU;EAAU;EAAW;EAAU;CAAM,CAAC,CAAC,CAAC,SAAS;AAC9F,CAAC;AAID,MAAa,uBAAuB,gBAAgB,KAAK;CAAC,MAAM;CAAM,WAAW;AAAI,CAAC;AAKtF,MAAa,kBAAkB,EAAE,OAAO;CAAC,WAAW,EAAE,OAAO;CAAG,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAAC,CAAC;AAMpH,SAAgB,GAAG,OAAgC,CAAC,GAAe;CACjE,OAAO;EAAC,IAAI;EAAM,GAAG;CAAI;AAC3B;AACA,SAAgB,IAAI,SAA6B;CAC/C,OAAO,EAAC,OAAO,QAAO;AACxB;AACA,SAAgB,QAAQ,QAA6B;CACnD,OAAO,OAAO,OAAO,UAAU;AACjC;AAEA,MAAM,WAAW,IAAI,IAAY,cAAc;AAC/C,SAAgB,WAAW,MAAuB;CAChD,OAAO,SAAS,IAAI,IAAI;AAC1B;AAEA,MAAa,iBAAiB,EAAE,OAAO;CACrC,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS;CAC9B,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAC1B,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS;CAC5B,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS;AAC1B,CAAC;AACD,MAAa,mBAAmB,EAAE,OAAO,EAAC,QAAQ,EAAE,MAAM,cAAc,EAAC,CAAC;AAC1E,MAAa,yBAAyB,EAAE,OAAO,EAAC,QAAQ,EAAE,KAAK;CAAC;CAAU;CAAa;AAAQ,CAAC,EAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { StreamChunk } from "@tanstack/ai";
|
|
3
|
+
|
|
4
|
+
//#region src/tool-timing.d.ts
|
|
5
|
+
declare const CONCIV_TOOL_DURATION_EVENT = "conciv-tool-duration";
|
|
6
|
+
declare const ToolDurationSchema: z.ZodObject<{
|
|
7
|
+
toolCallId: z.ZodString;
|
|
8
|
+
durationMs: z.ZodNumber;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
type ToolDuration = z.infer<typeof ToolDurationSchema>;
|
|
11
|
+
declare function aguiToolDurationFor(toolCallId: string, durationMs: number): StreamChunk;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { CONCIV_TOOL_DURATION_EVENT, ToolDuration, ToolDurationSchema, aguiToolDurationFor };
|
|
14
|
+
//# sourceMappingURL=tool-timing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-timing.d.ts","names":[],"sources":["../src/tool-timing.ts"],"mappings":";;;;cAGa,0BAAA;AAAA,cAEA,kBAAA,EAAkB,CAAA,CAAA,SAAA;;;;KACnB,YAAA,GAAe,CAAA,CAAE,KAAK,QAAQ,kBAAA;AAAA,iBAE1B,mBAAA,CAAoB,UAAA,UAAoB,UAAA,WAAqB,WAAW"}
|