@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.
Files changed (147) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +50 -0
  3. package/dist/shared/src/agent-progress.d.ts +133 -0
  4. package/dist/shared/src/agent-progress.d.ts.map +1 -0
  5. package/dist/shared/src/agent-progress.js +4 -0
  6. package/dist/shared/src/agent-progress.js.map +1 -0
  7. package/dist/shared/src/context-protocol.d.ts +83 -0
  8. package/dist/shared/src/context-protocol.d.ts.map +1 -0
  9. package/dist/shared/src/context-protocol.js +2 -0
  10. package/dist/shared/src/context-protocol.js.map +1 -0
  11. package/dist/shared/src/goal.d.ts +50 -0
  12. package/dist/shared/src/goal.d.ts.map +1 -0
  13. package/dist/shared/src/goal.js +11 -0
  14. package/dist/shared/src/goal.js.map +1 -0
  15. package/dist/shared/src/hitl.d.ts +214 -0
  16. package/dist/shared/src/hitl.d.ts.map +1 -0
  17. package/dist/shared/src/hitl.js +205 -0
  18. package/dist/shared/src/hitl.js.map +1 -0
  19. package/dist/shared/src/index.d.ts +16 -0
  20. package/dist/shared/src/index.d.ts.map +1 -0
  21. package/dist/shared/src/index.js +12 -0
  22. package/dist/shared/src/index.js.map +1 -0
  23. package/dist/shared/src/run-events.d.ts +129 -0
  24. package/dist/shared/src/run-events.d.ts.map +1 -0
  25. package/dist/shared/src/run-events.js +2 -0
  26. package/dist/shared/src/run-events.js.map +1 -0
  27. package/dist/shared/src/session.d.ts +37 -0
  28. package/dist/shared/src/session.d.ts.map +1 -0
  29. package/dist/shared/src/session.js +2 -0
  30. package/dist/shared/src/session.js.map +1 -0
  31. package/dist/shared/src/task-display.d.ts +3 -0
  32. package/dist/shared/src/task-display.d.ts.map +1 -0
  33. package/dist/shared/src/task-display.js +41 -0
  34. package/dist/shared/src/task-display.js.map +1 -0
  35. package/dist/shared/src/ui-tool.d.ts +94 -0
  36. package/dist/shared/src/ui-tool.d.ts.map +1 -0
  37. package/dist/shared/src/ui-tool.js +39 -0
  38. package/dist/shared/src/ui-tool.js.map +1 -0
  39. package/dist/uni/src/auth/api-key.d.ts +3 -0
  40. package/dist/uni/src/auth/api-key.d.ts.map +1 -0
  41. package/dist/uni/src/auth/api-key.js +8 -0
  42. package/dist/uni/src/auth/api-key.js.map +1 -0
  43. package/dist/uni/src/bin.d.ts +3 -0
  44. package/dist/uni/src/bin.d.ts.map +1 -0
  45. package/dist/uni/src/bin.js +4 -0
  46. package/dist/uni/src/bin.js.map +1 -0
  47. package/dist/uni/src/events/normalizer.d.ts +4 -0
  48. package/dist/uni/src/events/normalizer.d.ts.map +1 -0
  49. package/dist/uni/src/events/normalizer.js +72 -0
  50. package/dist/uni/src/events/normalizer.js.map +1 -0
  51. package/dist/uni/src/events/provider-events.d.ts +8 -0
  52. package/dist/uni/src/events/provider-events.d.ts.map +1 -0
  53. package/dist/uni/src/events/provider-events.js +317 -0
  54. package/dist/uni/src/events/provider-events.js.map +1 -0
  55. package/dist/uni/src/hooks.d.ts +8 -0
  56. package/dist/uni/src/hooks.d.ts.map +1 -0
  57. package/dist/uni/src/hooks.js +13 -0
  58. package/dist/uni/src/hooks.js.map +1 -0
  59. package/dist/uni/src/index.d.ts +10 -0
  60. package/dist/uni/src/index.d.ts.map +1 -0
  61. package/dist/uni/src/index.js +8 -0
  62. package/dist/uni/src/index.js.map +1 -0
  63. package/dist/uni/src/program.d.ts +3 -0
  64. package/dist/uni/src/program.d.ts.map +1 -0
  65. package/dist/uni/src/program.js +140 -0
  66. package/dist/uni/src/program.js.map +1 -0
  67. package/dist/uni/src/providers/acp.d.ts +3 -0
  68. package/dist/uni/src/providers/acp.d.ts.map +1 -0
  69. package/dist/uni/src/providers/acp.js +33 -0
  70. package/dist/uni/src/providers/acp.js.map +1 -0
  71. package/dist/uni/src/providers/claude-code.d.ts +3 -0
  72. package/dist/uni/src/providers/claude-code.d.ts.map +1 -0
  73. package/dist/uni/src/providers/claude-code.js +87 -0
  74. package/dist/uni/src/providers/claude-code.js.map +1 -0
  75. package/dist/uni/src/providers/codex.d.ts +3 -0
  76. package/dist/uni/src/providers/codex.d.ts.map +1 -0
  77. package/dist/uni/src/providers/codex.js +71 -0
  78. package/dist/uni/src/providers/codex.js.map +1 -0
  79. package/dist/uni/src/providers/opencode.d.ts +3 -0
  80. package/dist/uni/src/providers/opencode.d.ts.map +1 -0
  81. package/dist/uni/src/providers/opencode.js +47 -0
  82. package/dist/uni/src/providers/opencode.js.map +1 -0
  83. package/dist/uni/src/providers/pi.d.ts +3 -0
  84. package/dist/uni/src/providers/pi.d.ts.map +1 -0
  85. package/dist/uni/src/providers/pi.js +42 -0
  86. package/dist/uni/src/providers/pi.js.map +1 -0
  87. package/dist/uni/src/providers/registry.d.ts +3 -0
  88. package/dist/uni/src/providers/registry.d.ts.map +1 -0
  89. package/dist/uni/src/providers/registry.js +25 -0
  90. package/dist/uni/src/providers/registry.js.map +1 -0
  91. package/dist/uni/src/providers/spawned-provider.d.ts +22 -0
  92. package/dist/uni/src/providers/spawned-provider.d.ts.map +1 -0
  93. package/dist/uni/src/providers/spawned-provider.js +109 -0
  94. package/dist/uni/src/providers/spawned-provider.js.map +1 -0
  95. package/dist/uni/src/providers/types.d.ts +6 -0
  96. package/dist/uni/src/providers/types.d.ts.map +1 -0
  97. package/dist/uni/src/providers/types.js +2 -0
  98. package/dist/uni/src/providers/types.js.map +1 -0
  99. package/dist/uni/src/run.d.ts +3 -0
  100. package/dist/uni/src/run.d.ts.map +1 -0
  101. package/dist/uni/src/run.js +446 -0
  102. package/dist/uni/src/run.js.map +1 -0
  103. package/dist/uni/src/runtime-config.d.ts +40 -0
  104. package/dist/uni/src/runtime-config.d.ts.map +1 -0
  105. package/dist/uni/src/runtime-config.js +203 -0
  106. package/dist/uni/src/runtime-config.js.map +1 -0
  107. package/dist/uni/src/session/input.d.ts +3 -0
  108. package/dist/uni/src/session/input.d.ts.map +1 -0
  109. package/dist/uni/src/session/input.js +147 -0
  110. package/dist/uni/src/session/input.js.map +1 -0
  111. package/dist/uni/src/session/logger.d.ts +16 -0
  112. package/dist/uni/src/session/logger.d.ts.map +1 -0
  113. package/dist/uni/src/session/logger.js +66 -0
  114. package/dist/uni/src/session/logger.js.map +1 -0
  115. package/dist/uni/src/session/session-state.d.ts +19 -0
  116. package/dist/uni/src/session/session-state.d.ts.map +1 -0
  117. package/dist/uni/src/session/session-state.js +13 -0
  118. package/dist/uni/src/session/session-state.js.map +1 -0
  119. package/dist/uni/src/session/session-store.d.ts +23 -0
  120. package/dist/uni/src/session/session-store.d.ts.map +1 -0
  121. package/dist/uni/src/session/session-store.js +36 -0
  122. package/dist/uni/src/session/session-store.js.map +1 -0
  123. package/dist/uni/src/transports/composite-sink.d.ts +9 -0
  124. package/dist/uni/src/transports/composite-sink.d.ts.map +1 -0
  125. package/dist/uni/src/transports/composite-sink.js +17 -0
  126. package/dist/uni/src/transports/composite-sink.js.map +1 -0
  127. package/dist/uni/src/transports/event-sink.d.ts +6 -0
  128. package/dist/uni/src/transports/event-sink.d.ts.map +1 -0
  129. package/dist/uni/src/transports/event-sink.js +2 -0
  130. package/dist/uni/src/transports/event-sink.js.map +1 -0
  131. package/dist/uni/src/transports/http-callback-sink.d.ts +9 -0
  132. package/dist/uni/src/transports/http-callback-sink.d.ts.map +1 -0
  133. package/dist/uni/src/transports/http-callback-sink.js +20 -0
  134. package/dist/uni/src/transports/http-callback-sink.js.map +1 -0
  135. package/dist/uni/src/transports/websocket-auth.d.ts +8 -0
  136. package/dist/uni/src/transports/websocket-auth.d.ts.map +1 -0
  137. package/dist/uni/src/transports/websocket-auth.js +9 -0
  138. package/dist/uni/src/transports/websocket-auth.js.map +1 -0
  139. package/dist/uni/src/transports/websocket-sink.d.ts +24 -0
  140. package/dist/uni/src/transports/websocket-sink.d.ts.map +1 -0
  141. package/dist/uni/src/transports/websocket-sink.js +205 -0
  142. package/dist/uni/src/transports/websocket-sink.js.map +1 -0
  143. package/dist/uni/src/types.d.ts +239 -0
  144. package/dist/uni/src/types.d.ts.map +1 -0
  145. package/dist/uni/src/types.js +2 -0
  146. package/dist/uni/src/types.js.map +1 -0
  147. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=run-events.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../shared/src/session.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ /** Returns a user-readable task label for progress and subagent completion messages. */
2
+ export declare function formatTaskForDisplay(task: string): string;
3
+ //# sourceMappingURL=task-display.d.ts.map
@@ -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"}
@@ -0,0 +1,3 @@
1
+ export declare function encryptWithSM4(ticket: string): string;
2
+ export declare function generateApiKey(ticket: string): string;
3
+ //# sourceMappingURL=api-key.d.ts.map