@nuvin/session 0.3.0-rc.4 → 0.3.0-rc.6
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/dist/chunk-2CZWHODV.js +204 -0
- package/dist/{chunk-UKDIV6I5.js → chunk-2IGB2A4W.js} +89 -5
- package/dist/{chunk-5XT7AOI2.js → chunk-MKPANFIF.js} +1 -1
- package/dist/{chunk-4UBSHJWS.js → chunk-NDRIMBWT.js} +2 -0
- package/dist/client/data-client.d.ts +2 -0
- package/dist/client/data-client.d.ts.map +1 -1
- package/dist/client/http-data-client.d.ts.map +1 -1
- package/dist/client/index.js +44 -8
- package/dist/client/session-client.d.ts +13 -2
- package/dist/client/session-client.d.ts.map +1 -1
- package/dist/controller/index.js +40 -5
- package/dist/controller/session-controller.d.ts +10 -1
- package/dist/controller/session-controller.d.ts.map +1 -1
- package/dist/grant/index.js +2 -2
- package/dist/protocol/background-work.d.ts +26 -0
- package/dist/protocol/background-work.d.ts.map +1 -0
- package/dist/protocol/data-rpc.d.ts +2 -0
- package/dist/protocol/data-rpc.d.ts.map +1 -1
- package/dist/protocol/index.d.ts +2 -0
- package/dist/protocol/index.d.ts.map +1 -1
- package/dist/protocol/index.js +17 -5
- package/dist/protocol/types.d.ts +88 -13
- package/dist/protocol/types.d.ts.map +1 -1
- package/dist/protocol/version.d.ts +1 -1
- package/dist/state/display-text.d.ts +13 -1
- package/dist/state/display-text.d.ts.map +1 -1
- package/dist/state/index.d.ts +1 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +13 -1
- package/dist/state/messages.d.ts +20 -2
- package/dist/state/messages.d.ts.map +1 -1
- package/dist/state/session.d.ts.map +1 -1
- package/dist/state/subagent-report.d.ts +42 -0
- package/dist/state/subagent-report.d.ts.map +1 -0
- package/dist/test-utils/index.js +4 -4
- package/package.json +2 -2
- package/dist/chunk-6QNR3TBF.js +0 -6
- /package/dist/{chunk-7LEIACBZ.js → chunk-5PHEC5GZ.js} +0 -0
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
// src/protocol/background-work.ts
|
|
2
|
+
var BACKGROUND_WORK_PROTOCOL_LIMITS = Object.freeze({
|
|
3
|
+
idChars: 128,
|
|
4
|
+
kindChars: 64,
|
|
5
|
+
errorCodeChars: 64,
|
|
6
|
+
labelChars: 256,
|
|
7
|
+
descriptionChars: 256,
|
|
8
|
+
commandPreviewChars: 512,
|
|
9
|
+
cwdChars: 4096,
|
|
10
|
+
resultSummaryBytes: 16 * 1024,
|
|
11
|
+
resultSummaryDepth: 8,
|
|
12
|
+
cursorChars: 512,
|
|
13
|
+
pageItems: 100,
|
|
14
|
+
remoteOutputChars: 65536
|
|
15
|
+
});
|
|
16
|
+
function truncateBackgroundWorkText(value, maximum) {
|
|
17
|
+
if (value.length <= maximum) return value;
|
|
18
|
+
let end = 0;
|
|
19
|
+
for (const codePoint of value) {
|
|
20
|
+
if (end + codePoint.length > maximum) break;
|
|
21
|
+
end += codePoint.length;
|
|
22
|
+
}
|
|
23
|
+
return value.slice(0, end);
|
|
24
|
+
}
|
|
25
|
+
var textEncoder = new TextEncoder();
|
|
26
|
+
var BackgroundWorkResultValidationError = class extends Error {
|
|
27
|
+
constructor() {
|
|
28
|
+
super("Invalid managed work result.");
|
|
29
|
+
this.name = "BackgroundWorkResultValidationError";
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
function invalidResult() {
|
|
33
|
+
throw new BackgroundWorkResultValidationError();
|
|
34
|
+
}
|
|
35
|
+
function isRecord(value) {
|
|
36
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
37
|
+
}
|
|
38
|
+
function isBoundedString(value, maximum, allowEmpty = false) {
|
|
39
|
+
return typeof value === "string" && (allowEmpty || value.length > 0) && value.length <= maximum;
|
|
40
|
+
}
|
|
41
|
+
function isFiniteTime(value) {
|
|
42
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
43
|
+
}
|
|
44
|
+
function isAttemptState(value) {
|
|
45
|
+
return value === "queued" || value === "running" || value === "succeeded" || value === "failed" || value === "cancelled" || value === "abandoned";
|
|
46
|
+
}
|
|
47
|
+
function isDataOnlyJsonValue(value, depth = 1, ancestors = /* @__PURE__ */ new Set()) {
|
|
48
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") return true;
|
|
49
|
+
if (typeof value === "number") return Number.isFinite(value);
|
|
50
|
+
if (typeof value !== "object" || depth > BACKGROUND_WORK_PROTOCOL_LIMITS.resultSummaryDepth) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
if (ancestors.has(value)) return false;
|
|
54
|
+
ancestors.add(value);
|
|
55
|
+
try {
|
|
56
|
+
if (Array.isArray(value)) {
|
|
57
|
+
const keys = Reflect.ownKeys(value);
|
|
58
|
+
if (keys.length !== value.length + 1 || !keys.includes("length")) return false;
|
|
59
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
60
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
|
|
61
|
+
if (descriptor === void 0 || !Object.hasOwn(descriptor, "value") || descriptor.enumerable !== true || !isDataOnlyJsonValue(descriptor.value, depth + 1, ancestors)) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
const prototype = Object.getPrototypeOf(value);
|
|
68
|
+
if (prototype !== Object.prototype && prototype !== null) return false;
|
|
69
|
+
for (const key of Reflect.ownKeys(value)) {
|
|
70
|
+
if (typeof key !== "string") return false;
|
|
71
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
72
|
+
if (descriptor === void 0 || !Object.hasOwn(descriptor, "value") || descriptor.enumerable !== true || !isDataOnlyJsonValue(descriptor.value, depth + 1, ancestors)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return true;
|
|
77
|
+
} finally {
|
|
78
|
+
ancestors.delete(value);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function serializedBytes(value) {
|
|
82
|
+
return textEncoder.encode(JSON.stringify(value)).length;
|
|
83
|
+
}
|
|
84
|
+
function hasBoundedMetadataFields(value, allowOutput) {
|
|
85
|
+
if (value.description !== void 0 && !isBoundedString(
|
|
86
|
+
value.description,
|
|
87
|
+
BACKGROUND_WORK_PROTOCOL_LIMITS.descriptionChars,
|
|
88
|
+
true
|
|
89
|
+
) || value.commandPreview !== void 0 && !isBoundedString(
|
|
90
|
+
value.commandPreview,
|
|
91
|
+
BACKGROUND_WORK_PROTOCOL_LIMITS.commandPreviewChars,
|
|
92
|
+
true
|
|
93
|
+
) || value.cwd !== void 0 && !isBoundedString(value.cwd, BACKGROUND_WORK_PROTOCOL_LIMITS.cwdChars, true) || value.errorCode !== void 0 && !isBoundedString(value.errorCode, BACKGROUND_WORK_PROTOCOL_LIMITS.errorCodeChars)) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
if (value.output === void 0) return true;
|
|
97
|
+
return allowOutput && typeof value.output === "string" && value.output.length <= BACKGROUND_WORK_PROTOCOL_LIMITS.remoteOutputChars;
|
|
98
|
+
}
|
|
99
|
+
function parseBoundedJsonObject(value, allowOutput) {
|
|
100
|
+
if (!isRecord(value) || !isDataOnlyJsonValue(value) || !hasBoundedMetadataFields(value, allowOutput)) {
|
|
101
|
+
return invalidResult();
|
|
102
|
+
}
|
|
103
|
+
const serialized = JSON.stringify(value);
|
|
104
|
+
const cloned = JSON.parse(serialized);
|
|
105
|
+
const bytesValue = allowOutput && Object.hasOwn(cloned, "output") ? { ...cloned, output: "" } : cloned;
|
|
106
|
+
if (serializedBytes(bytesValue) > BACKGROUND_WORK_PROTOCOL_LIMITS.resultSummaryBytes) {
|
|
107
|
+
return invalidResult();
|
|
108
|
+
}
|
|
109
|
+
return cloned;
|
|
110
|
+
}
|
|
111
|
+
function parseBackgroundWorkSummary(value) {
|
|
112
|
+
if (!isRecord(value) || !isRecord(value.owner)) return invalidResult();
|
|
113
|
+
if (!isBoundedString(value.workId, BACKGROUND_WORK_PROTOCOL_LIMITS.idChars) || !isBoundedString(value.kind, BACKGROUND_WORK_PROTOCOL_LIMITS.kindChars) || !isBoundedString(value.label, BACKGROUND_WORK_PROTOCOL_LIMITS.labelChars) || value.workState !== "open" && value.workState !== "settled" || !isAttemptState(value.latestAttemptState) || !isFiniteTime(value.createdAt) || !isFiniteTime(value.updatedAt) || !isBoundedString(value.owner.profile, BACKGROUND_WORK_PROTOCOL_LIMITS.idChars) || !isBoundedString(value.owner.workspace, BACKGROUND_WORK_PROTOCOL_LIMITS.idChars) || !isBoundedString(value.owner.sessionId, BACKGROUND_WORK_PROTOCOL_LIMITS.idChars) || value.activeAttemptId !== void 0 && !isBoundedString(value.activeAttemptId, BACKGROUND_WORK_PROTOCOL_LIMITS.idChars) || value.sourceToolCallId !== void 0 && !isBoundedString(value.sourceToolCallId, BACKGROUND_WORK_PROTOCOL_LIMITS.idChars)) {
|
|
114
|
+
return invalidResult();
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
workId: value.workId,
|
|
118
|
+
kind: value.kind,
|
|
119
|
+
owner: {
|
|
120
|
+
profile: value.owner.profile,
|
|
121
|
+
workspace: value.owner.workspace,
|
|
122
|
+
sessionId: value.owner.sessionId
|
|
123
|
+
},
|
|
124
|
+
label: value.label,
|
|
125
|
+
workState: value.workState,
|
|
126
|
+
latestAttemptState: value.latestAttemptState,
|
|
127
|
+
createdAt: value.createdAt,
|
|
128
|
+
updatedAt: value.updatedAt,
|
|
129
|
+
...value.activeAttemptId === void 0 ? {} : { activeAttemptId: value.activeAttemptId },
|
|
130
|
+
...value.sourceToolCallId === void 0 ? {} : { sourceToolCallId: value.sourceToolCallId }
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
function isNonNegativeSafeInteger(value) {
|
|
134
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
135
|
+
}
|
|
136
|
+
function parseBackgroundWorkUsage(value) {
|
|
137
|
+
if (!isRecord(value) || !isNonNegativeSafeInteger(value.modelCallCount) || !isNonNegativeSafeInteger(value.totalInputTokens) || !isNonNegativeSafeInteger(value.totalOutputTokens) || !isNonNegativeSafeInteger(value.totalReasoningTokens) || !isNonNegativeSafeInteger(value.totalModelTimeMs) || !isNonNegativeSafeInteger(value.totalCostUsdTicks) || !isNonNegativeSafeInteger(value.pricedModelCallCount) || !isNonNegativeSafeInteger(value.unpricedModelCallCount) || value.totalReportedCostUsdTicks !== void 0 && !isNonNegativeSafeInteger(value.totalReportedCostUsdTicks) || value.totalEstimatedCostUsdTicks !== void 0 && !isNonNegativeSafeInteger(value.totalEstimatedCostUsdTicks)) {
|
|
138
|
+
return invalidResult();
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
modelCallCount: value.modelCallCount,
|
|
142
|
+
totalInputTokens: value.totalInputTokens,
|
|
143
|
+
totalOutputTokens: value.totalOutputTokens,
|
|
144
|
+
totalReasoningTokens: value.totalReasoningTokens,
|
|
145
|
+
totalModelTimeMs: value.totalModelTimeMs,
|
|
146
|
+
totalCostUsdTicks: value.totalCostUsdTicks,
|
|
147
|
+
...value.totalReportedCostUsdTicks === void 0 ? {} : { totalReportedCostUsdTicks: value.totalReportedCostUsdTicks },
|
|
148
|
+
...value.totalEstimatedCostUsdTicks === void 0 ? {} : { totalEstimatedCostUsdTicks: value.totalEstimatedCostUsdTicks },
|
|
149
|
+
pricedModelCallCount: value.pricedModelCallCount,
|
|
150
|
+
unpricedModelCallCount: value.unpricedModelCallCount
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function parseBackgroundWorkPage(value) {
|
|
154
|
+
try {
|
|
155
|
+
if (!isRecord(value) || !Array.isArray(value.items) || value.items.length > BACKGROUND_WORK_PROTOCOL_LIMITS.pageItems || value.nextCursor !== void 0 && !isBoundedString(value.nextCursor, BACKGROUND_WORK_PROTOCOL_LIMITS.cursorChars)) {
|
|
156
|
+
return invalidResult();
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
items: value.items.map(parseBackgroundWorkSummary),
|
|
160
|
+
...value.nextCursor === void 0 ? {} : { nextCursor: value.nextCursor }
|
|
161
|
+
};
|
|
162
|
+
} catch (error) {
|
|
163
|
+
if (error instanceof BackgroundWorkResultValidationError) throw error;
|
|
164
|
+
return invalidResult();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function parseBackgroundWorkInspection(value) {
|
|
168
|
+
try {
|
|
169
|
+
if (!isRecord(value) || !isRecord(value.attempt)) return invalidResult();
|
|
170
|
+
const attempt = value.attempt;
|
|
171
|
+
if (!isBoundedString(attempt.attemptId, BACKGROUND_WORK_PROTOCOL_LIMITS.idChars) || !isAttemptState(attempt.state) || !isFiniteTime(attempt.queuedAt) || attempt.startedAt !== void 0 && !isFiniteTime(attempt.startedAt) || attempt.completedAt !== void 0 && !isFiniteTime(attempt.completedAt) || attempt.errorCode !== void 0 && !isBoundedString(attempt.errorCode, BACKGROUND_WORK_PROTOCOL_LIMITS.errorCodeChars)) {
|
|
172
|
+
return invalidResult();
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
summary: parseBackgroundWorkSummary(value.summary),
|
|
176
|
+
attempt: {
|
|
177
|
+
attemptId: attempt.attemptId,
|
|
178
|
+
state: attempt.state,
|
|
179
|
+
queuedAt: attempt.queuedAt,
|
|
180
|
+
...attempt.startedAt === void 0 ? {} : { startedAt: attempt.startedAt },
|
|
181
|
+
...attempt.completedAt === void 0 ? {} : { completedAt: attempt.completedAt },
|
|
182
|
+
...attempt.usage === void 0 ? {} : { usage: parseBackgroundWorkUsage(attempt.usage) },
|
|
183
|
+
...attempt.resultSummary === void 0 ? {} : { resultSummary: parseBoundedJsonObject(attempt.resultSummary, false) },
|
|
184
|
+
...attempt.errorCode === void 0 ? {} : { errorCode: attempt.errorCode }
|
|
185
|
+
},
|
|
186
|
+
detail: parseBoundedJsonObject(value.detail, true)
|
|
187
|
+
};
|
|
188
|
+
} catch (error) {
|
|
189
|
+
if (error instanceof BackgroundWorkResultValidationError) throw error;
|
|
190
|
+
return invalidResult();
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// src/protocol/version.ts
|
|
195
|
+
var PROTOCOL_VERSION = 57;
|
|
196
|
+
|
|
197
|
+
export {
|
|
198
|
+
BACKGROUND_WORK_PROTOCOL_LIMITS,
|
|
199
|
+
truncateBackgroundWorkText,
|
|
200
|
+
BackgroundWorkResultValidationError,
|
|
201
|
+
parseBackgroundWorkPage,
|
|
202
|
+
parseBackgroundWorkInspection,
|
|
203
|
+
PROTOCOL_VERSION
|
|
204
|
+
};
|
|
@@ -46,11 +46,14 @@ function removeApproval(state, matches) {
|
|
|
46
46
|
|
|
47
47
|
// src/state/display-text.ts
|
|
48
48
|
var DISPLAY_TEXT_MAX_BYTES = 512;
|
|
49
|
+
var MULTILINE_PRESERVED_CONTROLS = /* @__PURE__ */ new Set([9, 10]);
|
|
49
50
|
var textEncoder = new TextEncoder();
|
|
50
51
|
function isControlCodePoint(codePoint) {
|
|
51
52
|
return codePoint <= 31 || codePoint >= 127 && codePoint <= 159;
|
|
52
53
|
}
|
|
53
|
-
function sanitizeBoundedDisplayText(text) {
|
|
54
|
+
function sanitizeBoundedDisplayText(text, options) {
|
|
55
|
+
const maxBytes = options?.maxBytes ?? DISPLAY_TEXT_MAX_BYTES;
|
|
56
|
+
const preserveControlCodePoints = options?.preserveControlCodePoints;
|
|
54
57
|
let output = "";
|
|
55
58
|
let outputBytes = 0;
|
|
56
59
|
let terminalState = "normal";
|
|
@@ -135,14 +138,22 @@ function sanitizeBoundedDisplayText(text) {
|
|
|
135
138
|
}
|
|
136
139
|
continue;
|
|
137
140
|
}
|
|
138
|
-
if (isControlCodePoint(codePoint))
|
|
141
|
+
if (isControlCodePoint(codePoint) && preserveControlCodePoints?.has(codePoint) !== true) {
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
139
144
|
const codePointBytes = textEncoder.encode(codePointText).byteLength;
|
|
140
|
-
if (outputBytes + codePointBytes >
|
|
145
|
+
if (outputBytes + codePointBytes > maxBytes) break;
|
|
141
146
|
output += codePointText;
|
|
142
147
|
outputBytes += codePointBytes;
|
|
143
148
|
}
|
|
144
149
|
return output;
|
|
145
150
|
}
|
|
151
|
+
function sanitizeMultilineDisplayText(text) {
|
|
152
|
+
return sanitizeBoundedDisplayText(text, {
|
|
153
|
+
maxBytes: Number.POSITIVE_INFINITY,
|
|
154
|
+
preserveControlCodePoints: MULTILINE_PRESERVED_CONTROLS
|
|
155
|
+
});
|
|
156
|
+
}
|
|
146
157
|
|
|
147
158
|
// src/state/json.ts
|
|
148
159
|
function asJsonObject(value) {
|
|
@@ -620,6 +631,17 @@ function appendInfoMessage(state, text) {
|
|
|
620
631
|
text
|
|
621
632
|
});
|
|
622
633
|
}
|
|
634
|
+
function appendSubagentReportMessage(state, report) {
|
|
635
|
+
return addMessage(state, {
|
|
636
|
+
id: createMessageId(state),
|
|
637
|
+
role: "subagent-report",
|
|
638
|
+
agentId: report.agentId,
|
|
639
|
+
runId: report.runId,
|
|
640
|
+
status: report.status,
|
|
641
|
+
text: sanitizeMultilineDisplayText(report.body),
|
|
642
|
+
...report.usage === void 0 ? {} : { usage: structuredClone(report.usage) }
|
|
643
|
+
});
|
|
644
|
+
}
|
|
623
645
|
function appendWarningMessage(state, text) {
|
|
624
646
|
return addMessage(state, {
|
|
625
647
|
id: createMessageId(state),
|
|
@@ -832,6 +854,44 @@ function removeQuestion(state, questionId, toolCallPath) {
|
|
|
832
854
|
return pending.length === state.pending.length ? state : { ...state, pending };
|
|
833
855
|
}
|
|
834
856
|
|
|
857
|
+
// src/state/subagent-report.ts
|
|
858
|
+
function parseSubagentReportHeader(text) {
|
|
859
|
+
if (text.length === 0) return void 0;
|
|
860
|
+
const newlineIndex = text.indexOf("\n");
|
|
861
|
+
const firstLine = newlineIndex === -1 ? text : text.slice(0, newlineIndex);
|
|
862
|
+
const match = /^\[subagent (\S+) (\S+) (completed|failed|aborted)\]$/.exec(firstLine);
|
|
863
|
+
if (!match) return void 0;
|
|
864
|
+
return {
|
|
865
|
+
agentId: match[1],
|
|
866
|
+
runId: match[2],
|
|
867
|
+
status: match[3],
|
|
868
|
+
body: newlineIndex === -1 ? "" : text.slice(newlineIndex + 1)
|
|
869
|
+
};
|
|
870
|
+
}
|
|
871
|
+
function resolveSubagentReport(text, meta) {
|
|
872
|
+
const parsed = parseSubagentReportHeader(text);
|
|
873
|
+
if (parsed === void 0) return void 0;
|
|
874
|
+
if (meta === void 0) return parsed;
|
|
875
|
+
if (parsed.agentId !== meta.agentId || parsed.runId !== meta.runId || parsed.status !== meta.status) {
|
|
876
|
+
return void 0;
|
|
877
|
+
}
|
|
878
|
+
return { ...parsed, usage: structuredClone(meta.cumulativeUsage) };
|
|
879
|
+
}
|
|
880
|
+
function splitSanitizableDelivery(text) {
|
|
881
|
+
if (parseSubagentReportHeader(text) === void 0) return void 0;
|
|
882
|
+
const newlineIndex = text.indexOf("\n");
|
|
883
|
+
return {
|
|
884
|
+
headerLine: newlineIndex === -1 ? text : text.slice(0, newlineIndex),
|
|
885
|
+
body: newlineIndex === -1 ? "" : text.slice(newlineIndex + 1)
|
|
886
|
+
};
|
|
887
|
+
}
|
|
888
|
+
function sanitizeCoordinatorDeliveryText(text) {
|
|
889
|
+
const split = splitSanitizableDelivery(text);
|
|
890
|
+
if (split === void 0) return sanitizeBoundedDisplayText(text);
|
|
891
|
+
return `${split.headerLine}
|
|
892
|
+
${sanitizeMultilineDisplayText(split.body)}`;
|
|
893
|
+
}
|
|
894
|
+
|
|
835
895
|
// src/state/workflow-view.ts
|
|
836
896
|
function createWorkflowViewState(runId) {
|
|
837
897
|
return { runId, status: "running", tree: [], counts: {}, tokens: 0, lastSeq: -1, nodeKeys: {} };
|
|
@@ -900,6 +960,15 @@ function cloneMessage(message) {
|
|
|
900
960
|
const { toolCallPath, ...rootMessage } = message;
|
|
901
961
|
return toolCallPath && toolCallPath.length > 0 ? { ...rootMessage, toolCallPath: [...toolCallPath] } : rootMessage;
|
|
902
962
|
}
|
|
963
|
+
function cloneBackgroundWorkSummary(summary) {
|
|
964
|
+
return { ...summary, owner: { ...summary.owner } };
|
|
965
|
+
}
|
|
966
|
+
function cloneBackgroundWorkActive(active) {
|
|
967
|
+
return {
|
|
968
|
+
queued: active.queued.map(cloneBackgroundWorkSummary),
|
|
969
|
+
running: active.running.map(cloneBackgroundWorkSummary)
|
|
970
|
+
};
|
|
971
|
+
}
|
|
903
972
|
function normalizeResetState(state) {
|
|
904
973
|
return {
|
|
905
974
|
...state,
|
|
@@ -907,6 +976,7 @@ function normalizeResetState(state) {
|
|
|
907
976
|
...state.backgroundAgents,
|
|
908
977
|
runningRunIds: [...state.backgroundAgents.runningRunIds]
|
|
909
978
|
},
|
|
979
|
+
backgroundWork: cloneBackgroundWorkActive(state.backgroundWork),
|
|
910
980
|
approval: {
|
|
911
981
|
...state.approval,
|
|
912
982
|
active: state.approval.active ? cloneApproval(state.approval.active) : null,
|
|
@@ -932,6 +1002,7 @@ function createSessionViewState() {
|
|
|
932
1002
|
approval: createApprovalQueueState(),
|
|
933
1003
|
authFlow: null,
|
|
934
1004
|
backgroundAgents: { running: 0, queued: 0, runningRunIds: [] },
|
|
1005
|
+
backgroundWork: { queued: [], running: [] },
|
|
935
1006
|
busy: false,
|
|
936
1007
|
mcp: { revision: 0, servers: [] },
|
|
937
1008
|
messages: createMessageState(),
|
|
@@ -1034,8 +1105,15 @@ function reduceSessionEvent(state, event) {
|
|
|
1034
1105
|
runningRunIds: [...event.runningRunIds]
|
|
1035
1106
|
}
|
|
1036
1107
|
};
|
|
1037
|
-
case "
|
|
1038
|
-
return { ...state,
|
|
1108
|
+
case "background-work-active":
|
|
1109
|
+
return { ...state, backgroundWork: cloneBackgroundWorkActive(event.active) };
|
|
1110
|
+
case "info": {
|
|
1111
|
+
const report = resolveSubagentReport(event.message, event.subagentReport);
|
|
1112
|
+
return {
|
|
1113
|
+
...state,
|
|
1114
|
+
messages: report ? appendSubagentReportMessage(state.messages, report) : appendInfoMessage(state.messages, event.message)
|
|
1115
|
+
};
|
|
1116
|
+
}
|
|
1039
1117
|
case "error":
|
|
1040
1118
|
return {
|
|
1041
1119
|
...state,
|
|
@@ -1075,6 +1153,7 @@ export {
|
|
|
1075
1153
|
removeApproval,
|
|
1076
1154
|
DISPLAY_TEXT_MAX_BYTES,
|
|
1077
1155
|
sanitizeBoundedDisplayText,
|
|
1156
|
+
sanitizeMultilineDisplayText,
|
|
1078
1157
|
asJsonObject,
|
|
1079
1158
|
scopedToolKey,
|
|
1080
1159
|
isProviderRetryMessage,
|
|
@@ -1088,11 +1167,16 @@ export {
|
|
|
1088
1167
|
appendUserMessage,
|
|
1089
1168
|
appendErrorMessage,
|
|
1090
1169
|
appendInfoMessage,
|
|
1170
|
+
appendSubagentReportMessage,
|
|
1091
1171
|
appendWarningMessage,
|
|
1092
1172
|
applyAgentEvent,
|
|
1093
1173
|
createQuestionQueueState,
|
|
1094
1174
|
enqueueQuestion,
|
|
1095
1175
|
removeQuestion,
|
|
1176
|
+
parseSubagentReportHeader,
|
|
1177
|
+
resolveSubagentReport,
|
|
1178
|
+
splitSanitizableDelivery,
|
|
1179
|
+
sanitizeCoordinatorDeliveryText,
|
|
1096
1180
|
createSessionViewState,
|
|
1097
1181
|
reduceSessionEvent
|
|
1098
1182
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// src/protocol/types.ts
|
|
2
|
+
var OUTPUT_DENSITY_MODES = ["ungrouped", "maximum", "bounded"];
|
|
2
3
|
var GRANT_CAPABILITIES = ["manage-provider-auth"];
|
|
3
4
|
var PROVIDER_SURFACE_IDS = [
|
|
4
5
|
"anthropic-messages",
|
|
@@ -9,6 +10,7 @@ var PROVIDER_SURFACE_IDS = [
|
|
|
9
10
|
var AGENT_MODEL_TIERS = ["fast", "balanced", "powerful"];
|
|
10
11
|
|
|
11
12
|
export {
|
|
13
|
+
OUTPUT_DENSITY_MODES,
|
|
12
14
|
GRANT_CAPABILITIES,
|
|
13
15
|
PROVIDER_SURFACE_IDS,
|
|
14
16
|
AGENT_MODEL_TIERS
|
|
@@ -63,6 +63,8 @@ export interface DaemonDataClient {
|
|
|
63
63
|
}): Promise<ConfigMutationResult<null>>;
|
|
64
64
|
setProviderAuth(daemonId: string, providerId: string, credential: ProviderCredentialInput, opts?: {
|
|
65
65
|
profile?: string;
|
|
66
|
+
expectedCanonicalProviderId?: string;
|
|
67
|
+
activate?: boolean;
|
|
66
68
|
}): Promise<ConfigMutationResult<null>>;
|
|
67
69
|
clearProviderAuth(daemonId: string, providerId: string, opts?: {
|
|
68
70
|
profile?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-client.d.ts","sourceRoot":"","sources":["../../src/client/data-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,4FAA4F;AAC5F,MAAM,MAAM,eAAe,GAAG;IAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3F;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAE9E;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IACxC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5D;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3F,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/E,qBAAqB,CACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,2BAA2B,GAAG;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC5D,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACxC,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,0BAA0B,GAAG;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC3D,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACjG,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACtD,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACnC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1D,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC/F,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACxD,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1B,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1B,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,uBAAuB,EACnC,IAAI,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"data-client.d.ts","sourceRoot":"","sources":["../../src/client/data-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-data-client.d.ts","sourceRoot":"","sources":["../../src/client/http-data-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAMV,YAAY,EAQb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAmC,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGpF,MAAM,MAAM,qBAAqB,GAAG;IAClC,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,CAAC;AAEF,qBAAa,kBAAmB,SAAQ,KAAK;IAEzC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC;gBAA1B,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EACnC,OAAO,EAAE,MAAM;CAKlB;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIvD;AA6CD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"http-data-client.d.ts","sourceRoot":"","sources":["../../src/client/http-data-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAMV,YAAY,EAQb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAmC,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGpF,MAAM,MAAM,qBAAqB,GAAG;IAClC,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,CAAC;AAEF,qBAAa,kBAAmB,SAAQ,KAAK;IAEzC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC;gBAA1B,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EACnC,OAAO,EAAE,MAAM;CAKlB;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIvD;AA6CD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,UAAU,CAocpF"}
|
package/dist/client/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createSessionViewState,
|
|
3
3
|
reduceSessionEvent
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-2IGB2A4W.js";
|
|
5
5
|
import {
|
|
6
|
-
PROTOCOL_VERSION
|
|
7
|
-
|
|
6
|
+
PROTOCOL_VERSION,
|
|
7
|
+
parseBackgroundWorkInspection,
|
|
8
|
+
parseBackgroundWorkPage
|
|
9
|
+
} from "../chunk-2CZWHODV.js";
|
|
8
10
|
|
|
9
11
|
// src/client/endpoint.ts
|
|
10
12
|
var TerminalEndpointError = class extends Error {
|
|
@@ -335,7 +337,9 @@ function createHttpDataClient(options = {}) {
|
|
|
335
337
|
headers: { "Content-Type": "application/json" },
|
|
336
338
|
body: JSON.stringify({
|
|
337
339
|
credential,
|
|
338
|
-
...opts?.profile !== void 0 ? { profile: opts.profile } : {}
|
|
340
|
+
...opts?.profile !== void 0 ? { profile: opts.profile } : {},
|
|
341
|
+
...opts?.expectedCanonicalProviderId !== void 0 ? { expectedCanonicalProviderId: opts.expectedCanonicalProviderId } : {},
|
|
342
|
+
...opts?.activate !== void 0 ? { activate: opts.activate } : {}
|
|
339
343
|
})
|
|
340
344
|
}
|
|
341
345
|
);
|
|
@@ -527,6 +531,20 @@ function toMemoryRemovalResult(result) {
|
|
|
527
531
|
}
|
|
528
532
|
return { removed: record.removed, slug: record.slug };
|
|
529
533
|
}
|
|
534
|
+
function toBackgroundWorkPage(result) {
|
|
535
|
+
try {
|
|
536
|
+
return parseBackgroundWorkPage(result);
|
|
537
|
+
} catch {
|
|
538
|
+
throw new SessionCommandError("invalid-result", "Invalid managed work page.");
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
function toBackgroundWorkInspection(result) {
|
|
542
|
+
try {
|
|
543
|
+
return parseBackgroundWorkInspection(result);
|
|
544
|
+
} catch {
|
|
545
|
+
throw new SessionCommandError("invalid-result", "Invalid managed work inspection.");
|
|
546
|
+
}
|
|
547
|
+
}
|
|
530
548
|
function createSessionClient(transport) {
|
|
531
549
|
let state = createSessionViewState();
|
|
532
550
|
let seq = 0;
|
|
@@ -560,9 +578,9 @@ function createSessionClient(transport) {
|
|
|
560
578
|
};
|
|
561
579
|
const unsubscribe = transport.onFrame((frame) => {
|
|
562
580
|
if (frame.type === "snapshot") {
|
|
563
|
-
state = frame.snapshot.state;
|
|
581
|
+
state = structuredClone(frame.snapshot.state);
|
|
564
582
|
seq = frame.snapshot.seq;
|
|
565
|
-
serverCommandList = frame.snapshot.serverCommands;
|
|
583
|
+
serverCommandList = structuredClone(frame.snapshot.serverCommands);
|
|
566
584
|
scheduleNotify();
|
|
567
585
|
return;
|
|
568
586
|
}
|
|
@@ -695,6 +713,23 @@ function createSessionClient(transport) {
|
|
|
695
713
|
(result) => result
|
|
696
714
|
);
|
|
697
715
|
},
|
|
716
|
+
listBackgroundWork(input) {
|
|
717
|
+
return sendCommand((id) => ({
|
|
718
|
+
id,
|
|
719
|
+
type: "list-background-work",
|
|
720
|
+
...input.cursor === void 0 ? {} : { cursor: input.cursor },
|
|
721
|
+
...input.limit === void 0 ? {} : { limit: input.limit }
|
|
722
|
+
})).then(toBackgroundWorkPage);
|
|
723
|
+
},
|
|
724
|
+
inspectBackgroundWork(input) {
|
|
725
|
+
return sendCommand((id) => ({
|
|
726
|
+
id,
|
|
727
|
+
type: "inspect-background-work",
|
|
728
|
+
workId: input.workId,
|
|
729
|
+
...input.offset === void 0 ? {} : { offset: input.offset },
|
|
730
|
+
...input.limit === void 0 ? {} : { limit: input.limit }
|
|
731
|
+
})).then(toBackgroundWorkInspection);
|
|
732
|
+
},
|
|
698
733
|
serverCommands() {
|
|
699
734
|
return serverCommandList;
|
|
700
735
|
},
|
|
@@ -807,13 +842,14 @@ function createSessionClient(transport) {
|
|
|
807
842
|
capabilities() {
|
|
808
843
|
return transport.capabilities?.() ?? [];
|
|
809
844
|
},
|
|
810
|
-
completeProviderAuth(credential, name) {
|
|
845
|
+
completeProviderAuth(credential, name, replace) {
|
|
811
846
|
return sendCommand((id) => ({
|
|
812
847
|
id,
|
|
813
848
|
type: "complete-provider-auth",
|
|
814
849
|
providerId: "openai-codex",
|
|
815
850
|
credential,
|
|
816
|
-
...name !== void 0 ? { name } : {}
|
|
851
|
+
...name !== void 0 ? { name } : {},
|
|
852
|
+
...replace !== void 0 ? { replace } : {}
|
|
817
853
|
})).then(() => {
|
|
818
854
|
});
|
|
819
855
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AgentInput, AskUserAnswers } from "@nuvin/agent-core/shared";
|
|
2
|
-
import type { AgentCatalogEntry, AgentDetail, AgentModelSetSelectionResult, ChatGptCredentialInput, CommandDetail, ConfigPatch, ConsolidateProposalDetail, ConsolidateProposalSummary, ConsolidateRunOutcome, CustomProviderInput, GrantCapability, McpAction, McpActionResult, McpServerInfo, MemoryExtractSummary, PersistBashPermissionRequest, PersistBashPermissionResult, ServerEvent, SessionViewState, SetConfigResult, SkillCatalogEntry, SkillDetail, SlashCommandCompletion, SlashCommandDescriptor, WorkspaceMemoryDetail, WorkspaceMemorySummary } from "../protocol/types.ts";
|
|
2
|
+
import type { AgentCatalogEntry, AgentDetail, AgentModelSetSelectionResult, BackgroundWorkInspection, BackgroundWorkPage, ChatGptCredentialInput, CommandDetail, ConfigPatch, ConsolidateProposalDetail, ConsolidateProposalSummary, ConsolidateRunOutcome, CustomProviderInput, GrantCapability, McpAction, McpActionResult, McpServerInfo, MemoryExtractSummary, PersistBashPermissionRequest, PersistBashPermissionResult, ServerEvent, SessionViewState, SetConfigResult, SkillCatalogEntry, SkillDetail, SlashCommandCompletion, SlashCommandDescriptor, WorkspaceMemoryDetail, WorkspaceMemorySummary } from "../protocol/types.ts";
|
|
3
3
|
import type { ClientTransport } from "./transport.ts";
|
|
4
4
|
export type ClientSubmitOptions = {
|
|
5
5
|
displayText: string;
|
|
@@ -39,6 +39,17 @@ export interface SessionClient {
|
|
|
39
39
|
cancelAuthFlow(): Promise<void>;
|
|
40
40
|
/** Execute one authoritative MCP mutation in the attached daemon session. */
|
|
41
41
|
mcpAction(action: McpAction, serverName: string): Promise<McpActionResult>;
|
|
42
|
+
/** Page managed work owned by the attached session. */
|
|
43
|
+
listBackgroundWork(input: {
|
|
44
|
+
cursor?: string;
|
|
45
|
+
limit?: number;
|
|
46
|
+
}): Promise<BackgroundWorkPage>;
|
|
47
|
+
/** Inspect one managed-work item owned by the attached session. */
|
|
48
|
+
inspectBackgroundWork(input: {
|
|
49
|
+
workId: string;
|
|
50
|
+
offset?: number;
|
|
51
|
+
limit?: number;
|
|
52
|
+
}): Promise<BackgroundWorkInspection>;
|
|
42
53
|
/** Server-executed slash command descriptors from the attach snapshot. */
|
|
43
54
|
serverCommands(): SlashCommandDescriptor[];
|
|
44
55
|
/**
|
|
@@ -118,7 +129,7 @@ export interface SessionClient {
|
|
|
118
129
|
* `openai-codex`; callers cannot select another. `name` is an optional alias
|
|
119
130
|
* entry name (defaults to the canonical provider id). Resolves on the ack.
|
|
120
131
|
*/
|
|
121
|
-
completeProviderAuth(credential: ChatGptCredentialInput, name?: string): Promise<void>;
|
|
132
|
+
completeProviderAuth(credential: ChatGptCredentialInput, name?: string, replace?: boolean): Promise<void>;
|
|
122
133
|
/**
|
|
123
134
|
* Register a custom provider (base URL + API key + surface) on the attached
|
|
124
135
|
* host. Sends `add-custom-provider` and resolves on the ack.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-client.d.ts","sourceRoot":"","sources":["../../src/client/session-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAa,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"session-client.d.ts","sourceRoot":"","sources":["../../src/client/session-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAa,MAAM,0BAA0B,CAAC;AAMtF,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,4BAA4B,EAC5B,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EAEtB,aAAa,EACb,WAAW,EACX,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,4BAA4B,EAC5B,2BAA2B,EAC3B,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,sBAAsB,EAEtB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAQF;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,IAAI,gBAAgB,CAAC;IAC7B,MAAM,IAAI,MAAM,CAAC;IACjB,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5C,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5D,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EACzB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,qBAAqB,CACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,4BAA4B,EACrC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAC/B,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACxC,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,gFAAgF;IAChF,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,6EAA6E;IAC7E,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3E,uDAAuD;IACvD,kBAAkB,CAAC,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5F,mEAAmE;IACnE,qBAAqB,CAAC,KAAK,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACtC,0EAA0E;IAC1E,cAAc,IAAI,sBAAsB,EAAE,CAAC;IAC3C;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD;;;;;OAKG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC3F;;;;;;;OAOG;IACH,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5D,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACvE,8DAA8D;IAC9D,UAAU,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC3C,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,8DAA8D;IAC9D,UAAU,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC3C,kFAAkF;IAClF,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,qFAAqF;IACrF,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACjD,uEAAuE;IACvE,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC3C,uDAAuD;IACvD,qBAAqB,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC3D,wEAAwE;IACxE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACjE,6CAA6C;IAC7C,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,wEAAwE;IACxE,wBAAwB,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAAC;IAClE,kDAAkD;IAClD,yBAAyB,CACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,SAAS,GAAG,QAAQ,EAC9B,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,GACvC,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,qEAAqE;IACrE,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC/E,uEAAuE;IACvE,YAAY,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAChD;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACjD;;;OAGG;IACH,yBAAyB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5D;;;OAGG;IACH,YAAY,IAAI,SAAS,eAAe,EAAE,CAAC;IAC3C;;;;OAIG;IACH,oBAAoB,CAClB,UAAU,EAAE,sBAAsB,EAClC,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAE1C,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM;CAKlB;AAiID,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,eAAe,GAAG,aAAa,CA0X7E"}
|