@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.
Files changed (38) hide show
  1. package/dist/chunk-2CZWHODV.js +204 -0
  2. package/dist/{chunk-UKDIV6I5.js → chunk-2IGB2A4W.js} +89 -5
  3. package/dist/{chunk-5XT7AOI2.js → chunk-MKPANFIF.js} +1 -1
  4. package/dist/{chunk-4UBSHJWS.js → chunk-NDRIMBWT.js} +2 -0
  5. package/dist/client/data-client.d.ts +2 -0
  6. package/dist/client/data-client.d.ts.map +1 -1
  7. package/dist/client/http-data-client.d.ts.map +1 -1
  8. package/dist/client/index.js +44 -8
  9. package/dist/client/session-client.d.ts +13 -2
  10. package/dist/client/session-client.d.ts.map +1 -1
  11. package/dist/controller/index.js +40 -5
  12. package/dist/controller/session-controller.d.ts +10 -1
  13. package/dist/controller/session-controller.d.ts.map +1 -1
  14. package/dist/grant/index.js +2 -2
  15. package/dist/protocol/background-work.d.ts +26 -0
  16. package/dist/protocol/background-work.d.ts.map +1 -0
  17. package/dist/protocol/data-rpc.d.ts +2 -0
  18. package/dist/protocol/data-rpc.d.ts.map +1 -1
  19. package/dist/protocol/index.d.ts +2 -0
  20. package/dist/protocol/index.d.ts.map +1 -1
  21. package/dist/protocol/index.js +17 -5
  22. package/dist/protocol/types.d.ts +88 -13
  23. package/dist/protocol/types.d.ts.map +1 -1
  24. package/dist/protocol/version.d.ts +1 -1
  25. package/dist/state/display-text.d.ts +13 -1
  26. package/dist/state/display-text.d.ts.map +1 -1
  27. package/dist/state/index.d.ts +1 -0
  28. package/dist/state/index.d.ts.map +1 -1
  29. package/dist/state/index.js +13 -1
  30. package/dist/state/messages.d.ts +20 -2
  31. package/dist/state/messages.d.ts.map +1 -1
  32. package/dist/state/session.d.ts.map +1 -1
  33. package/dist/state/subagent-report.d.ts +42 -0
  34. package/dist/state/subagent-report.d.ts.map +1 -0
  35. package/dist/test-utils/index.js +4 -4
  36. package/package.json +2 -2
  37. package/dist/chunk-6QNR3TBF.js +0 -6
  38. /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)) continue;
141
+ if (isControlCodePoint(codePoint) && preserveControlCodePoints?.has(codePoint) !== true) {
142
+ continue;
143
+ }
139
144
  const codePointBytes = textEncoder.encode(codePointText).byteLength;
140
- if (outputBytes + codePointBytes > DISPLAY_TEXT_MAX_BYTES) break;
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 "info":
1038
- return { ...state, messages: appendInfoMessage(state.messages, event.message) };
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,6 +1,6 @@
1
1
  import {
2
2
  GRANT_CAPABILITIES
3
- } from "./chunk-4UBSHJWS.js";
3
+ } from "./chunk-NDRIMBWT.js";
4
4
 
5
5
  // src/grant/index.ts
6
6
  import { createPrivateKey, createPublicKey, generateKeyPairSync, sign, verify } from "crypto";
@@ -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":"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"}
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,CAgcpF"}
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"}
@@ -1,10 +1,12 @@
1
1
  import {
2
2
  createSessionViewState,
3
3
  reduceSessionEvent
4
- } from "../chunk-UKDIV6I5.js";
4
+ } from "../chunk-2IGB2A4W.js";
5
5
  import {
6
- PROTOCOL_VERSION
7
- } from "../chunk-6QNR3TBF.js";
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":"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"}
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"}