@gencode/uni 0.2.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.
- package/CHANGELOG.md +15 -0
- package/README.md +50 -0
- package/dist/shared/src/agent-progress.d.ts +133 -0
- package/dist/shared/src/agent-progress.d.ts.map +1 -0
- package/dist/shared/src/agent-progress.js +4 -0
- package/dist/shared/src/agent-progress.js.map +1 -0
- package/dist/shared/src/context-protocol.d.ts +83 -0
- package/dist/shared/src/context-protocol.d.ts.map +1 -0
- package/dist/shared/src/context-protocol.js +2 -0
- package/dist/shared/src/context-protocol.js.map +1 -0
- package/dist/shared/src/goal.d.ts +50 -0
- package/dist/shared/src/goal.d.ts.map +1 -0
- package/dist/shared/src/goal.js +11 -0
- package/dist/shared/src/goal.js.map +1 -0
- package/dist/shared/src/hitl.d.ts +214 -0
- package/dist/shared/src/hitl.d.ts.map +1 -0
- package/dist/shared/src/hitl.js +205 -0
- package/dist/shared/src/hitl.js.map +1 -0
- package/dist/shared/src/index.d.ts +16 -0
- package/dist/shared/src/index.d.ts.map +1 -0
- package/dist/shared/src/index.js +12 -0
- package/dist/shared/src/index.js.map +1 -0
- package/dist/shared/src/run-events.d.ts +129 -0
- package/dist/shared/src/run-events.d.ts.map +1 -0
- package/dist/shared/src/run-events.js +2 -0
- package/dist/shared/src/run-events.js.map +1 -0
- package/dist/shared/src/session.d.ts +37 -0
- package/dist/shared/src/session.d.ts.map +1 -0
- package/dist/shared/src/session.js +2 -0
- package/dist/shared/src/session.js.map +1 -0
- package/dist/shared/src/task-display.d.ts +3 -0
- package/dist/shared/src/task-display.d.ts.map +1 -0
- package/dist/shared/src/task-display.js +41 -0
- package/dist/shared/src/task-display.js.map +1 -0
- package/dist/shared/src/ui-tool.d.ts +94 -0
- package/dist/shared/src/ui-tool.d.ts.map +1 -0
- package/dist/shared/src/ui-tool.js +39 -0
- package/dist/shared/src/ui-tool.js.map +1 -0
- package/dist/uni/src/auth/api-key.d.ts +3 -0
- package/dist/uni/src/auth/api-key.d.ts.map +1 -0
- package/dist/uni/src/auth/api-key.js +8 -0
- package/dist/uni/src/auth/api-key.js.map +1 -0
- package/dist/uni/src/bin.d.ts +3 -0
- package/dist/uni/src/bin.d.ts.map +1 -0
- package/dist/uni/src/bin.js +4 -0
- package/dist/uni/src/bin.js.map +1 -0
- package/dist/uni/src/events/normalizer.d.ts +4 -0
- package/dist/uni/src/events/normalizer.d.ts.map +1 -0
- package/dist/uni/src/events/normalizer.js +72 -0
- package/dist/uni/src/events/normalizer.js.map +1 -0
- package/dist/uni/src/events/provider-events.d.ts +8 -0
- package/dist/uni/src/events/provider-events.d.ts.map +1 -0
- package/dist/uni/src/events/provider-events.js +317 -0
- package/dist/uni/src/events/provider-events.js.map +1 -0
- package/dist/uni/src/hooks.d.ts +8 -0
- package/dist/uni/src/hooks.d.ts.map +1 -0
- package/dist/uni/src/hooks.js +13 -0
- package/dist/uni/src/hooks.js.map +1 -0
- package/dist/uni/src/index.d.ts +10 -0
- package/dist/uni/src/index.d.ts.map +1 -0
- package/dist/uni/src/index.js +8 -0
- package/dist/uni/src/index.js.map +1 -0
- package/dist/uni/src/program.d.ts +3 -0
- package/dist/uni/src/program.d.ts.map +1 -0
- package/dist/uni/src/program.js +140 -0
- package/dist/uni/src/program.js.map +1 -0
- package/dist/uni/src/providers/acp.d.ts +3 -0
- package/dist/uni/src/providers/acp.d.ts.map +1 -0
- package/dist/uni/src/providers/acp.js +33 -0
- package/dist/uni/src/providers/acp.js.map +1 -0
- package/dist/uni/src/providers/claude-code.d.ts +3 -0
- package/dist/uni/src/providers/claude-code.d.ts.map +1 -0
- package/dist/uni/src/providers/claude-code.js +87 -0
- package/dist/uni/src/providers/claude-code.js.map +1 -0
- package/dist/uni/src/providers/codex.d.ts +3 -0
- package/dist/uni/src/providers/codex.d.ts.map +1 -0
- package/dist/uni/src/providers/codex.js +71 -0
- package/dist/uni/src/providers/codex.js.map +1 -0
- package/dist/uni/src/providers/opencode.d.ts +3 -0
- package/dist/uni/src/providers/opencode.d.ts.map +1 -0
- package/dist/uni/src/providers/opencode.js +47 -0
- package/dist/uni/src/providers/opencode.js.map +1 -0
- package/dist/uni/src/providers/pi.d.ts +3 -0
- package/dist/uni/src/providers/pi.d.ts.map +1 -0
- package/dist/uni/src/providers/pi.js +42 -0
- package/dist/uni/src/providers/pi.js.map +1 -0
- package/dist/uni/src/providers/registry.d.ts +3 -0
- package/dist/uni/src/providers/registry.d.ts.map +1 -0
- package/dist/uni/src/providers/registry.js +25 -0
- package/dist/uni/src/providers/registry.js.map +1 -0
- package/dist/uni/src/providers/spawned-provider.d.ts +22 -0
- package/dist/uni/src/providers/spawned-provider.d.ts.map +1 -0
- package/dist/uni/src/providers/spawned-provider.js +109 -0
- package/dist/uni/src/providers/spawned-provider.js.map +1 -0
- package/dist/uni/src/providers/types.d.ts +6 -0
- package/dist/uni/src/providers/types.d.ts.map +1 -0
- package/dist/uni/src/providers/types.js +2 -0
- package/dist/uni/src/providers/types.js.map +1 -0
- package/dist/uni/src/run.d.ts +3 -0
- package/dist/uni/src/run.d.ts.map +1 -0
- package/dist/uni/src/run.js +446 -0
- package/dist/uni/src/run.js.map +1 -0
- package/dist/uni/src/runtime-config.d.ts +40 -0
- package/dist/uni/src/runtime-config.d.ts.map +1 -0
- package/dist/uni/src/runtime-config.js +203 -0
- package/dist/uni/src/runtime-config.js.map +1 -0
- package/dist/uni/src/session/input.d.ts +3 -0
- package/dist/uni/src/session/input.d.ts.map +1 -0
- package/dist/uni/src/session/input.js +147 -0
- package/dist/uni/src/session/input.js.map +1 -0
- package/dist/uni/src/session/logger.d.ts +16 -0
- package/dist/uni/src/session/logger.d.ts.map +1 -0
- package/dist/uni/src/session/logger.js +66 -0
- package/dist/uni/src/session/logger.js.map +1 -0
- package/dist/uni/src/session/session-state.d.ts +19 -0
- package/dist/uni/src/session/session-state.d.ts.map +1 -0
- package/dist/uni/src/session/session-state.js +13 -0
- package/dist/uni/src/session/session-state.js.map +1 -0
- package/dist/uni/src/session/session-store.d.ts +23 -0
- package/dist/uni/src/session/session-store.d.ts.map +1 -0
- package/dist/uni/src/session/session-store.js +36 -0
- package/dist/uni/src/session/session-store.js.map +1 -0
- package/dist/uni/src/transports/composite-sink.d.ts +9 -0
- package/dist/uni/src/transports/composite-sink.d.ts.map +1 -0
- package/dist/uni/src/transports/composite-sink.js +17 -0
- package/dist/uni/src/transports/composite-sink.js.map +1 -0
- package/dist/uni/src/transports/event-sink.d.ts +6 -0
- package/dist/uni/src/transports/event-sink.d.ts.map +1 -0
- package/dist/uni/src/transports/event-sink.js +2 -0
- package/dist/uni/src/transports/event-sink.js.map +1 -0
- package/dist/uni/src/transports/http-callback-sink.d.ts +9 -0
- package/dist/uni/src/transports/http-callback-sink.d.ts.map +1 -0
- package/dist/uni/src/transports/http-callback-sink.js +20 -0
- package/dist/uni/src/transports/http-callback-sink.js.map +1 -0
- package/dist/uni/src/transports/websocket-auth.d.ts +8 -0
- package/dist/uni/src/transports/websocket-auth.d.ts.map +1 -0
- package/dist/uni/src/transports/websocket-auth.js +9 -0
- package/dist/uni/src/transports/websocket-auth.js.map +1 -0
- package/dist/uni/src/transports/websocket-sink.d.ts +24 -0
- package/dist/uni/src/transports/websocket-sink.d.ts.map +1 -0
- package/dist/uni/src/transports/websocket-sink.js +205 -0
- package/dist/uni/src/transports/websocket-sink.js.map +1 -0
- package/dist/uni/src/types.d.ts +239 -0
- package/dist/uni/src/types.d.ts.map +1 -0
- package/dist/uni/src/types.js +2 -0
- package/dist/uni/src/types.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HITL (Human-In-The-Loop) protocol types for AIMax.
|
|
3
|
+
*
|
|
4
|
+
* These types define the stable public contract shared by all packages:
|
|
5
|
+
* - @gencode/agents (produces pause requests)
|
|
6
|
+
* - @gencode/cli (emits & receives HITL events)
|
|
7
|
+
* - @gencode/web (renders HITL UI)
|
|
8
|
+
* - external systems (爱码 Max)
|
|
9
|
+
*
|
|
10
|
+
* Design principles:
|
|
11
|
+
* 1. Pause is a persisted session state, not an in-process block.
|
|
12
|
+
* 2. Resume is explicit & structured, not implicit message concatenation.
|
|
13
|
+
* 3. Every request carries an idempotency-safe requestId.
|
|
14
|
+
* 4. A single HitlRequest model covers approval / clarify / review.
|
|
15
|
+
*/
|
|
16
|
+
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
17
|
+
/**
|
|
18
|
+
* The canonical set of tool names that are dedicated HITL interaction tools.
|
|
19
|
+
* Tools in this set are expected to produce transcript entries (assistant tool
|
|
20
|
+
* call + tool result) that form the human-interaction record. Tools NOT in
|
|
21
|
+
* this set (e.g. "exec", "apply_patch") may throw `HitlPauseSignal` for
|
|
22
|
+
* safety approvals, but their pauses should be transparent — no HITL artefacts
|
|
23
|
+
* should appear in the transcript.
|
|
24
|
+
*/
|
|
25
|
+
export const HITL_TOOL_NAMES = new Set([
|
|
26
|
+
"request_approval",
|
|
27
|
+
"clarify",
|
|
28
|
+
"request_review",
|
|
29
|
+
]);
|
|
30
|
+
/** Returns true when the tool name is a dedicated HITL interaction tool. */
|
|
31
|
+
export function isHitlTool(toolName) {
|
|
32
|
+
return HITL_TOOL_NAMES.has(toolName);
|
|
33
|
+
}
|
|
34
|
+
/** Type-guard: check whether a PausedRunState is still actionable. */
|
|
35
|
+
export function isHitlPending(state) {
|
|
36
|
+
return state.status === "pending";
|
|
37
|
+
}
|
|
38
|
+
/** Type-guard: check whether a PausedRunState has been resolved. */
|
|
39
|
+
export function isHitlResolved(state) {
|
|
40
|
+
return state.status === "resolved";
|
|
41
|
+
}
|
|
42
|
+
/** Check whether a HITL request has expired based on its `expiresAt` field. */
|
|
43
|
+
export function isHitlExpired(request, now = new Date()) {
|
|
44
|
+
if (!request.expiresAt)
|
|
45
|
+
return false;
|
|
46
|
+
return now >= new Date(request.expiresAt);
|
|
47
|
+
}
|
|
48
|
+
// ─── Text-based resolution parsing ──────────────────────────────────────────
|
|
49
|
+
/**
|
|
50
|
+
* Synonyms for approval / denial / revision / rejection / cancellation actions,
|
|
51
|
+
* used by IM channels that can only send plain text.
|
|
52
|
+
*/
|
|
53
|
+
const HITL_ACTION_SYNONYMS = new Map([
|
|
54
|
+
["同意", "approve"],
|
|
55
|
+
["批准", "approve"],
|
|
56
|
+
["通过", "approve"],
|
|
57
|
+
["允许", "approve"],
|
|
58
|
+
["好的", "approve"],
|
|
59
|
+
["好", "approve"],
|
|
60
|
+
["可以", "approve"],
|
|
61
|
+
["确认", "approve"],
|
|
62
|
+
["ok", "approve"],
|
|
63
|
+
["yes", "approve"],
|
|
64
|
+
["approve", "approve"],
|
|
65
|
+
["y", "approve"],
|
|
66
|
+
["拒绝", "deny"],
|
|
67
|
+
["不同意", "deny"],
|
|
68
|
+
["不行", "deny"],
|
|
69
|
+
["不可以", "deny"],
|
|
70
|
+
["否决", "deny"],
|
|
71
|
+
["no", "deny"],
|
|
72
|
+
["deny", "deny"],
|
|
73
|
+
["n", "deny"],
|
|
74
|
+
["取消", "cancel"],
|
|
75
|
+
["cancel", "cancel"],
|
|
76
|
+
["需要修改", "revise"],
|
|
77
|
+
["修改", "revise"],
|
|
78
|
+
["revise", "revise"],
|
|
79
|
+
["reject", "reject"],
|
|
80
|
+
]);
|
|
81
|
+
const HITL_CANCEL_KEYWORDS = ["取消", "cancel"];
|
|
82
|
+
/**
|
|
83
|
+
* Attempts to match user-provided plain text against the choices defined in
|
|
84
|
+
* a HitlRequest. Matching is performed in order:
|
|
85
|
+
* 1. Exact label match (case-insensitive)
|
|
86
|
+
* 2. Exact choice ID match (case-insensitive)
|
|
87
|
+
* 3. Synonym table lookup via `HITL_ACTION_SYNONYMS`
|
|
88
|
+
*
|
|
89
|
+
* @param text - The user's plain text input (already trimmed).
|
|
90
|
+
* @param request - The HitlRequest containing the choice definitions.
|
|
91
|
+
* @returns The matched choice ID, or `null` if no match is found.
|
|
92
|
+
*/
|
|
93
|
+
function matchTextToChoice(text, request) {
|
|
94
|
+
const trimmed = text.trim().toLowerCase();
|
|
95
|
+
if (!trimmed)
|
|
96
|
+
return null;
|
|
97
|
+
// 1. Direct match on choice labels (case-insensitive)
|
|
98
|
+
if (request.input.mode === "choice") {
|
|
99
|
+
for (const choice of request.input.choices) {
|
|
100
|
+
if (choice.label.toLowerCase() === trimmed)
|
|
101
|
+
return choice.id;
|
|
102
|
+
if (choice.id.toLowerCase() === trimmed)
|
|
103
|
+
return choice.id;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// 2. Synonym table
|
|
107
|
+
const synonym = HITL_ACTION_SYNONYMS.get(trimmed);
|
|
108
|
+
if (synonym && request.input.mode === "choice") {
|
|
109
|
+
const matched = request.input.choices.find((c) => c.id === synonym);
|
|
110
|
+
if (matched)
|
|
111
|
+
return matched.id;
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Parses plain text only when it exactly matches a HITL UI action.
|
|
117
|
+
*
|
|
118
|
+
* This is intentionally stricter than `parseTextToResolution`: it never falls
|
|
119
|
+
* back to free text. It is used by generic message entry points to decide
|
|
120
|
+
* whether a normal user message should resolve a pending HITL request or start
|
|
121
|
+
* a new task.
|
|
122
|
+
*/
|
|
123
|
+
export function parseMatchedTextToResolution(text, request) {
|
|
124
|
+
const trimmed = text.trim();
|
|
125
|
+
if (!trimmed)
|
|
126
|
+
return null;
|
|
127
|
+
const now = new Date().toISOString();
|
|
128
|
+
if (HITL_CANCEL_KEYWORDS.includes(trimmed.toLowerCase())) {
|
|
129
|
+
return {
|
|
130
|
+
requestId: request.requestId,
|
|
131
|
+
sessionId: request.sessionId,
|
|
132
|
+
action: "cancel",
|
|
133
|
+
submittedAt: now,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
const matchedChoiceId = matchTextToChoice(trimmed, request);
|
|
137
|
+
if (!matchedChoiceId) {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
requestId: request.requestId,
|
|
142
|
+
sessionId: request.sessionId,
|
|
143
|
+
action: "submit",
|
|
144
|
+
values: { selectedChoiceIds: [matchedChoiceId] },
|
|
145
|
+
submittedAt: now,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Parses a plain-text user response into a structured `HitlResolution`.
|
|
150
|
+
*
|
|
151
|
+
* This is designed for IM channels (快乐平安 IM, etc.) that cannot render
|
|
152
|
+
* rich UI components. The user simply replies with text like "同意", "拒绝",
|
|
153
|
+
* or free-form feedback.
|
|
154
|
+
*
|
|
155
|
+
* Matching logic:
|
|
156
|
+
* 1. If the text matches a choice label or known synonym → `action: "submit"` with that choice.
|
|
157
|
+
* 2. If the request accepts free text and no choice matched → `action: "submit"` with text value.
|
|
158
|
+
* 3. If the text looks like a cancellation keyword → `action: "cancel"`.
|
|
159
|
+
* 4. Otherwise → `action: "submit"` with text value (fallback to free text).
|
|
160
|
+
*/
|
|
161
|
+
export function parseTextToResolution(text, request) {
|
|
162
|
+
const trimmed = text.trim();
|
|
163
|
+
const now = new Date().toISOString();
|
|
164
|
+
// Check for cancel
|
|
165
|
+
if (HITL_CANCEL_KEYWORDS.includes(trimmed.toLowerCase())) {
|
|
166
|
+
return {
|
|
167
|
+
requestId: request.requestId,
|
|
168
|
+
sessionId: request.sessionId,
|
|
169
|
+
action: "cancel",
|
|
170
|
+
submittedAt: now,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
// Try to match against choices
|
|
174
|
+
const matchedChoiceId = matchTextToChoice(trimmed, request);
|
|
175
|
+
if (matchedChoiceId) {
|
|
176
|
+
return {
|
|
177
|
+
requestId: request.requestId,
|
|
178
|
+
sessionId: request.sessionId,
|
|
179
|
+
action: "submit",
|
|
180
|
+
values: { selectedChoiceIds: [matchedChoiceId] },
|
|
181
|
+
submittedAt: now,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
// Free text input — either the input mode accepts it, or we fall back
|
|
185
|
+
const allowsFreeText = request.input.mode === "text" ||
|
|
186
|
+
(request.input.mode === "choice" && request.input.allowFreeText === true);
|
|
187
|
+
if (allowsFreeText || request.input.mode === "form") {
|
|
188
|
+
return {
|
|
189
|
+
requestId: request.requestId,
|
|
190
|
+
sessionId: request.sessionId,
|
|
191
|
+
action: "submit",
|
|
192
|
+
values: { text: trimmed },
|
|
193
|
+
submittedAt: now,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
// Last resort for choice-only: treat as free text anyway since IM has no UI
|
|
197
|
+
return {
|
|
198
|
+
requestId: request.requestId,
|
|
199
|
+
sessionId: request.sessionId,
|
|
200
|
+
action: "submit",
|
|
201
|
+
values: { text: trimmed },
|
|
202
|
+
submittedAt: now,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=hitl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hitl.js","sourceRoot":"","sources":["../../../../shared/src/hitl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @gencode/shared - Shared utilities and types for AIMax packages.
|
|
3
|
+
*/
|
|
4
|
+
export { isAgentDiagnosticEvent } from "./agent-progress.js";
|
|
5
|
+
export { formatTaskForDisplay } from "./task-display.js";
|
|
6
|
+
export type { AgentCustomProgressEvent, AgentModelRequestEvent, AgentDiagnosticEvent, AgentDiagnosticLevel, AgentDiagnosticScope, AgentProgressEvent, AgentProgressEventBase, } from "./agent-progress.js";
|
|
7
|
+
export type { CallbackEventPayload, Channel, RunResultPayload, StreamEnvelope, StreamEventName, } from "./run-events.js";
|
|
8
|
+
export type { SessionMetadata, SessionSummary } from "./session.js";
|
|
9
|
+
export type { CollapseSpan, CompressionLayer, ContextCompactionState, ModelUsageCheckpoint, ReadStateRecord, SessionMemorySnapshot, SessionContextSnapshot, SnipRecord, ToolResultReference, ToolResultBudgetRecord, } from "./context-protocol.js";
|
|
10
|
+
export { MAX_GOAL_OBJECTIVE_CHARS, MAX_GOAL_CONTINUATIONS_PER_RUN } from "./goal.js";
|
|
11
|
+
export type { GoalStatus, ThreadGoal } from "./goal.js";
|
|
12
|
+
export { isHitlPending, isHitlResolved, isHitlExpired, isHitlTool, HITL_TOOL_NAMES, parseMatchedTextToResolution, parseTextToResolution, } from "./hitl.js";
|
|
13
|
+
export type { HitlKind, HitlChoice, HitlChoiceInput, HitlTextInput, HitlFormInput, HitlInputSchema, HitlPreview, HitlPolicy, HitlRequest, HitlResolution, HitlCheckpointPhase, HitlCheckpoint, HitlToolContext, HitlStatus, PausedRunState, HitlHistoryEntry, } from "./hitl.js";
|
|
14
|
+
export { validateUiToolResult } from "./ui-tool.js";
|
|
15
|
+
export type { UiToolExtra, UiToolJsonSchemaProperty, UiToolJsonSchemaType, UiToolOutputSchema, UiToolSchema, UiToolRequest, UiToolResult, UiToolPendingStatus, UiToolPausedState, UiToolValidationError, UiToolValidationResult, } from "./ui-tool.js";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared/src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,oBAAoB,EACpB,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpE,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,WAAW,CAAC;AACrF,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGxD,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,QAAQ,EACR,UAAU,EACV,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,UAAU,EACV,cAAc,EACd,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EACV,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @gencode/shared - Shared utilities and types for AIMax packages.
|
|
3
|
+
*/
|
|
4
|
+
export { isAgentDiagnosticEvent } from "./agent-progress.js";
|
|
5
|
+
export { formatTaskForDisplay } from "./task-display.js";
|
|
6
|
+
// Goal types — thread goal data model
|
|
7
|
+
export { MAX_GOAL_OBJECTIVE_CHARS, MAX_GOAL_CONTINUATIONS_PER_RUN } from "./goal.js";
|
|
8
|
+
// HITL protocol types
|
|
9
|
+
export { isHitlPending, isHitlResolved, isHitlExpired, isHitlTool, HITL_TOOL_NAMES, parseMatchedTextToResolution, parseTextToResolution, } from "./hitl.js";
|
|
10
|
+
// UI Tool protocol types
|
|
11
|
+
export { validateUiToolResult } from "./ui-tool.js";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../shared/src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AA+BzD,sCAAsC;AACtC,OAAO,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,WAAW,CAAC;AAGrF,sBAAsB;AACtB,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAoBnB,yBAAyB;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { AgentProgressEvent } from "./agent-progress.js";
|
|
2
|
+
import type { HitlKind, HitlRequest } from "./hitl.js";
|
|
3
|
+
import type { UiToolExtra, UiToolOutputSchema } from "./ui-tool.js";
|
|
4
|
+
export type Channel = "H5" | "WEB" | "KLPA" | "TASK" | "CRON" | "EIP_ASSISTANT" | (string & {});
|
|
5
|
+
type EventEnvelopeBase = {
|
|
6
|
+
sessionId: string;
|
|
7
|
+
channel: Channel;
|
|
8
|
+
messageId?: string;
|
|
9
|
+
user?: string;
|
|
10
|
+
};
|
|
11
|
+
export type RunResultPayload = {
|
|
12
|
+
text: string;
|
|
13
|
+
usage: {
|
|
14
|
+
input: number;
|
|
15
|
+
output: number;
|
|
16
|
+
total: number;
|
|
17
|
+
};
|
|
18
|
+
durationMs: number;
|
|
19
|
+
error?: string;
|
|
20
|
+
paused?: {
|
|
21
|
+
requestId: string;
|
|
22
|
+
kind: HitlKind;
|
|
23
|
+
title: string;
|
|
24
|
+
};
|
|
25
|
+
uiToolPending?: {
|
|
26
|
+
requestId: string;
|
|
27
|
+
toolName: string;
|
|
28
|
+
toolCallId: string;
|
|
29
|
+
outputSchema: UiToolOutputSchema;
|
|
30
|
+
extra?: UiToolExtra;
|
|
31
|
+
};
|
|
32
|
+
context?: {
|
|
33
|
+
snapshotPath: string;
|
|
34
|
+
toolResultsDir: string;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export type CallbackEventPayload = (EventEnvelopeBase & {
|
|
38
|
+
type: "start";
|
|
39
|
+
message: string;
|
|
40
|
+
}) | (EventEnvelopeBase & {
|
|
41
|
+
type: "progress";
|
|
42
|
+
event: AgentProgressEvent;
|
|
43
|
+
}) | (EventEnvelopeBase & {
|
|
44
|
+
type: "done";
|
|
45
|
+
result: RunResultPayload;
|
|
46
|
+
}) | (EventEnvelopeBase & {
|
|
47
|
+
type: "error";
|
|
48
|
+
message: string;
|
|
49
|
+
}) | {
|
|
50
|
+
sessionId: string;
|
|
51
|
+
channel: Channel;
|
|
52
|
+
messageId?: string;
|
|
53
|
+
user?: string;
|
|
54
|
+
type: "session_reset";
|
|
55
|
+
action: "new" | "reset";
|
|
56
|
+
previousSessionId?: string;
|
|
57
|
+
message: string;
|
|
58
|
+
} | {
|
|
59
|
+
sessionId: string;
|
|
60
|
+
channel: Channel;
|
|
61
|
+
messageId?: string;
|
|
62
|
+
user?: string;
|
|
63
|
+
type: "hitl";
|
|
64
|
+
request: HitlRequest;
|
|
65
|
+
} | (EventEnvelopeBase & {
|
|
66
|
+
type: "title_updated";
|
|
67
|
+
title: string;
|
|
68
|
+
});
|
|
69
|
+
export type StreamEventName = "start" | "text" | "progress" | "done" | "error" | "hitl" | "title_updated";
|
|
70
|
+
export type StreamEnvelope = {
|
|
71
|
+
type: "start";
|
|
72
|
+
sessionId: string;
|
|
73
|
+
messageId?: string;
|
|
74
|
+
channel: Channel;
|
|
75
|
+
user?: string;
|
|
76
|
+
timestamp: string;
|
|
77
|
+
message: string;
|
|
78
|
+
} | {
|
|
79
|
+
type: "text";
|
|
80
|
+
sessionId: string;
|
|
81
|
+
messageId?: string;
|
|
82
|
+
channel: Channel;
|
|
83
|
+
user?: string;
|
|
84
|
+
timestamp: string;
|
|
85
|
+
sequence: number;
|
|
86
|
+
delta: string;
|
|
87
|
+
} | {
|
|
88
|
+
type: "progress";
|
|
89
|
+
sessionId: string;
|
|
90
|
+
messageId?: string;
|
|
91
|
+
channel: Channel;
|
|
92
|
+
user?: string;
|
|
93
|
+
timestamp: string;
|
|
94
|
+
event: AgentProgressEvent;
|
|
95
|
+
} | {
|
|
96
|
+
type: "done";
|
|
97
|
+
sessionId: string;
|
|
98
|
+
messageId?: string;
|
|
99
|
+
channel: Channel;
|
|
100
|
+
user?: string;
|
|
101
|
+
timestamp: string;
|
|
102
|
+
result: RunResultPayload;
|
|
103
|
+
} | {
|
|
104
|
+
type: "error";
|
|
105
|
+
sessionId: string;
|
|
106
|
+
messageId?: string;
|
|
107
|
+
channel: Channel;
|
|
108
|
+
user?: string;
|
|
109
|
+
timestamp: string;
|
|
110
|
+
message: string;
|
|
111
|
+
} | {
|
|
112
|
+
type: "hitl";
|
|
113
|
+
sessionId: string;
|
|
114
|
+
messageId?: string;
|
|
115
|
+
channel: Channel;
|
|
116
|
+
user?: string;
|
|
117
|
+
timestamp: string;
|
|
118
|
+
request: HitlRequest;
|
|
119
|
+
} | {
|
|
120
|
+
type: "title_updated";
|
|
121
|
+
sessionId: string;
|
|
122
|
+
messageId?: string;
|
|
123
|
+
channel: Channel;
|
|
124
|
+
user?: string;
|
|
125
|
+
timestamp: string;
|
|
126
|
+
title: string;
|
|
127
|
+
};
|
|
128
|
+
export {};
|
|
129
|
+
//# sourceMappingURL=run-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-events.d.ts","sourceRoot":"","sources":["../../../../shared/src/run-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-events.js","sourceRoot":"","sources":["../../../../shared/src/run-events.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Channel } from "./run-events.js";
|
|
2
|
+
import type { GoalStatus } from "./goal.js";
|
|
3
|
+
/**
|
|
4
|
+
* Stable cross-package session summary shape.
|
|
5
|
+
*
|
|
6
|
+
* This type is intended for list / query / display scenarios shared across
|
|
7
|
+
* packages such as agents, cli, and future web integrations.
|
|
8
|
+
*
|
|
9
|
+
* Includes optional `goalStatus` mirror so that `sessions list` can display
|
|
10
|
+
* a GOAL column without reading every `goal.json` file.
|
|
11
|
+
*/
|
|
12
|
+
export type SessionSummary = {
|
|
13
|
+
id: string;
|
|
14
|
+
title: string;
|
|
15
|
+
channel: Channel;
|
|
16
|
+
createdAt: string;
|
|
17
|
+
updatedAt: string;
|
|
18
|
+
goalStatus?: GoalStatus | null;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Stable cross-package session metadata record.
|
|
22
|
+
*
|
|
23
|
+
* This type represents the canonical persisted metadata envelope for a session
|
|
24
|
+
* without including transcript, context snapshot, or export-specific payloads.
|
|
25
|
+
*
|
|
26
|
+
* The `goalStatus` field is a **mirror** (not source of truth) of the active
|
|
27
|
+
* goal status stored in `goal.json`. It is kept in sync by the goal-store.
|
|
28
|
+
*/
|
|
29
|
+
export type SessionMetadata = {
|
|
30
|
+
id: string;
|
|
31
|
+
title: string;
|
|
32
|
+
channel: Channel;
|
|
33
|
+
createdAt: string;
|
|
34
|
+
updatedAt: string;
|
|
35
|
+
goalStatus?: GoalStatus | null;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../shared/src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../shared/src/session.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-display.d.ts","sourceRoot":"","sources":["../../../../shared/src/task-display.ts"],"names":[],"mappings":"AAkCA,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWzD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
function isRecord(value) {
|
|
2
|
+
return typeof value === "object" && value !== null;
|
|
3
|
+
}
|
|
4
|
+
function firstStructuredUserText(value) {
|
|
5
|
+
const messages = Array.isArray(value) ? value : [value];
|
|
6
|
+
for (const message of messages) {
|
|
7
|
+
if (!isRecord(message) || message.role !== "user") {
|
|
8
|
+
continue;
|
|
9
|
+
}
|
|
10
|
+
if (typeof message.content === "string") {
|
|
11
|
+
const text = message.content.trim();
|
|
12
|
+
return text || null;
|
|
13
|
+
}
|
|
14
|
+
if (!Array.isArray(message.content)) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
for (const block of message.content) {
|
|
18
|
+
if (isRecord(block) && block.type === "text" && typeof block.text === "string") {
|
|
19
|
+
const text = block.text.trim();
|
|
20
|
+
if (text) {
|
|
21
|
+
return text;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
/** Returns a user-readable task label for progress and subagent completion messages. */
|
|
29
|
+
export function formatTaskForDisplay(task) {
|
|
30
|
+
const trimmed = task.trim();
|
|
31
|
+
if (!trimmed) {
|
|
32
|
+
return task;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
return firstStructuredUserText(JSON.parse(trimmed)) ?? task;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return task;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=task-display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-display.js","sourceRoot":"","sources":["../../../../shared/src/task-display.ts"],"names":[],"mappings":"AAAA,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAExD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAClD,SAAS;QACX,CAAC;QAED,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpC,OAAO,IAAI,IAAI,IAAI,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,SAAS;QACX,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC/B,IAAI,IAAI,EAAE,CAAC;oBACT,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI Tool protocol types for AIMax.
|
|
3
|
+
*
|
|
4
|
+
* UI Tools are a special category of agent tools that, when invoked by the LLM,
|
|
5
|
+
* immediately pause the agent loop and request structured user input through
|
|
6
|
+
* a front-end rendered form.
|
|
7
|
+
*/
|
|
8
|
+
export type UiToolJsonSchemaType = "string" | "number" | "integer" | "boolean" | "array" | "object";
|
|
9
|
+
export type UiToolPrimitiveSchema = {
|
|
10
|
+
type?: "string" | "number" | "integer" | "boolean";
|
|
11
|
+
title?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
default?: unknown;
|
|
14
|
+
enum?: unknown[];
|
|
15
|
+
format?: string;
|
|
16
|
+
minLength?: number;
|
|
17
|
+
maxLength?: number;
|
|
18
|
+
minimum?: number;
|
|
19
|
+
maximum?: number;
|
|
20
|
+
pattern?: string;
|
|
21
|
+
};
|
|
22
|
+
export type UiToolArraySchema = {
|
|
23
|
+
type: "array";
|
|
24
|
+
title?: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
default?: unknown;
|
|
27
|
+
items?: UiToolJsonSchemaProperty;
|
|
28
|
+
minItems?: number;
|
|
29
|
+
maxItems?: number;
|
|
30
|
+
uniqueItems?: boolean;
|
|
31
|
+
};
|
|
32
|
+
export type UiToolObjectSchema = {
|
|
33
|
+
type: "object";
|
|
34
|
+
title?: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
properties?: Record<string, UiToolJsonSchemaProperty>;
|
|
37
|
+
required?: string[];
|
|
38
|
+
additionalProperties?: boolean;
|
|
39
|
+
};
|
|
40
|
+
export type UiToolJsonSchemaProperty = UiToolPrimitiveSchema | UiToolArraySchema | UiToolObjectSchema;
|
|
41
|
+
/** Describes the full form that the front-end should render. */
|
|
42
|
+
export type UiToolOutputSchema = {
|
|
43
|
+
type: "object";
|
|
44
|
+
title: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
properties: Record<string, UiToolJsonSchemaProperty>;
|
|
47
|
+
required?: string[];
|
|
48
|
+
additionalProperties?: boolean;
|
|
49
|
+
};
|
|
50
|
+
/** Backward-compatible alias for the UI form schema shape. */
|
|
51
|
+
export type UiToolSchema = UiToolOutputSchema;
|
|
52
|
+
/** Optional JSON-safe payload for custom front-end rendering hints. */
|
|
53
|
+
export type UiToolExtra = Record<string, unknown>;
|
|
54
|
+
/** Emitted as a progress event when a UI tool is invoked. */
|
|
55
|
+
export type UiToolRequest = {
|
|
56
|
+
requestId: string;
|
|
57
|
+
sessionId: string;
|
|
58
|
+
toolName: string;
|
|
59
|
+
toolCallId: string;
|
|
60
|
+
outputSchema: UiToolOutputSchema;
|
|
61
|
+
extra?: UiToolExtra;
|
|
62
|
+
createdAt: string;
|
|
63
|
+
};
|
|
64
|
+
/** User-submitted result for a UI tool request. */
|
|
65
|
+
export type UiToolResult = {
|
|
66
|
+
requestId: string;
|
|
67
|
+
sessionId: string;
|
|
68
|
+
toolCallId: string;
|
|
69
|
+
toolName: string;
|
|
70
|
+
values: Record<string, unknown>;
|
|
71
|
+
submittedAt: string;
|
|
72
|
+
};
|
|
73
|
+
export type UiToolPendingStatus = "pending" | "resolved";
|
|
74
|
+
export type UiToolPausedState = {
|
|
75
|
+
version: 1;
|
|
76
|
+
sessionId: string;
|
|
77
|
+
request: UiToolRequest;
|
|
78
|
+
status: UiToolPendingStatus;
|
|
79
|
+
result?: UiToolResult;
|
|
80
|
+
createdAt: string;
|
|
81
|
+
updatedAt: string;
|
|
82
|
+
};
|
|
83
|
+
export type UiToolValidationError = {
|
|
84
|
+
field: string;
|
|
85
|
+
message: string;
|
|
86
|
+
};
|
|
87
|
+
export type UiToolValidationResult = {
|
|
88
|
+
valid: true;
|
|
89
|
+
} | {
|
|
90
|
+
valid: false;
|
|
91
|
+
errors: UiToolValidationError[];
|
|
92
|
+
};
|
|
93
|
+
export declare function validateUiToolResult(schema: UiToolSchema, values: Record<string, unknown>): UiToolValidationResult;
|
|
94
|
+
//# sourceMappingURL=ui-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-tool.d.ts","sourceRoot":"","sources":["../../../../shared/src/ui-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as Ajv from "ajv";
|
|
2
|
+
const AjvConstructor = Ajv.default;
|
|
3
|
+
const ajv = new AjvConstructor({ allErrors: true, strict: false });
|
|
4
|
+
const schemaCache = new Map();
|
|
5
|
+
function compileSchema(schema, cacheKey) {
|
|
6
|
+
const cached = schemaCache.get(cacheKey);
|
|
7
|
+
if (cached) {
|
|
8
|
+
return cached;
|
|
9
|
+
}
|
|
10
|
+
const compiled = ajv.compile(schema);
|
|
11
|
+
schemaCache.set(cacheKey, compiled);
|
|
12
|
+
return compiled;
|
|
13
|
+
}
|
|
14
|
+
function toFieldName(instancePath) {
|
|
15
|
+
if (!instancePath) {
|
|
16
|
+
return "/";
|
|
17
|
+
}
|
|
18
|
+
const segments = instancePath.split("/").filter(Boolean);
|
|
19
|
+
return segments.length === 0 ? "/" : segments[segments.length - 1] ?? "/";
|
|
20
|
+
}
|
|
21
|
+
export function validateUiToolResult(schema, values) {
|
|
22
|
+
const cacheKey = JSON.stringify(schema);
|
|
23
|
+
const validate = compileSchema(schema, cacheKey);
|
|
24
|
+
const valid = validate(values);
|
|
25
|
+
if (valid) {
|
|
26
|
+
return { valid: true };
|
|
27
|
+
}
|
|
28
|
+
const errors = (validate.errors ?? []).map((error) => {
|
|
29
|
+
const field = error.keyword === "required"
|
|
30
|
+
? String(error.params.missingProperty ?? "/")
|
|
31
|
+
: toFieldName(error.instancePath);
|
|
32
|
+
return {
|
|
33
|
+
field,
|
|
34
|
+
message: error.message ?? "invalid",
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
return { valid: false, errors };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=ui-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-tool.js","sourceRoot":"","sources":["../../../../shared/src/ui-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAyH3B,MAAM,cAAc,GAAG,GAAG,CAAC,OAK1B,CAAC;AAEF,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAgC,CAAC;AAE5D,SAAS,aAAa,CAAC,MAAoB,EAAE,QAAgB;IAC3D,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAAC,YAAoB;IACvC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAoB,EACpB,MAA+B;IAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE/B,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAkB,EAAE,EAAE;QAChE,MAAM,KAAK,GACT,KAAK,CAAC,OAAO,KAAK,UAAU;YAC1B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,IAAI,GAAG,CAAC;YAC7C,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEtC,OAAO;YACL,KAAK;YACL,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS;SACpC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC"}
|