@gencode/uni 0.3.1 → 0.4.1

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 (75) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +104 -0
  3. package/dist/shared/src/index.d.ts +1 -1
  4. package/dist/shared/src/index.d.ts.map +1 -1
  5. package/dist/shared/src/index.js.map +1 -1
  6. package/dist/shared/src/run-events.d.ts +10 -0
  7. package/dist/shared/src/run-events.d.ts.map +1 -1
  8. package/dist/shared/src/session.d.ts +15 -0
  9. package/dist/shared/src/session.d.ts.map +1 -1
  10. package/dist/uni/src/artifacts/accumulator.d.ts +17 -0
  11. package/dist/uni/src/artifacts/accumulator.d.ts.map +1 -0
  12. package/dist/uni/src/artifacts/accumulator.js +73 -0
  13. package/dist/uni/src/artifacts/accumulator.js.map +1 -0
  14. package/dist/uni/src/artifacts/parser.d.ts +14 -0
  15. package/dist/uni/src/artifacts/parser.d.ts.map +1 -0
  16. package/dist/uni/src/artifacts/parser.js +151 -0
  17. package/dist/uni/src/artifacts/parser.js.map +1 -0
  18. package/dist/uni/src/artifacts/stream-filter.d.ts +16 -0
  19. package/dist/uni/src/artifacts/stream-filter.d.ts.map +1 -0
  20. package/dist/uni/src/artifacts/stream-filter.js +93 -0
  21. package/dist/uni/src/artifacts/stream-filter.js.map +1 -0
  22. package/dist/uni/src/artifacts/tool-inference.d.ts +11 -0
  23. package/dist/uni/src/artifacts/tool-inference.d.ts.map +1 -0
  24. package/dist/uni/src/artifacts/tool-inference.js +257 -0
  25. package/dist/uni/src/artifacts/tool-inference.js.map +1 -0
  26. package/dist/uni/src/events/normalizer.d.ts.map +1 -1
  27. package/dist/uni/src/events/normalizer.js +8 -1
  28. package/dist/uni/src/events/normalizer.js.map +1 -1
  29. package/dist/uni/src/events/provider-events.d.ts.map +1 -1
  30. package/dist/uni/src/events/provider-events.js +353 -56
  31. package/dist/uni/src/events/provider-events.js.map +1 -1
  32. package/dist/uni/src/program.d.ts.map +1 -1
  33. package/dist/uni/src/program.js +8 -4
  34. package/dist/uni/src/program.js.map +1 -1
  35. package/dist/uni/src/providers/claude-code.d.ts.map +1 -1
  36. package/dist/uni/src/providers/claude-code.js +6 -2
  37. package/dist/uni/src/providers/claude-code.js.map +1 -1
  38. package/dist/uni/src/providers/codex.d.ts.map +1 -1
  39. package/dist/uni/src/providers/codex.js +13 -7
  40. package/dist/uni/src/providers/codex.js.map +1 -1
  41. package/dist/uni/src/providers/opencode.d.ts.map +1 -1
  42. package/dist/uni/src/providers/opencode.js +6 -2
  43. package/dist/uni/src/providers/opencode.js.map +1 -1
  44. package/dist/uni/src/providers/pi.d.ts.map +1 -1
  45. package/dist/uni/src/providers/pi.js +14 -5
  46. package/dist/uni/src/providers/pi.js.map +1 -1
  47. package/dist/uni/src/providers/provider-state.d.ts +10 -0
  48. package/dist/uni/src/providers/provider-state.d.ts.map +1 -0
  49. package/dist/uni/src/providers/provider-state.js +50 -0
  50. package/dist/uni/src/providers/provider-state.js.map +1 -0
  51. package/dist/uni/src/providers/spawned-provider.d.ts.map +1 -1
  52. package/dist/uni/src/providers/spawned-provider.js +36 -4
  53. package/dist/uni/src/providers/spawned-provider.js.map +1 -1
  54. package/dist/uni/src/run.d.ts.map +1 -1
  55. package/dist/uni/src/run.js +852 -336
  56. package/dist/uni/src/run.js.map +1 -1
  57. package/dist/uni/src/session/artifact-operation-store.d.ts +66 -0
  58. package/dist/uni/src/session/artifact-operation-store.d.ts.map +1 -0
  59. package/dist/uni/src/session/artifact-operation-store.js +370 -0
  60. package/dist/uni/src/session/artifact-operation-store.js.map +1 -0
  61. package/dist/uni/src/session/context-store.d.ts +37 -0
  62. package/dist/uni/src/session/context-store.d.ts.map +1 -0
  63. package/dist/uni/src/session/context-store.js +222 -0
  64. package/dist/uni/src/session/context-store.js.map +1 -0
  65. package/dist/uni/src/session/session-store.d.ts +57 -2
  66. package/dist/uni/src/session/session-store.d.ts.map +1 -1
  67. package/dist/uni/src/session/session-store.js +484 -15
  68. package/dist/uni/src/session/session-store.js.map +1 -1
  69. package/dist/uni/src/transcript/turn-accumulator.d.ts +57 -0
  70. package/dist/uni/src/transcript/turn-accumulator.d.ts.map +1 -0
  71. package/dist/uni/src/transcript/turn-accumulator.js +136 -0
  72. package/dist/uni/src/transcript/turn-accumulator.js.map +1 -0
  73. package/dist/uni/src/types.d.ts +25 -1
  74. package/dist/uni/src/types.d.ts.map +1 -1
  75. package/package.json +2 -2
@@ -0,0 +1,222 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { atomicWriteUniFile, uniContextPath, uniToolResultsDir, } from "./session-store.js";
4
+ export const UNI_CONTEXT_VERSION = 2;
5
+ export const DEFAULT_UNI_TOOL_RESULT_THRESHOLD_CHARS = 12_000;
6
+ export const DEFAULT_UNI_TOOL_RESULT_PREVIEW_CHARS = 2_000;
7
+ const MAX_TRACKED_TOOL_RESULTS = 100;
8
+ const MAX_TRACKED_BUDGETS = 200;
9
+ export async function createUniContextStore(options) {
10
+ const filePath = uniContextPath(options.dataDir, options.logicalSessionId, options.storeName);
11
+ const loaded = await loadUniContextSnapshot(options.dataDir, options.logicalSessionId, options.storeName);
12
+ const toolResults = new Map(loaded.toolResults.map((reference) => [reference.toolCallId, reference]));
13
+ const budgets = [...loaded.compaction.budgets];
14
+ let modelUsage = loaded.compaction.modelUsage;
15
+ let writeQueue = Promise.resolve();
16
+ const snapshot = () => ({
17
+ version: UNI_CONTEXT_VERSION,
18
+ updatedAt: new Date().toISOString(),
19
+ readStates: [...loaded.readStates],
20
+ toolResults: [...toolResults.values()].slice(-MAX_TRACKED_TOOL_RESULTS),
21
+ compaction: {
22
+ sessionMemory: loaded.compaction.sessionMemory,
23
+ modelUsage,
24
+ budgets: budgets.slice(-MAX_TRACKED_BUDGETS),
25
+ snips: [...loaded.compaction.snips],
26
+ collapseSpans: [...loaded.compaction.collapseSpans],
27
+ consecutiveAutocompactFailures: loaded.compaction.consecutiveAutocompactFailures,
28
+ lastCompactionAt: loaded.compaction.lastCompactionAt,
29
+ lastCompactionLayer: loaded.compaction.lastCompactionLayer,
30
+ },
31
+ });
32
+ const persist = async () => {
33
+ const next = writeQueue.catch(() => undefined).then(async () => {
34
+ await atomicWriteUniFile(filePath, `${JSON.stringify(snapshot(), null, 2)}\n`);
35
+ });
36
+ writeQueue = next;
37
+ await next;
38
+ };
39
+ // Creation is also the base-file initialization path. Existing snapshots
40
+ // are normalized to V2 while preserving all verifiable state.
41
+ await persist();
42
+ return {
43
+ getSnapshot: snapshot,
44
+ async recordModelUsage(params) {
45
+ const model = params.model.trim();
46
+ if (!model) {
47
+ throw new Error("Model usage requires a non-empty model identifier");
48
+ }
49
+ const checkpoint = {
50
+ version: 1,
51
+ model,
52
+ inputTokens: normalizeTokenCount(params.usage.input),
53
+ outputTokens: normalizeTokenCount(params.usage.output),
54
+ totalTokens: normalizeTokenCount(params.usage.total),
55
+ coveredTranscriptEntryCount: normalizeTokenCount(params.coveredTranscriptEntryCount),
56
+ recordedAt: params.recordedAt ?? new Date().toISOString(),
57
+ };
58
+ modelUsage = checkpoint;
59
+ await persist();
60
+ return checkpoint;
61
+ },
62
+ async persistToolResult(params) {
63
+ const thresholdChars = params.thresholdChars
64
+ ?? DEFAULT_UNI_TOOL_RESULT_THRESHOLD_CHARS;
65
+ if (params.content.length <= thresholdChars) {
66
+ return { content: params.content };
67
+ }
68
+ const previewChars = params.previewChars
69
+ ?? DEFAULT_UNI_TOOL_RESULT_PREVIEW_CHARS;
70
+ const resultsDir = uniToolResultsDir(options.dataDir, options.logicalSessionId, options.storeName);
71
+ const resultPath = path.join(resultsDir, safeToolResultFileName(params.toolCallId));
72
+ await atomicWriteUniFile(resultPath, params.content);
73
+ const createdAt = new Date().toISOString();
74
+ const preview = generatePreview(params.content, previewChars);
75
+ const reference = {
76
+ sessionId: options.logicalSessionId,
77
+ toolCallId: params.toolCallId,
78
+ toolName: params.toolName,
79
+ storagePath: path.relative(options.dataDir, resultPath).split(path.sep).join("/"),
80
+ preview,
81
+ originalChars: params.content.length,
82
+ truncated: true,
83
+ createdAt,
84
+ };
85
+ const budget = {
86
+ toolCallId: params.toolCallId,
87
+ toolName: params.toolName,
88
+ originalChars: params.content.length,
89
+ storedChars: params.content.length,
90
+ previewChars: preview.length,
91
+ strategy: "persist",
92
+ createdAt,
93
+ };
94
+ toolResults.set(reference.toolCallId, reference);
95
+ budgets.push(budget);
96
+ await persist();
97
+ return {
98
+ content: renderPersistedToolResult(reference),
99
+ reference,
100
+ };
101
+ },
102
+ };
103
+ }
104
+ export async function loadUniContextSnapshot(dataDir, logicalSessionId, storeName) {
105
+ try {
106
+ const parsed = JSON.parse(await fs.readFile(uniContextPath(dataDir, logicalSessionId, storeName), "utf8"));
107
+ if (parsed.version !== 1 && parsed.version !== UNI_CONTEXT_VERSION) {
108
+ return emptyUniContextSnapshot();
109
+ }
110
+ return {
111
+ version: UNI_CONTEXT_VERSION,
112
+ updatedAt: typeof parsed.updatedAt === "string"
113
+ ? parsed.updatedAt
114
+ : new Date(0).toISOString(),
115
+ readStates: Array.isArray(parsed.readStates)
116
+ ? parsed.readStates
117
+ : [],
118
+ toolResults: Array.isArray(parsed.toolResults)
119
+ ? parsed.toolResults
120
+ : [],
121
+ compaction: {
122
+ sessionMemory: parsed.compaction?.sessionMemory,
123
+ modelUsage: parseModelUsage(parsed.compaction?.modelUsage),
124
+ budgets: Array.isArray(parsed.compaction?.budgets)
125
+ ? parsed.compaction.budgets
126
+ : [],
127
+ snips: Array.isArray(parsed.compaction?.snips)
128
+ ? parsed.compaction.snips
129
+ : [],
130
+ collapseSpans: Array.isArray(parsed.compaction?.collapseSpans)
131
+ ? parsed.compaction.collapseSpans
132
+ : [],
133
+ consecutiveAutocompactFailures: typeof parsed.compaction?.consecutiveAutocompactFailures === "number"
134
+ ? parsed.compaction.consecutiveAutocompactFailures
135
+ : 0,
136
+ lastCompactionAt: typeof parsed.compaction?.lastCompactionAt === "string"
137
+ ? parsed.compaction.lastCompactionAt
138
+ : undefined,
139
+ lastCompactionLayer: isCompactionLayer(parsed.compaction?.lastCompactionLayer)
140
+ ? parsed.compaction.lastCompactionLayer
141
+ : undefined,
142
+ },
143
+ };
144
+ }
145
+ catch {
146
+ return emptyUniContextSnapshot();
147
+ }
148
+ }
149
+ export function emptyUniContextSnapshot(now = new Date(0)) {
150
+ return {
151
+ version: UNI_CONTEXT_VERSION,
152
+ updatedAt: now.toISOString(),
153
+ readStates: [],
154
+ toolResults: [],
155
+ compaction: {
156
+ budgets: [],
157
+ snips: [],
158
+ collapseSpans: [],
159
+ consecutiveAutocompactFailures: 0,
160
+ },
161
+ };
162
+ }
163
+ function parseModelUsage(value) {
164
+ if (!value || typeof value !== "object") {
165
+ return undefined;
166
+ }
167
+ const candidate = value;
168
+ if (candidate.version !== 1
169
+ || typeof candidate.model !== "string"
170
+ || typeof candidate.inputTokens !== "number"
171
+ || typeof candidate.outputTokens !== "number"
172
+ || typeof candidate.totalTokens !== "number"
173
+ || typeof candidate.coveredTranscriptEntryCount !== "number"
174
+ || typeof candidate.recordedAt !== "string") {
175
+ return undefined;
176
+ }
177
+ return {
178
+ version: 1,
179
+ model: candidate.model,
180
+ inputTokens: normalizeTokenCount(candidate.inputTokens),
181
+ outputTokens: normalizeTokenCount(candidate.outputTokens),
182
+ totalTokens: normalizeTokenCount(candidate.totalTokens),
183
+ coveredTranscriptEntryCount: normalizeTokenCount(candidate.coveredTranscriptEntryCount),
184
+ recordedAt: candidate.recordedAt,
185
+ };
186
+ }
187
+ function normalizeTokenCount(value) {
188
+ if (!Number.isFinite(value) || value < 0) {
189
+ throw new Error(`Invalid token count: ${String(value)}`);
190
+ }
191
+ return Math.floor(value);
192
+ }
193
+ function isCompactionLayer(value) {
194
+ return value === "L1"
195
+ || value === "L2"
196
+ || value === "L3"
197
+ || value === "L4"
198
+ || value === "L5"
199
+ || value === "L6";
200
+ }
201
+ function safeToolResultFileName(toolCallId) {
202
+ const encoded = encodeURIComponent(toolCallId).replace(/\./g, "%2E");
203
+ return `${encoded || "tool-result"}.txt`;
204
+ }
205
+ function generatePreview(content, maxChars) {
206
+ if (content.length <= maxChars) {
207
+ return content;
208
+ }
209
+ const truncated = content.slice(0, maxChars);
210
+ const lastNewline = truncated.lastIndexOf("\n");
211
+ const cutPoint = lastNewline > maxChars * 0.5 ? lastNewline : maxChars;
212
+ return content.slice(0, cutPoint);
213
+ }
214
+ function renderPersistedToolResult(reference) {
215
+ return [
216
+ `[tool result persisted] ${reference.toolName} output was too large (${reference.originalChars} chars).`,
217
+ `Full output: ${reference.storagePath}`,
218
+ "Preview:",
219
+ reference.preview,
220
+ ].join("\n");
221
+ }
222
+ //# sourceMappingURL=context-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-store.js","sourceRoot":"","sources":["../../../../src/session/context-store.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,13 @@
1
- import type { SessionMetadata, Channel } from "@gencode/shared";
1
+ import type { ArtifactRecord, Channel, SessionMetadata } from "@gencode/shared";
2
+ export declare const DEFAULT_UNI_SESSION_STORE_NAME = "sessions";
3
+ export type UniSessionErrorCode = "invalid_session" | "runtime_mismatch" | "provider_binding_conflict" | "legacy_unresolved" | "not_uni_session";
4
+ export declare class UniSessionError extends Error {
5
+ readonly code: UniSessionErrorCode;
6
+ constructor(code: UniSessionErrorCode, message: string);
7
+ }
2
8
  type UniTranscriptEntryBase = {
3
9
  timestamp: string;
4
- runtimeAgent?: string;
10
+ runtimeAgent: string;
5
11
  messageId?: string;
6
12
  };
7
13
  export type UniTranscriptEntry = (UniTranscriptEntryBase & {
@@ -10,6 +16,8 @@ export type UniTranscriptEntry = (UniTranscriptEntryBase & {
10
16
  }) | (UniTranscriptEntryBase & {
11
17
  role: "assistant";
12
18
  content: string;
19
+ thinking?: string;
20
+ artifacts?: ArtifactRecord[];
13
21
  toolCalls?: Array<{
14
22
  id: string;
15
23
  name: string;
@@ -29,12 +37,59 @@ export type UniTranscriptEntry = (UniTranscriptEntryBase & {
29
37
  content: string;
30
38
  isError: boolean;
31
39
  });
40
+ export type PrepareUniSessionOptions = {
41
+ dataDir: string;
42
+ logicalSessionId: string;
43
+ runtimeAgent: string;
44
+ title: string;
45
+ channel: Channel;
46
+ storeName?: string;
47
+ /** Provider-owned roots that may contain exact native session evidence. */
48
+ providerStateRoots?: readonly string[];
49
+ };
50
+ export type PreparedUniSession = {
51
+ logicalSessionId: string;
52
+ providerSessionId?: string;
53
+ metadata: SessionMetadata;
54
+ isNew: boolean;
55
+ migratedLegacy: boolean;
56
+ /** Entry count before the current run appends its user entry. */
57
+ existingTranscriptEntryCount: number;
58
+ };
59
+ export declare function normalizeUniSessionStoreName(storeName?: string): string;
60
+ export declare function uniSessionsDir(dataDir: string, storeName?: string): string;
61
+ export declare function uniSessionDir(dataDir: string, sessionId: string, storeName?: string): string;
62
+ export declare function uniMetadataPath(dataDir: string, sessionId: string, storeName?: string): string;
63
+ export declare function uniChannelPath(dataDir: string, sessionId: string, storeName?: string): string;
64
+ export declare function uniTranscriptPath(dataDir: string, sessionId: string, storeName?: string): string;
65
+ export declare function uniContextPath(dataDir: string, sessionId: string, storeName?: string): string;
66
+ export declare function uniToolResultsDir(dataDir: string, sessionId: string, storeName?: string): string;
67
+ export declare function ensureUniSessionDir(dataDir: string, sessionId: string, storeName?: string): Promise<string>;
68
+ export declare function atomicWriteUniFile(filePath: string, content: string): Promise<void>;
32
69
  export declare function saveUniSessionMetadata(dataDir: string, metadata: SessionMetadata, storeName?: string): Promise<void>;
70
+ export declare function loadUniSessionMetadata(dataDir: string, sessionId: string, storeName?: string): Promise<SessionMetadata | null>;
71
+ export type UniSessionMetadataUpdate = Partial<Omit<SessionMetadata, "id" | "createdAt" | "updatedAt">>;
72
+ export declare function updateUniSessionMetadata(dataDir: string, sessionId: string, updates: UniSessionMetadataUpdate, storeName?: string): Promise<SessionMetadata>;
73
+ export declare function ensureUniChannelFile(dataDir: string, sessionId: string, channel: Channel, storeName?: string): Promise<void>;
74
+ export declare function ensureUniTranscriptFile(dataDir: string, sessionId: string, storeName?: string): Promise<void>;
75
+ export declare function appendUniTranscriptEntries(dataDir: string, sessionId: string, entries: readonly UniTranscriptEntry[], storeName?: string): Promise<void>;
33
76
  export declare function appendUniTranscriptEntry(dataDir: string, sessionId: string, entry: UniTranscriptEntry, storeName?: string): Promise<void>;
77
+ export declare function loadUniTranscript(dataDir: string, sessionId: string, storeName?: string): Promise<UniTranscriptEntry[]>;
78
+ export declare function countUniTranscriptEntries(dataDir: string, sessionId: string, storeName?: string): Promise<number>;
34
79
  export declare function buildUniSessionMetadata(params: {
35
80
  sessionId: string;
36
81
  title: string;
37
82
  channel: Channel;
83
+ runtimeAgent?: string;
84
+ providerSessionId?: string;
38
85
  }): SessionMetadata;
86
+ export declare function prepareUniSession(options: PrepareUniSessionOptions): Promise<PreparedUniSession>;
87
+ export declare function bindUniProviderSession(params: {
88
+ dataDir: string;
89
+ logicalSessionId: string;
90
+ runtimeAgent: string;
91
+ providerSessionId: string;
92
+ storeName?: string;
93
+ }): Promise<SessionMetadata>;
39
94
  export {};
40
95
  //# sourceMappingURL=session-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../../src/session/session-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAkBhE,KAAK,sBAAsB,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B,CAAC,sBAAsB,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC,GACA,CAAC,sBAAsB,GAAG;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,CAAC,CAAC;IACH,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,GACA,CAAC,sBAAsB,GAAG;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAEL,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,eAAe,EACzB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,kBAAkB,EACzB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,eAAe,CASlB"}
1
+ {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../../src/session/session-store.ts"],"names":[],"mappings":"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"}