sidekick-shared 0.19.2 → 0.19.3
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/README.md +4 -3
- package/dist/browser.d.ts +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -1
- package/dist/schemas/assistantTurn.d.ts +33 -1
- package/dist/schemas/assistantTurn.js +12 -2
- package/dist/schemas/index.d.ts +2 -2
- package/dist/schemas/index.js +3 -1
- package/dist/turns/assistantTurn.d.ts +12 -1
- package/dist/turns/assistantTurn.js +78 -16
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -27,7 +27,7 @@ npm install sidekick-shared
|
|
|
27
27
|
| **Search** | Cross-session full-text search, advanced filtering (substring, fuzzy, regex, date) |
|
|
28
28
|
| **Aggregation** | Event aggregation, frequency tracking, activity heatmaps, pattern extraction |
|
|
29
29
|
| **Session Context** | Provider-neutral context evidence snapshots (`buildSessionContextSnapshot()`, `calculateSessionContextPressure()`, `createSessionContextProjector()`, `readSessionContextSnapshot()`): layered evidence sources, low/medium/high context pressure, and observed capabilities (tools, MCP servers, permission mode, rate limits) |
|
|
30
|
-
| **Assistant Turns** | Browser-safe process/answer projection for provider-normalized assistant turns (`segmentAssistantTurn()`, `assistantTurnEventsFromSessionEvents()`), including reasoning
|
|
30
|
+
| **Assistant Turns** | Browser-safe timeline/process/answer projection for provider-normalized assistant turns (`segmentAssistantTurn()`, `assistantTurnEventsFromSessionEvents()`), including interleaved reasoning, compact tool groups, and Claude `Task` subagent refs without prompt leakage |
|
|
31
31
|
| **Report** | Self-contained HTML session report generation |
|
|
32
32
|
| **Credentials** | Claude Max OAuth credential reading from `~/.claude/.credentials.json` |
|
|
33
33
|
| **Quota** | Claude Max subscription quota fetching (5-hour and 7-day windows) and Codex rate-limit extraction from event streams |
|
|
@@ -204,9 +204,9 @@ if (provider) {
|
|
|
204
204
|
|
|
205
205
|
Use `createSessionContextProjector()` for incremental updates as new events stream in, or `calculateSessionContextPressure(contextTokens, contextWindow)` for the pressure band alone.
|
|
206
206
|
|
|
207
|
-
### Project an assistant turn into Process + Answer
|
|
207
|
+
### Project an assistant turn into Timeline + Process + Answer
|
|
208
208
|
|
|
209
|
-
Build a compact UI-safe projection from provider-normalized turn events. The final contiguous text run becomes `answer`; earlier narration, tools, and reasoning stay in `process` / `reasoningBlocks
|
|
209
|
+
Build a compact UI-safe projection from provider-normalized turn events. The final contiguous text run becomes `answer`; earlier narration, tools, and reasoning stay in `process` / `reasoningBlocks`, and `timeline` preserves their interleaved arrival order for rendering.
|
|
210
210
|
|
|
211
211
|
```typescript
|
|
212
212
|
import {
|
|
@@ -217,6 +217,7 @@ import {
|
|
|
217
217
|
const projection = segmentAssistantTurn(assistantTurnEventsFromSessionEvents(sessionEvents));
|
|
218
218
|
|
|
219
219
|
console.log(projection.answer);
|
|
220
|
+
console.log(projection.timeline);
|
|
220
221
|
console.log(projection.process.steps);
|
|
221
222
|
console.log(projection.subagents); // Claude Task spawns, prompt text omitted
|
|
222
223
|
```
|
package/dist/browser.d.ts
CHANGED
|
@@ -13,6 +13,6 @@ export type { FormatDurationMsOptions, FormatTokenCountOptions } from './formatt
|
|
|
13
13
|
export { buildSessionContextSnapshot, calculateSessionContextPressure, createSessionContextProjector, } from './context/sessionContext';
|
|
14
14
|
export type { BuildSessionContextSnapshotOptions, SessionContextCapabilities, SessionContextLayerBreakdown, SessionContextPressure, SessionContextProjector, SessionContextSnapshot, SessionContextSource, SessionContextSourceType, } from './context/sessionContext';
|
|
15
15
|
export { assistantTurnEventsFromSessionEvents, extractTurnSubagents, isAssistantTurnSubagentTool, reasoningSummary, segmentAssistantTurn, } from './turns/assistantTurn';
|
|
16
|
-
export type { AssistantTurnEvent, AssistantTurnEventType, AssistantTurnProcess, AssistantTurnProcessStep, AssistantTurnProjection, AssistantTurnSubagent, AssistantTurnSubagentStatus, AssistantTurnToolRef, ExtractTurnSubagentsOptions, ReasoningSummary, SegmentAssistantTurnOptions, } from './turns/assistantTurn';
|
|
16
|
+
export type { AssistantTurnEvent, AssistantTurnEventType, AssistantTurnProcess, AssistantTurnProcessStep, AssistantTurnProjection, AssistantTurnSubagent, AssistantTurnSubagentStatus, AssistantTurnTimelineItem, AssistantTurnToolRef, ExtractTurnSubagentsOptions, ReasoningSummary, SegmentAssistantTurnOptions, } from './turns/assistantTurn';
|
|
17
17
|
export { parseModelId, getModelPricing, getModelInfo, calculateCost, calculateCostWithPricing, calculateCostWithProvenance, mergeCostSources, shortModelName, getModelDisplayInfo, compareModelIds, sortModelIds, formatCost, } from './modelInfo';
|
|
18
18
|
export type { ModelPricing, CostTokenUsage, CostSource, CostProvenanceInput, CostWithProvenance, ModelProvider, ParsedModelId, ModelInfo, ModelDisplayInfo, } from './modelInfo';
|
package/dist/index.d.ts
CHANGED
|
@@ -53,7 +53,7 @@ export type { Fidelity, ContextResult } from './context/composer';
|
|
|
53
53
|
export { buildSessionContextSnapshot, calculateSessionContextPressure, createSessionContextProjector, readSessionContextSnapshot, } from './context/sessionContext';
|
|
54
54
|
export type { BuildSessionContextSnapshotOptions, ReadSessionContextSnapshotOptions, SessionContextCapabilities, SessionContextLayerBreakdown, SessionContextPressure, SessionContextProjector, SessionContextSnapshot, SessionContextSource, SessionContextSourceType, } from './context/sessionContext';
|
|
55
55
|
export { assistantTurnEventsFromSessionEvents, extractTurnSubagents, isAssistantTurnSubagentTool, reasoningSummary, segmentAssistantTurn, } from './turns/assistantTurn';
|
|
56
|
-
export type { AssistantTurnEvent, AssistantTurnEventType, AssistantTurnProcess, AssistantTurnProcessStep, AssistantTurnProjection, AssistantTurnSubagent, AssistantTurnSubagentStatus, AssistantTurnToolRef, ExtractTurnSubagentsOptions, ReasoningSummary, SegmentAssistantTurnOptions, } from './turns/assistantTurn';
|
|
56
|
+
export type { AssistantTurnEvent, AssistantTurnEventType, AssistantTurnProcess, AssistantTurnProcessStep, AssistantTurnProjection, AssistantTurnSubagent, AssistantTurnSubagentStatus, AssistantTurnTimelineItem, AssistantTurnToolRef, ExtractTurnSubagentsOptions, ReasoningSummary, SegmentAssistantTurnOptions, } from './turns/assistantTurn';
|
|
57
57
|
export { PlanExtractor, parsePlanMarkdown as parsePlanMarkdownShared, extractProposedPlan as extractProposedPlanShared } from './parsers/planExtractor';
|
|
58
58
|
export type { ExtractedPlan, ExtractedPlanStep } from './parsers/planExtractor';
|
|
59
59
|
export { parseChangelog } from './parsers/changelogParser';
|
|
@@ -128,7 +128,7 @@ export { messageUsageSchema, sessionMessageSchema, sessionEventSchema, permissio
|
|
|
128
128
|
export { quotaWindowSchema, quotaStateSchema, quotaFailureKindSchema, quotaProviderIdSchema, quotaSourceSchema, peakHoursStateSchema, quotaFailureDescriptorSchema, runtimeQuotaProviderSchema, providerQuotaStateSchema, claudeProviderQuotaStateSchema, codexProviderQuotaStateSchema, providerQuotaMapSchema, } from './schemas/quota';
|
|
129
129
|
export { quotaHistoryRuntimeProviderSchema, quotaHistorySampleSchema, quotaHistoryDailyBucketSchema, } from './schemas/quotaHistory';
|
|
130
130
|
export { activeProviderAccountStatusSchema, activeAccountStatusSchema, } from './schemas/accountStatus';
|
|
131
|
-
export { assistantTurnEventSchema, assistantTurnEventTypeSchema, assistantTurnNarrationStepSchema, assistantTurnProcessSchema, assistantTurnProcessStepSchema, assistantTurnProjectionSchema, assistantTurnSubagentSchema, assistantTurnSubagentStatusSchema, assistantTurnToolGroupStepSchema, assistantTurnToolRefSchema, } from './schemas/assistantTurn';
|
|
131
|
+
export { assistantTurnEventSchema, assistantTurnEventTypeSchema, assistantTurnNarrationStepSchema, assistantTurnProcessSchema, assistantTurnProcessStepSchema, assistantTurnProjectionSchema, assistantTurnReasoningTimelineItemSchema, assistantTurnSubagentSchema, assistantTurnSubagentStatusSchema, assistantTurnTimelineItemSchema, assistantTurnToolGroupStepSchema, assistantTurnToolRefSchema, } from './schemas/assistantTurn';
|
|
132
132
|
export { fetchProviderStatus, fetchOpenAIStatus } from './providerStatus';
|
|
133
133
|
export type { ProviderStatusState } from './providerStatus';
|
|
134
134
|
export { createPeakHoursNotApplicableState, fetchPeakHoursStatus, isClaudeCodeSessionProvider, scopePeakHoursToSessionProvider, } from './peakHours';
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.findActiveClaudeSession = exports.discoverSessionDirectory = exports.get
|
|
|
7
7
|
exports.clearHighlightCache = exports.highlightEvent = exports.formatSessionJson = exports.formatSessionMarkdown = exports.formatSessionText = exports.classifyNoise = exports.shouldMergeWithPrevious = exports.classifyFollowEvent = exports.classifyMessage = exports.getSoftNoiseReason = exports.isHardNoiseFollowEvent = exports.isHardNoise = exports.formatToolSummary = exports.formatTokenCount = exports.formatDurationMs = exports.createJsonlTail = exports.toFollowEvents = exports.createWatcher = exports.parseChangelog = exports.extractProposedPlanShared = exports.parsePlanMarkdownShared = exports.PlanExtractor = exports.segmentAssistantTurn = exports.reasoningSummary = exports.isAssistantTurnSubagentTool = exports.extractTurnSubagents = exports.assistantTurnEventsFromSessionEvents = exports.readSessionContextSnapshot = exports.createSessionContextProjector = exports.calculateSessionContextPressure = exports.buildSessionContextSnapshot = exports.composeContext = exports.FilterEngine = exports.searchSessions = exports.CodexDatabase = exports.OpenCodeDatabase = exports.discoverDebugLogs = exports.collapseDuplicates = exports.filterByLevel = exports.parseDebugLog = exports.scanSubagentTraces = exports.findAllSessionsWithWorktrees = exports.discoverWorktreeSiblings = exports.resolveWorktreeMainRepo = exports.getAllClaudeProjectFolders = exports.decodeEncodedPath = exports.getMostRecentlyActiveSessionDir = exports.findSubdirectorySessionDirs = exports.findSessionsInDirectory = exports.findAllClaudeSessions = void 0;
|
|
8
8
|
exports.getCodexExecutionEnv = exports.resolveSidekickCodexHome = exports.getActiveCodexAccount = exports.listCodexAccounts = exports.getSystemCodexHome = exports.getCodexMonitoringHomes = exports.getCodexProfileHome = exports.getCodexProfilesDir = exports.getActiveAccountStatus = exports.removeSavedAccountProfile = exports.replaceSavedAccountProfiles = exports.setActiveSavedAccount = exports.upsertSavedAccountProfile = exports.getActiveSavedAccount = exports.listSavedAccountProfiles = exports.writeSavedAccountRegistry = exports.readSavedAccountRegistry = exports.getAccountsDir = exports.isMultiAccountEnabled = exports.getActiveAccount = exports.listAccounts = exports.removeAccount = exports.switchToAccount = exports.addCurrentAccount = exports.readActiveClaudeAccount = exports.writeAccountRegistry = exports.readAccountRegistry = exports.ensureDefaultAccounts = exports.readClaudeMaxAccessTokenSync = exports.readClaudeMaxCredentials = exports.writeActiveCredentials = exports.readActiveCredentials = exports.openInBrowser = exports.parseTranscriptFromEvents = exports.parseTranscript = exports.generateHtmlReport = exports.PatternExtractor = exports.HeatmapTracker = exports.FrequencyTracker = exports.getSnapshotPath = exports.isSnapshotValid = exports.deleteSnapshot = exports.loadSnapshot = exports.saveSnapshot = exports.parseTodoDependencies = exports.EventAggregator = exports.getRandomPhrase = exports.PHRASE_CATEGORIES = exports.ALL_PHRASES = exports.HIGHLIGHT_CSS = void 0;
|
|
9
9
|
exports.quotaProviderIdSchema = exports.quotaFailureKindSchema = exports.quotaStateSchema = exports.quotaWindowSchema = exports.extractSessionEvents = exports.permissionModeSchema = exports.sessionEventSchema = exports.sessionMessageSchema = exports.messageUsageSchema = exports.extractToolCalls = exports.extractToolCall = exports.extractTokenUsage = exports.LITELLM_CATALOG_URL = exports.normalizeLiteLlmCatalog = exports.hydratePricingCatalog = exports.formatCost = exports.sortModelIds = exports.compareModelIds = exports.getModelDisplayInfo = exports.shortModelName = exports.mergeCostSources = exports.calculateCostWithProvenance = exports.calculateCostWithPricing = exports.calculateCost = exports.getModelInfo = exports.getModelPricing = exports.parseModelId = exports.DEFAULT_CONTEXT_WINDOW = exports.getModelContextWindowSize = exports.MultiProviderQuotaService = exports.CodexQuotaWatcher = exports.resolveCodexQuotaFromLocalSources = exports.resolveCodexQuota = exports.readLatestCodexQuotaFromRollouts = exports.quotaFromCodexRateLimits = exports.fetchCodexQuotaFromApi = exports.getWorkspaceIdFromPath = exports.pruneQuotaHistory = exports.readQuotaHistoryDailyBuckets = exports.readQuotaHistoryRange = exports.appendQuotaHistorySample = exports.writeQuotaSnapshot = exports.readQuotaSnapshot = exports.QuotaPoller = exports.describeQuotaFailure = exports.fetchQuota = exports.removeCodexAccount = exports.switchToCodexAccount = exports.finalizeCodexAccount = exports.prepareCodexAccount = void 0;
|
|
10
|
-
exports.scopePeakHoursToSessionProvider = exports.isClaudeCodeSessionProvider = exports.fetchPeakHoursStatus = exports.createPeakHoursNotApplicableState = exports.fetchOpenAIStatus = exports.fetchProviderStatus = exports.assistantTurnToolRefSchema = exports.assistantTurnToolGroupStepSchema = exports.assistantTurnSubagentStatusSchema = exports.assistantTurnSubagentSchema = exports.assistantTurnProjectionSchema = exports.assistantTurnProcessStepSchema = exports.assistantTurnProcessSchema = exports.assistantTurnNarrationStepSchema = exports.assistantTurnEventTypeSchema = exports.assistantTurnEventSchema = exports.activeAccountStatusSchema = exports.activeProviderAccountStatusSchema = exports.quotaHistoryDailyBucketSchema = exports.quotaHistorySampleSchema = exports.quotaHistoryRuntimeProviderSchema = exports.providerQuotaMapSchema = exports.codexProviderQuotaStateSchema = exports.claudeProviderQuotaStateSchema = exports.providerQuotaStateSchema = exports.runtimeQuotaProviderSchema = exports.quotaFailureDescriptorSchema = exports.peakHoursStateSchema = exports.quotaSourceSchema = void 0;
|
|
10
|
+
exports.scopePeakHoursToSessionProvider = exports.isClaudeCodeSessionProvider = exports.fetchPeakHoursStatus = exports.createPeakHoursNotApplicableState = exports.fetchOpenAIStatus = exports.fetchProviderStatus = exports.assistantTurnToolRefSchema = exports.assistantTurnToolGroupStepSchema = exports.assistantTurnTimelineItemSchema = exports.assistantTurnSubagentStatusSchema = exports.assistantTurnSubagentSchema = exports.assistantTurnReasoningTimelineItemSchema = exports.assistantTurnProjectionSchema = exports.assistantTurnProcessStepSchema = exports.assistantTurnProcessSchema = exports.assistantTurnNarrationStepSchema = exports.assistantTurnEventTypeSchema = exports.assistantTurnEventSchema = exports.activeAccountStatusSchema = exports.activeProviderAccountStatusSchema = exports.quotaHistoryDailyBucketSchema = exports.quotaHistorySampleSchema = exports.quotaHistoryRuntimeProviderSchema = exports.providerQuotaMapSchema = exports.codexProviderQuotaStateSchema = exports.claudeProviderQuotaStateSchema = exports.providerQuotaStateSchema = exports.runtimeQuotaProviderSchema = exports.quotaFailureDescriptorSchema = exports.peakHoursStateSchema = exports.quotaSourceSchema = void 0;
|
|
11
11
|
var taskPersistence_1 = require("./types/taskPersistence");
|
|
12
12
|
Object.defineProperty(exports, "TASK_PERSISTENCE_SCHEMA_VERSION", { enumerable: true, get: function () { return taskPersistence_1.TASK_PERSISTENCE_SCHEMA_VERSION; } });
|
|
13
13
|
Object.defineProperty(exports, "normalizeTaskStatus", { enumerable: true, get: function () { return taskPersistence_1.normalizeTaskStatus; } });
|
|
@@ -334,8 +334,10 @@ Object.defineProperty(exports, "assistantTurnNarrationStepSchema", { enumerable:
|
|
|
334
334
|
Object.defineProperty(exports, "assistantTurnProcessSchema", { enumerable: true, get: function () { return assistantTurn_2.assistantTurnProcessSchema; } });
|
|
335
335
|
Object.defineProperty(exports, "assistantTurnProcessStepSchema", { enumerable: true, get: function () { return assistantTurn_2.assistantTurnProcessStepSchema; } });
|
|
336
336
|
Object.defineProperty(exports, "assistantTurnProjectionSchema", { enumerable: true, get: function () { return assistantTurn_2.assistantTurnProjectionSchema; } });
|
|
337
|
+
Object.defineProperty(exports, "assistantTurnReasoningTimelineItemSchema", { enumerable: true, get: function () { return assistantTurn_2.assistantTurnReasoningTimelineItemSchema; } });
|
|
337
338
|
Object.defineProperty(exports, "assistantTurnSubagentSchema", { enumerable: true, get: function () { return assistantTurn_2.assistantTurnSubagentSchema; } });
|
|
338
339
|
Object.defineProperty(exports, "assistantTurnSubagentStatusSchema", { enumerable: true, get: function () { return assistantTurn_2.assistantTurnSubagentStatusSchema; } });
|
|
340
|
+
Object.defineProperty(exports, "assistantTurnTimelineItemSchema", { enumerable: true, get: function () { return assistantTurn_2.assistantTurnTimelineItemSchema; } });
|
|
339
341
|
Object.defineProperty(exports, "assistantTurnToolGroupStepSchema", { enumerable: true, get: function () { return assistantTurn_2.assistantTurnToolGroupStepSchema; } });
|
|
340
342
|
Object.defineProperty(exports, "assistantTurnToolRefSchema", { enumerable: true, get: function () { return assistantTurn_2.assistantTurnToolRefSchema; } });
|
|
341
343
|
// Provider Status
|
|
@@ -64,6 +64,24 @@ export declare const assistantTurnProcessStepSchema: z.ZodDiscriminatedUnion<[z.
|
|
|
64
64
|
toolUseId: z.ZodOptional<z.ZodString>;
|
|
65
65
|
}, z.core.$strip>>;
|
|
66
66
|
}, z.core.$strip>], "kind">;
|
|
67
|
+
export declare const assistantTurnReasoningTimelineItemSchema: z.ZodObject<{
|
|
68
|
+
kind: z.ZodLiteral<"reasoning">;
|
|
69
|
+
text: z.ZodString;
|
|
70
|
+
}, z.core.$strip>;
|
|
71
|
+
export declare const assistantTurnTimelineItemSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
72
|
+
kind: z.ZodLiteral<"reasoning">;
|
|
73
|
+
text: z.ZodString;
|
|
74
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
75
|
+
kind: z.ZodLiteral<"narration">;
|
|
76
|
+
text: z.ZodString;
|
|
77
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
78
|
+
kind: z.ZodLiteral<"toolGroup">;
|
|
79
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
80
|
+
toolName: z.ZodString;
|
|
81
|
+
toolInput: z.ZodOptional<z.ZodString>;
|
|
82
|
+
toolUseId: z.ZodOptional<z.ZodString>;
|
|
83
|
+
}, z.core.$strip>>;
|
|
84
|
+
}, z.core.$strip>], "kind">;
|
|
67
85
|
export declare const assistantTurnProcessSchema: z.ZodObject<{
|
|
68
86
|
steps: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
69
87
|
kind: z.ZodLiteral<"narration">;
|
|
@@ -93,7 +111,7 @@ export declare const assistantTurnSubagentSchema: z.ZodObject<{
|
|
|
93
111
|
}>;
|
|
94
112
|
}, z.core.$strip>;
|
|
95
113
|
export declare const assistantTurnProjectionSchema: z.ZodObject<{
|
|
96
|
-
schemaVersion: z.ZodLiteral<
|
|
114
|
+
schemaVersion: z.ZodLiteral<2>;
|
|
97
115
|
answer: z.ZodString;
|
|
98
116
|
reasoning: z.ZodString;
|
|
99
117
|
reasoningBlocks: z.ZodArray<z.ZodString>;
|
|
@@ -110,6 +128,20 @@ export declare const assistantTurnProjectionSchema: z.ZodObject<{
|
|
|
110
128
|
}, z.core.$strip>>;
|
|
111
129
|
}, z.core.$strip>], "kind">>;
|
|
112
130
|
}, z.core.$strip>;
|
|
131
|
+
timeline: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
132
|
+
kind: z.ZodLiteral<"reasoning">;
|
|
133
|
+
text: z.ZodString;
|
|
134
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
135
|
+
kind: z.ZodLiteral<"narration">;
|
|
136
|
+
text: z.ZodString;
|
|
137
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
138
|
+
kind: z.ZodLiteral<"toolGroup">;
|
|
139
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
140
|
+
toolName: z.ZodString;
|
|
141
|
+
toolInput: z.ZodOptional<z.ZodString>;
|
|
142
|
+
toolUseId: z.ZodOptional<z.ZodString>;
|
|
143
|
+
}, z.core.$strip>>;
|
|
144
|
+
}, z.core.$strip>], "kind">>;
|
|
113
145
|
subagents: z.ZodArray<z.ZodObject<{
|
|
114
146
|
id: z.ZodString;
|
|
115
147
|
label: z.ZodString;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* process/answer shape used at UI and IPC boundaries.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.assistantTurnProjectionSchema = exports.assistantTurnSubagentSchema = exports.assistantTurnSubagentStatusSchema = exports.assistantTurnProcessSchema = exports.assistantTurnProcessStepSchema = exports.assistantTurnToolGroupStepSchema = exports.assistantTurnNarrationStepSchema = exports.assistantTurnToolRefSchema = exports.assistantTurnEventSchema = exports.assistantTurnEventTypeSchema = void 0;
|
|
9
|
+
exports.assistantTurnProjectionSchema = exports.assistantTurnSubagentSchema = exports.assistantTurnSubagentStatusSchema = exports.assistantTurnProcessSchema = exports.assistantTurnTimelineItemSchema = exports.assistantTurnReasoningTimelineItemSchema = exports.assistantTurnProcessStepSchema = exports.assistantTurnToolGroupStepSchema = exports.assistantTurnNarrationStepSchema = exports.assistantTurnToolRefSchema = exports.assistantTurnEventSchema = exports.assistantTurnEventTypeSchema = void 0;
|
|
10
10
|
const zod_1 = require("zod");
|
|
11
11
|
exports.assistantTurnEventTypeSchema = zod_1.z.enum([
|
|
12
12
|
'text',
|
|
@@ -43,6 +43,15 @@ exports.assistantTurnProcessStepSchema = zod_1.z.discriminatedUnion('kind', [
|
|
|
43
43
|
exports.assistantTurnNarrationStepSchema,
|
|
44
44
|
exports.assistantTurnToolGroupStepSchema,
|
|
45
45
|
]);
|
|
46
|
+
exports.assistantTurnReasoningTimelineItemSchema = zod_1.z.object({
|
|
47
|
+
kind: zod_1.z.literal('reasoning'),
|
|
48
|
+
text: zod_1.z.string(),
|
|
49
|
+
});
|
|
50
|
+
exports.assistantTurnTimelineItemSchema = zod_1.z.discriminatedUnion('kind', [
|
|
51
|
+
exports.assistantTurnReasoningTimelineItemSchema,
|
|
52
|
+
exports.assistantTurnNarrationStepSchema,
|
|
53
|
+
exports.assistantTurnToolGroupStepSchema,
|
|
54
|
+
]);
|
|
46
55
|
exports.assistantTurnProcessSchema = zod_1.z.object({
|
|
47
56
|
steps: zod_1.z.array(exports.assistantTurnProcessStepSchema),
|
|
48
57
|
});
|
|
@@ -58,10 +67,11 @@ exports.assistantTurnSubagentSchema = zod_1.z.object({
|
|
|
58
67
|
status: exports.assistantTurnSubagentStatusSchema,
|
|
59
68
|
});
|
|
60
69
|
exports.assistantTurnProjectionSchema = zod_1.z.object({
|
|
61
|
-
schemaVersion: zod_1.z.literal(
|
|
70
|
+
schemaVersion: zod_1.z.literal(2),
|
|
62
71
|
answer: zod_1.z.string(),
|
|
63
72
|
reasoning: zod_1.z.string(),
|
|
64
73
|
reasoningBlocks: zod_1.z.array(zod_1.z.string()),
|
|
65
74
|
process: exports.assistantTurnProcessSchema,
|
|
75
|
+
timeline: zod_1.z.array(exports.assistantTurnTimelineItemSchema),
|
|
66
76
|
subagents: zod_1.z.array(exports.assistantTurnSubagentSchema),
|
|
67
77
|
});
|
package/dist/schemas/index.d.ts
CHANGED
|
@@ -21,5 +21,5 @@ export { quotaHistoryRuntimeProviderSchema, quotaHistorySampleSchema, quotaHisto
|
|
|
21
21
|
export type { QuotaHistoryRuntimeProvider, QuotaHistorySample, QuotaHistoryDailyBucket, } from '../quotaHistory';
|
|
22
22
|
export { activeProviderAccountStatusSchema, activeAccountStatusSchema, } from './accountStatus';
|
|
23
23
|
export type { ActiveProviderAccountStatus, ActiveAccountStatus, } from '../accountStatus';
|
|
24
|
-
export { assistantTurnEventSchema, assistantTurnEventTypeSchema, assistantTurnNarrationStepSchema, assistantTurnProcessSchema, assistantTurnProcessStepSchema, assistantTurnProjectionSchema, assistantTurnSubagentSchema, assistantTurnSubagentStatusSchema, assistantTurnToolGroupStepSchema, assistantTurnToolRefSchema, } from './assistantTurn';
|
|
25
|
-
export type { AssistantTurnEvent, AssistantTurnEventType, AssistantTurnProcess, AssistantTurnProcessStep, AssistantTurnProjection, AssistantTurnSubagent, AssistantTurnSubagentStatus, AssistantTurnToolRef, } from '../turns/assistantTurn';
|
|
24
|
+
export { assistantTurnEventSchema, assistantTurnEventTypeSchema, assistantTurnNarrationStepSchema, assistantTurnProcessSchema, assistantTurnProcessStepSchema, assistantTurnProjectionSchema, assistantTurnReasoningTimelineItemSchema, assistantTurnSubagentSchema, assistantTurnSubagentStatusSchema, assistantTurnTimelineItemSchema, assistantTurnToolGroupStepSchema, assistantTurnToolRefSchema, } from './assistantTurn';
|
|
25
|
+
export type { AssistantTurnEvent, AssistantTurnEventType, AssistantTurnProcess, AssistantTurnProcessStep, AssistantTurnProjection, AssistantTurnSubagent, AssistantTurnSubagentStatus, AssistantTurnTimelineItem, AssistantTurnToolRef, } from '../turns/assistantTurn';
|
package/dist/schemas/index.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* subpath is self-sufficient for boundary-validation modules.
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.assistantTurnToolRefSchema = exports.assistantTurnToolGroupStepSchema = exports.assistantTurnSubagentStatusSchema = exports.assistantTurnSubagentSchema = exports.assistantTurnProjectionSchema = exports.assistantTurnProcessStepSchema = exports.assistantTurnProcessSchema = exports.assistantTurnNarrationStepSchema = exports.assistantTurnEventTypeSchema = exports.assistantTurnEventSchema = exports.activeAccountStatusSchema = exports.activeProviderAccountStatusSchema = exports.quotaHistoryDailyBucketSchema = exports.quotaHistorySampleSchema = exports.quotaHistoryRuntimeProviderSchema = exports.providerQuotaMapSchema = exports.codexProviderQuotaStateSchema = exports.claudeProviderQuotaStateSchema = exports.providerQuotaStateSchema = exports.runtimeQuotaProviderSchema = exports.quotaFailureDescriptorSchema = exports.peakHoursStateSchema = exports.quotaSourceSchema = exports.quotaProviderIdSchema = exports.quotaFailureKindSchema = exports.quotaStateSchema = exports.quotaWindowSchema = exports.extractSessionEvents = exports.permissionModeSchema = exports.sessionEventSchema = exports.sessionMessageSchema = exports.messageUsageSchema = void 0;
|
|
15
|
+
exports.assistantTurnToolRefSchema = exports.assistantTurnToolGroupStepSchema = exports.assistantTurnTimelineItemSchema = exports.assistantTurnSubagentStatusSchema = exports.assistantTurnSubagentSchema = exports.assistantTurnReasoningTimelineItemSchema = exports.assistantTurnProjectionSchema = exports.assistantTurnProcessStepSchema = exports.assistantTurnProcessSchema = exports.assistantTurnNarrationStepSchema = exports.assistantTurnEventTypeSchema = exports.assistantTurnEventSchema = exports.activeAccountStatusSchema = exports.activeProviderAccountStatusSchema = exports.quotaHistoryDailyBucketSchema = exports.quotaHistorySampleSchema = exports.quotaHistoryRuntimeProviderSchema = exports.providerQuotaMapSchema = exports.codexProviderQuotaStateSchema = exports.claudeProviderQuotaStateSchema = exports.providerQuotaStateSchema = exports.runtimeQuotaProviderSchema = exports.quotaFailureDescriptorSchema = exports.peakHoursStateSchema = exports.quotaSourceSchema = exports.quotaProviderIdSchema = exports.quotaFailureKindSchema = exports.quotaStateSchema = exports.quotaWindowSchema = exports.extractSessionEvents = exports.permissionModeSchema = exports.sessionEventSchema = exports.sessionMessageSchema = exports.messageUsageSchema = void 0;
|
|
16
16
|
var sessionEvent_1 = require("./sessionEvent");
|
|
17
17
|
Object.defineProperty(exports, "messageUsageSchema", { enumerable: true, get: function () { return sessionEvent_1.messageUsageSchema; } });
|
|
18
18
|
Object.defineProperty(exports, "sessionMessageSchema", { enumerable: true, get: function () { return sessionEvent_1.sessionMessageSchema; } });
|
|
@@ -46,7 +46,9 @@ Object.defineProperty(exports, "assistantTurnNarrationStepSchema", { enumerable:
|
|
|
46
46
|
Object.defineProperty(exports, "assistantTurnProcessSchema", { enumerable: true, get: function () { return assistantTurn_1.assistantTurnProcessSchema; } });
|
|
47
47
|
Object.defineProperty(exports, "assistantTurnProcessStepSchema", { enumerable: true, get: function () { return assistantTurn_1.assistantTurnProcessStepSchema; } });
|
|
48
48
|
Object.defineProperty(exports, "assistantTurnProjectionSchema", { enumerable: true, get: function () { return assistantTurn_1.assistantTurnProjectionSchema; } });
|
|
49
|
+
Object.defineProperty(exports, "assistantTurnReasoningTimelineItemSchema", { enumerable: true, get: function () { return assistantTurn_1.assistantTurnReasoningTimelineItemSchema; } });
|
|
49
50
|
Object.defineProperty(exports, "assistantTurnSubagentSchema", { enumerable: true, get: function () { return assistantTurn_1.assistantTurnSubagentSchema; } });
|
|
50
51
|
Object.defineProperty(exports, "assistantTurnSubagentStatusSchema", { enumerable: true, get: function () { return assistantTurn_1.assistantTurnSubagentStatusSchema; } });
|
|
52
|
+
Object.defineProperty(exports, "assistantTurnTimelineItemSchema", { enumerable: true, get: function () { return assistantTurn_1.assistantTurnTimelineItemSchema; } });
|
|
51
53
|
Object.defineProperty(exports, "assistantTurnToolGroupStepSchema", { enumerable: true, get: function () { return assistantTurn_1.assistantTurnToolGroupStepSchema; } });
|
|
52
54
|
Object.defineProperty(exports, "assistantTurnToolRefSchema", { enumerable: true, get: function () { return assistantTurn_1.assistantTurnToolRefSchema; } });
|
|
@@ -20,6 +20,16 @@ export type AssistantTurnProcessStep = {
|
|
|
20
20
|
kind: 'toolGroup';
|
|
21
21
|
tools: AssistantTurnToolRef[];
|
|
22
22
|
};
|
|
23
|
+
export type AssistantTurnTimelineItem = {
|
|
24
|
+
kind: 'reasoning';
|
|
25
|
+
text: string;
|
|
26
|
+
} | {
|
|
27
|
+
kind: 'narration';
|
|
28
|
+
text: string;
|
|
29
|
+
} | {
|
|
30
|
+
kind: 'toolGroup';
|
|
31
|
+
tools: AssistantTurnToolRef[];
|
|
32
|
+
};
|
|
23
33
|
export interface AssistantTurnProcess {
|
|
24
34
|
steps: AssistantTurnProcessStep[];
|
|
25
35
|
}
|
|
@@ -31,11 +41,12 @@ export interface AssistantTurnSubagent {
|
|
|
31
41
|
status: AssistantTurnSubagentStatus;
|
|
32
42
|
}
|
|
33
43
|
export interface AssistantTurnProjection {
|
|
34
|
-
schemaVersion:
|
|
44
|
+
schemaVersion: 2;
|
|
35
45
|
answer: string;
|
|
36
46
|
reasoning: string;
|
|
37
47
|
reasoningBlocks: string[];
|
|
38
48
|
process: AssistantTurnProcess;
|
|
49
|
+
timeline: AssistantTurnTimelineItem[];
|
|
39
50
|
subagents: AssistantTurnSubagent[];
|
|
40
51
|
}
|
|
41
52
|
export interface SegmentAssistantTurnOptions {
|
|
@@ -40,18 +40,24 @@ function segmentAssistantTurn(events, options = {}) {
|
|
|
40
40
|
const subagentStatus = options.subagentStatus ?? 'completed';
|
|
41
41
|
const reasoningParts = [];
|
|
42
42
|
const steps = [];
|
|
43
|
+
const timelineItems = [];
|
|
43
44
|
let textBuffer = [];
|
|
44
45
|
let toolGroup = null;
|
|
45
46
|
function closeToolGroup() {
|
|
46
47
|
if (toolGroup != null && toolGroup.tools.length > 0) {
|
|
48
|
+
const processStepIndex = steps.length;
|
|
47
49
|
steps.push(toolGroup);
|
|
50
|
+
timelineItems.push({ kind: 'toolGroup', tools: toolGroup.tools, processStepIndex });
|
|
48
51
|
}
|
|
49
52
|
toolGroup = null;
|
|
50
53
|
}
|
|
51
54
|
function sealTextAsNarration() {
|
|
52
55
|
const text = joinText(textBuffer);
|
|
53
56
|
if (text !== '') {
|
|
54
|
-
|
|
57
|
+
const processStepIndex = steps.length;
|
|
58
|
+
const step = { kind: 'narration', text: capText(text, maxNarrationChars) };
|
|
59
|
+
steps.push(step);
|
|
60
|
+
timelineItems.push({ kind: 'narration', text: step.text, processStepIndex });
|
|
55
61
|
}
|
|
56
62
|
textBuffer = [];
|
|
57
63
|
}
|
|
@@ -69,7 +75,13 @@ function segmentAssistantTurn(events, options = {}) {
|
|
|
69
75
|
break;
|
|
70
76
|
sealTextAsNarration();
|
|
71
77
|
closeToolGroup();
|
|
78
|
+
const reasoningIndex = reasoningParts.length;
|
|
72
79
|
reasoningParts.push(event.content);
|
|
80
|
+
timelineItems.push({
|
|
81
|
+
kind: 'reasoning',
|
|
82
|
+
text: capText(event.content, maxReasoningChars),
|
|
83
|
+
reasoningIndex,
|
|
84
|
+
});
|
|
73
85
|
break;
|
|
74
86
|
}
|
|
75
87
|
case 'tool_use': {
|
|
@@ -92,16 +104,16 @@ function segmentAssistantTurn(events, options = {}) {
|
|
|
92
104
|
}
|
|
93
105
|
const answer = joinText(textBuffer);
|
|
94
106
|
closeToolGroup();
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const process = { steps: capProcessSteps(steps, maxProcessSteps) };
|
|
107
|
+
const cappedReasoning = capReasoningBlocks(reasoningParts.map((part) => capText(part, maxReasoningChars)), maxReasoningBlocks);
|
|
108
|
+
const cappedProcess = capProcessSteps(steps, maxProcessSteps);
|
|
109
|
+
const process = { steps: cappedProcess.steps };
|
|
99
110
|
return {
|
|
100
|
-
schemaVersion:
|
|
111
|
+
schemaVersion: 2,
|
|
101
112
|
answer,
|
|
102
113
|
reasoning: capText(joinText(reasoningParts), maxReasoningChars),
|
|
103
|
-
reasoningBlocks,
|
|
114
|
+
reasoningBlocks: cappedReasoning.blocks,
|
|
104
115
|
process,
|
|
116
|
+
timeline: capTimelineItems(timelineItems, cappedReasoning, cappedProcess),
|
|
105
117
|
subagents: extractTurnSubagents(flattenProcessTools(process), { status: subagentStatus }),
|
|
106
118
|
};
|
|
107
119
|
}
|
|
@@ -235,24 +247,74 @@ function flattenProcessTools(process) {
|
|
|
235
247
|
return result;
|
|
236
248
|
}
|
|
237
249
|
function capProcessSteps(steps, maxRetainedSteps) {
|
|
250
|
+
const retainedIndexes = new Set();
|
|
238
251
|
if (!Number.isFinite(maxRetainedSteps) || maxRetainedSteps < 0)
|
|
239
|
-
return [];
|
|
252
|
+
return { steps: [], retainedIndexes };
|
|
240
253
|
const retainedCount = Math.floor(maxRetainedSteps);
|
|
241
|
-
if (steps.length <= retainedCount)
|
|
242
|
-
|
|
243
|
-
|
|
254
|
+
if (steps.length <= retainedCount) {
|
|
255
|
+
steps.forEach((_step, index) => retainedIndexes.add(index));
|
|
256
|
+
return { steps, retainedIndexes };
|
|
257
|
+
}
|
|
258
|
+
const firstKeptIndex = Math.max(steps.length - retainedCount, 0);
|
|
259
|
+
const kept = retainedCount > 0 ? steps.slice(firstKeptIndex) : [];
|
|
260
|
+
for (let index = firstKeptIndex; index < steps.length; index += 1) {
|
|
261
|
+
retainedIndexes.add(index);
|
|
262
|
+
}
|
|
244
263
|
const omitted = steps.length - kept.length;
|
|
245
|
-
|
|
264
|
+
const omittedMarker = `... ${omitted} earlier process step${omitted === 1 ? '' : 's'} omitted`;
|
|
265
|
+
return { steps: [{ kind: 'narration', text: omittedMarker }, ...kept], retainedIndexes, omittedMarker };
|
|
246
266
|
}
|
|
247
267
|
function capReasoningBlocks(blocks, maxRetainedBlocks) {
|
|
268
|
+
const retainedIndexes = new Set();
|
|
248
269
|
if (!Number.isFinite(maxRetainedBlocks) || maxRetainedBlocks < 0)
|
|
249
|
-
return [];
|
|
270
|
+
return { blocks: [], retainedIndexes };
|
|
250
271
|
const retainedCount = Math.floor(maxRetainedBlocks);
|
|
251
|
-
if (blocks.length <= retainedCount)
|
|
252
|
-
|
|
272
|
+
if (blocks.length <= retainedCount) {
|
|
273
|
+
blocks.forEach((_block, index) => retainedIndexes.add(index));
|
|
274
|
+
return { blocks, retainedIndexes };
|
|
275
|
+
}
|
|
253
276
|
const kept = retainedCount > 0 ? blocks.slice(0, retainedCount) : [];
|
|
277
|
+
for (let index = 0; index < kept.length; index += 1) {
|
|
278
|
+
retainedIndexes.add(index);
|
|
279
|
+
}
|
|
254
280
|
const omitted = blocks.length - kept.length;
|
|
255
|
-
|
|
281
|
+
const omittedMarker = `... ${omitted} more reasoning block${omitted === 1 ? '' : 's'} omitted`;
|
|
282
|
+
return { blocks: [...kept, omittedMarker], retainedIndexes, omittedMarker };
|
|
283
|
+
}
|
|
284
|
+
function capTimelineItems(items, reasoning, process) {
|
|
285
|
+
const result = [];
|
|
286
|
+
let insertedReasoningOmission = false;
|
|
287
|
+
let insertedProcessOmission = false;
|
|
288
|
+
for (const item of items) {
|
|
289
|
+
if (item.kind === 'reasoning') {
|
|
290
|
+
if (reasoning.retainedIndexes.has(item.reasoningIndex)) {
|
|
291
|
+
result.push({ kind: 'reasoning', text: item.text });
|
|
292
|
+
}
|
|
293
|
+
else if (reasoning.omittedMarker != null && !insertedReasoningOmission) {
|
|
294
|
+
result.push({ kind: 'reasoning', text: reasoning.omittedMarker });
|
|
295
|
+
insertedReasoningOmission = true;
|
|
296
|
+
}
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
if (!process.retainedIndexes.has(item.processStepIndex)) {
|
|
300
|
+
if (process.omittedMarker != null && !insertedProcessOmission) {
|
|
301
|
+
result.push({ kind: 'narration', text: process.omittedMarker });
|
|
302
|
+
insertedProcessOmission = true;
|
|
303
|
+
}
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
if (process.omittedMarker != null && !insertedProcessOmission) {
|
|
307
|
+
result.push({ kind: 'narration', text: process.omittedMarker });
|
|
308
|
+
insertedProcessOmission = true;
|
|
309
|
+
}
|
|
310
|
+
if (item.kind === 'narration') {
|
|
311
|
+
result.push({ kind: 'narration', text: item.text });
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
result.push({ kind: 'toolGroup', tools: item.tools });
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return result;
|
|
256
318
|
}
|
|
257
319
|
function parseSubagentInput(input) {
|
|
258
320
|
const record = coerceRecord(input);
|
package/package.json
CHANGED