@aexol/spectral 0.9.230 → 0.9.231

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 (172) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/designer/data/skills/blog-post.d.ts +3 -0
  3. package/dist/designer/data/skills/blog-post.d.ts.map +1 -0
  4. package/dist/designer/data/skills/blog-post.js +84 -0
  5. package/dist/designer/data/skills/blog-post.ts +87 -0
  6. package/dist/designer/data/skills/critique.d.ts +3 -0
  7. package/dist/designer/data/skills/critique.d.ts.map +1 -0
  8. package/dist/designer/data/skills/critique.js +109 -0
  9. package/dist/designer/data/skills/critique.ts +112 -0
  10. package/dist/designer/data/skills/dashboard.d.ts +3 -0
  11. package/dist/designer/data/skills/dashboard.d.ts.map +1 -0
  12. package/dist/designer/data/skills/dashboard.js +165 -0
  13. package/dist/designer/data/skills/dashboard.ts +168 -0
  14. package/dist/designer/data/skills/design-brief.d.ts +3 -0
  15. package/dist/designer/data/skills/design-brief.d.ts.map +1 -0
  16. package/dist/designer/data/skills/design-brief.js +141 -0
  17. package/dist/designer/data/skills/design-brief.ts +144 -0
  18. package/dist/designer/data/skills/design-skill.d.ts +10 -0
  19. package/dist/designer/data/skills/design-skill.d.ts.map +1 -0
  20. package/dist/designer/data/skills/design-skill.js +1 -0
  21. package/dist/designer/data/skills/design-skill.ts +9 -0
  22. package/dist/designer/data/skills/docs-page.d.ts +3 -0
  23. package/dist/designer/data/skills/docs-page.d.ts.map +1 -0
  24. package/dist/designer/data/skills/docs-page.js +68 -0
  25. package/dist/designer/data/skills/docs-page.ts +71 -0
  26. package/dist/designer/data/skills/index.d.ts +3 -0
  27. package/dist/designer/data/skills/index.d.ts.map +1 -0
  28. package/dist/designer/data/skills/index.js +28 -0
  29. package/dist/designer/data/skills/index.ts +30 -0
  30. package/dist/designer/data/skills/magazine-poster.d.ts +3 -0
  31. package/dist/designer/data/skills/magazine-poster.d.ts.map +1 -0
  32. package/dist/designer/data/skills/magazine-poster.js +70 -0
  33. package/dist/designer/data/skills/magazine-poster.ts +73 -0
  34. package/dist/designer/data/skills/mobile-app.d.ts +3 -0
  35. package/dist/designer/data/skills/mobile-app.d.ts.map +1 -0
  36. package/dist/designer/data/skills/mobile-app.js +229 -0
  37. package/dist/designer/data/skills/mobile-app.ts +232 -0
  38. package/dist/designer/data/skills/motion-frames.d.ts +3 -0
  39. package/dist/designer/data/skills/motion-frames.d.ts.map +1 -0
  40. package/dist/designer/data/skills/motion-frames.js +121 -0
  41. package/dist/designer/data/skills/motion-frames.ts +124 -0
  42. package/dist/designer/data/skills/pricing-page.d.ts +3 -0
  43. package/dist/designer/data/skills/pricing-page.d.ts.map +1 -0
  44. package/dist/designer/data/skills/pricing-page.js +76 -0
  45. package/dist/designer/data/skills/pricing-page.ts +79 -0
  46. package/dist/designer/data/skills/saas-landing.d.ts +3 -0
  47. package/dist/designer/data/skills/saas-landing.d.ts.map +1 -0
  48. package/dist/designer/data/skills/saas-landing.js +71 -0
  49. package/dist/designer/data/skills/saas-landing.ts +74 -0
  50. package/dist/designer/data/skills/slide-deck.d.ts +3 -0
  51. package/dist/designer/data/skills/slide-deck.d.ts.map +1 -0
  52. package/dist/designer/data/skills/slide-deck.js +213 -0
  53. package/dist/designer/data/skills/slide-deck.ts +216 -0
  54. package/dist/designer/data/skills/social-carousel.d.ts +3 -0
  55. package/dist/designer/data/skills/social-carousel.d.ts.map +1 -0
  56. package/dist/designer/data/skills/social-carousel.js +135 -0
  57. package/dist/designer/data/skills/social-carousel.ts +138 -0
  58. package/dist/designer/data/skills/web-prototype.d.ts +3 -0
  59. package/dist/designer/data/skills/web-prototype.d.ts.map +1 -0
  60. package/dist/designer/data/skills/web-prototype.js +159 -0
  61. package/dist/designer/data/skills/web-prototype.ts +162 -0
  62. package/dist/designer/skills.d.ts +4 -10
  63. package/dist/designer/skills.d.ts.map +1 -1
  64. package/dist/designer/skills.js +2 -1643
  65. package/dist/extensions/wizard/index.js +9 -1
  66. package/dist/generated/parser/ast/nodes.d.ts +115 -0
  67. package/dist/generated/parser/ast/nodes.d.ts.map +1 -0
  68. package/dist/generated/parser/ast/nodes.js +8 -0
  69. package/dist/generated/parser/lexer/lexer.d.ts +28 -0
  70. package/dist/generated/parser/lexer/lexer.d.ts.map +1 -0
  71. package/dist/generated/parser/{lexer.js → lexer/lexer.js} +1 -180
  72. package/dist/generated/parser/{lexer.d.ts → lexer/tokens.d.ts} +5 -24
  73. package/dist/generated/parser/lexer/tokens.d.ts.map +1 -0
  74. package/dist/generated/parser/lexer/tokens.js +187 -0
  75. package/dist/generated/parser/mod.d.ts +5 -7
  76. package/dist/generated/parser/mod.d.ts.map +1 -1
  77. package/dist/generated/parser/mod.js +2 -1
  78. package/dist/generated/parser/parser/cursor.d.ts +47 -0
  79. package/dist/generated/parser/parser/cursor.d.ts.map +1 -0
  80. package/dist/generated/parser/parser/cursor.js +12 -0
  81. package/dist/generated/parser/parser/definitions.d.ts +16 -0
  82. package/dist/generated/parser/parser/definitions.d.ts.map +1 -0
  83. package/dist/generated/parser/parser/definitions.js +353 -0
  84. package/dist/generated/parser/parser/expressions.d.ts +17 -0
  85. package/dist/generated/parser/parser/expressions.d.ts.map +1 -0
  86. package/dist/generated/parser/parser/expressions.js +165 -0
  87. package/dist/generated/parser/parser.d.ts +18 -133
  88. package/dist/generated/parser/parser.d.ts.map +1 -1
  89. package/dist/generated/parser/parser.js +9 -505
  90. package/dist/generated/parser/tokenizer.d.ts +1 -2
  91. package/dist/generated/parser/tokenizer.d.ts.map +1 -1
  92. package/dist/generated/parser/tokenizer.js +2 -1
  93. package/dist/generated/parser/validator.d.ts +1 -1
  94. package/dist/generated/parser/validator.d.ts.map +1 -1
  95. package/dist/mcp/glimpse-ui.js +9 -1
  96. package/dist/relay/dispatcher.d.ts +11 -104
  97. package/dist/relay/dispatcher.d.ts.map +1 -1
  98. package/dist/relay/dispatcher.js +10 -1130
  99. package/dist/relay/rest.d.ts +31 -0
  100. package/dist/relay/rest.d.ts.map +1 -0
  101. package/dist/relay/rest.js +85 -0
  102. package/dist/relay/routing.d.ts +109 -0
  103. package/dist/relay/routing.d.ts.map +1 -0
  104. package/dist/relay/routing.js +669 -0
  105. package/dist/relay/wizard-login.d.ts +17 -0
  106. package/dist/relay/wizard-login.d.ts.map +1 -0
  107. package/dist/relay/wizard-login.js +419 -0
  108. package/dist/sdk/agent-core/agent-loop.d.ts +2 -9
  109. package/dist/sdk/agent-core/agent-loop.d.ts.map +1 -1
  110. package/dist/sdk/agent-core/agent-loop.js +4 -288
  111. package/dist/sdk/agent-core/tool-execution.d.ts +33 -0
  112. package/dist/sdk/agent-core/tool-execution.d.ts.map +1 -0
  113. package/dist/sdk/agent-core/tool-execution.js +300 -0
  114. package/dist/sdk/ai/env-api-keys.js +9 -1
  115. package/dist/sdk/ai/providers/openai/reasoning-replay.d.ts +48 -0
  116. package/dist/sdk/ai/providers/openai/reasoning-replay.d.ts.map +1 -0
  117. package/dist/sdk/ai/providers/openai/reasoning-replay.js +209 -0
  118. package/dist/sdk/ai/providers/openai-completions.d.ts.map +1 -1
  119. package/dist/sdk/ai/providers/openai-completions.js +1 -203
  120. package/dist/sdk/coding-agent/core/compaction/compaction.d.ts +6 -118
  121. package/dist/sdk/coding-agent/core/compaction/compaction.d.ts.map +1 -1
  122. package/dist/sdk/coding-agent/core/compaction/compaction.js +11 -733
  123. package/dist/sdk/coding-agent/core/compaction/cut-points.d.ts +58 -0
  124. package/dist/sdk/coding-agent/core/compaction/cut-points.d.ts.map +1 -0
  125. package/dist/sdk/coding-agent/core/compaction/cut-points.js +191 -0
  126. package/dist/sdk/coding-agent/core/compaction/dedupe.d.ts +28 -0
  127. package/dist/sdk/coding-agent/core/compaction/dedupe.d.ts.map +1 -0
  128. package/dist/sdk/coding-agent/core/compaction/dedupe.js +156 -0
  129. package/dist/sdk/coding-agent/core/compaction/summarize.d.ts +21 -0
  130. package/dist/sdk/coding-agent/core/compaction/summarize.d.ts.map +1 -0
  131. package/dist/sdk/coding-agent/core/compaction/summarize.js +181 -0
  132. package/dist/sdk/coding-agent/core/compaction/tokens.d.ts +47 -0
  133. package/dist/sdk/coding-agent/core/compaction/tokens.d.ts.map +1 -0
  134. package/dist/sdk/coding-agent/core/compaction/tokens.js +224 -0
  135. package/dist/sdk/coding-agent/core/extensions/session-events.d.ts +157 -0
  136. package/dist/sdk/coding-agent/core/extensions/session-events.d.ts.map +1 -0
  137. package/dist/sdk/coding-agent/core/extensions/session-events.js +13 -0
  138. package/dist/sdk/coding-agent/core/extensions/types.d.ts +6 -365
  139. package/dist/sdk/coding-agent/core/extensions/types.d.ts.map +1 -1
  140. package/dist/sdk/coding-agent/core/extensions/types.js +2 -10
  141. package/dist/sdk/coding-agent/core/extensions/ui-types.d.ts +219 -0
  142. package/dist/sdk/coding-agent/core/extensions/ui-types.d.ts.map +1 -0
  143. package/dist/sdk/coding-agent/core/extensions/ui-types.js +4 -0
  144. package/dist/sdk/coding-agent/core/package/default-package-manager.d.ts +115 -0
  145. package/dist/sdk/coding-agent/core/package/default-package-manager.d.ts.map +1 -0
  146. package/dist/sdk/coding-agent/core/package/default-package-manager.js +1184 -0
  147. package/dist/sdk/coding-agent/core/package/discovery.d.ts +20 -0
  148. package/dist/sdk/coding-agent/core/package/discovery.d.ts.map +1 -0
  149. package/dist/sdk/coding-agent/core/package/discovery.js +283 -0
  150. package/dist/sdk/coding-agent/core/package/ignore.d.ts +29 -0
  151. package/dist/sdk/coding-agent/core/package/ignore.d.ts.map +1 -0
  152. package/dist/sdk/coding-agent/core/package/ignore.js +235 -0
  153. package/dist/sdk/coding-agent/core/package/types.d.ts +128 -0
  154. package/dist/sdk/coding-agent/core/package/types.d.ts.map +1 -0
  155. package/dist/sdk/coding-agent/core/package/types.js +18 -0
  156. package/dist/sdk/coding-agent/core/package/update-check.d.ts +43 -0
  157. package/dist/sdk/coding-agent/core/package/update-check.d.ts.map +1 -0
  158. package/dist/sdk/coding-agent/core/package/update-check.js +253 -0
  159. package/dist/sdk/coding-agent/core/package-manager.d.ts +2 -188
  160. package/dist/sdk/coding-agent/core/package-manager.d.ts.map +1 -1
  161. package/dist/sdk/coding-agent/core/package-manager.js +1 -1940
  162. package/dist/sdk/coding-agent/core/session/migrate.d.ts +18 -0
  163. package/dist/sdk/coding-agent/core/session/migrate.d.ts.map +1 -0
  164. package/dist/sdk/coding-agent/core/session/migrate.js +78 -0
  165. package/dist/sdk/coding-agent/core/session/types.d.ts +165 -0
  166. package/dist/sdk/coding-agent/core/session/types.d.ts.map +1 -0
  167. package/dist/sdk/coding-agent/core/session/types.js +4 -0
  168. package/dist/sdk/coding-agent/core/session-manager.d.ts +3 -161
  169. package/dist/sdk/coding-agent/core/session-manager.d.ts.map +1 -1
  170. package/dist/sdk/coding-agent/core/session-manager.js +4 -72
  171. package/package.json +2 -2
  172. package/dist/generated/parser/lexer.d.ts.map +0 -1
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Session file migrations (v1 → v3).
3
+ *
4
+ * Migrations mutate entries in place when loading older session files.
5
+ */
6
+ import { type FileEntry } from "./types.js";
7
+ /** Generate a unique short ID (8 hex chars, collision-checked) */
8
+ export declare function generateId(byId: {
9
+ has(id: string): boolean;
10
+ }): string;
11
+ /**
12
+ * Run all necessary migrations to bring entries to current version.
13
+ * Mutates entries in place. Returns true if any migration was applied.
14
+ */
15
+ export declare function migrateToCurrentVersion(entries: FileEntry[]): boolean;
16
+ /** Exported for testing */
17
+ export declare function migrateSessionEntries(entries: FileEntry[]): void;
18
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../../../src/sdk/coding-agent/core/session/migrate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAGL,KAAK,SAAS,EAGf,MAAM,YAAY,CAAC;AAEpB,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,MAAM,CAOrE;AAoDD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAWrE;AAED,2BAA2B;AAC3B,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAEhE"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Session file migrations (v1 → v3).
3
+ *
4
+ * Migrations mutate entries in place when loading older session files.
5
+ */
6
+ import { randomUUID } from "crypto";
7
+ import { CURRENT_SESSION_VERSION, } from "./types.js";
8
+ /** Generate a unique short ID (8 hex chars, collision-checked) */
9
+ export function generateId(byId) {
10
+ for (let i = 0; i < 100; i++) {
11
+ const id = randomUUID().slice(0, 8);
12
+ if (!byId.has(id))
13
+ return id;
14
+ }
15
+ // Fallback to full UUID if somehow we have collisions
16
+ return randomUUID();
17
+ }
18
+ /** Migrate v1 → v2: add id/parentId tree structure. Mutates in place. */
19
+ function migrateV1ToV2(entries) {
20
+ const ids = new Set();
21
+ let prevId = null;
22
+ for (const entry of entries) {
23
+ if (entry.type === "session") {
24
+ entry.version = 2;
25
+ continue;
26
+ }
27
+ entry.id = generateId(ids);
28
+ entry.parentId = prevId;
29
+ prevId = entry.id;
30
+ // Convert firstKeptEntryIndex to firstKeptEntryId for compaction
31
+ if (entry.type === "compaction") {
32
+ const comp = entry;
33
+ if (typeof comp.firstKeptEntryIndex === "number") {
34
+ const targetEntry = entries[comp.firstKeptEntryIndex];
35
+ if (targetEntry && targetEntry.type !== "session") {
36
+ comp.firstKeptEntryId = targetEntry.id;
37
+ }
38
+ delete comp.firstKeptEntryIndex;
39
+ }
40
+ }
41
+ }
42
+ }
43
+ /** Migrate v2 → v3: rename hookMessage role to custom. Mutates in place. */
44
+ function migrateV2ToV3(entries) {
45
+ for (const entry of entries) {
46
+ if (entry.type === "session") {
47
+ entry.version = 3;
48
+ continue;
49
+ }
50
+ // Update message entries with hookMessage role
51
+ if (entry.type === "message") {
52
+ const msgEntry = entry;
53
+ if (msgEntry.message &&
54
+ msgEntry.message.role === "hookMessage") {
55
+ msgEntry.message.role = "custom";
56
+ }
57
+ }
58
+ }
59
+ }
60
+ /**
61
+ * Run all necessary migrations to bring entries to current version.
62
+ * Mutates entries in place. Returns true if any migration was applied.
63
+ */
64
+ export function migrateToCurrentVersion(entries) {
65
+ const header = entries.find((e) => e.type === "session");
66
+ const version = header?.version ?? 1;
67
+ if (version >= CURRENT_SESSION_VERSION)
68
+ return false;
69
+ if (version < 2)
70
+ migrateV1ToV2(entries);
71
+ if (version < 3)
72
+ migrateV2ToV3(entries);
73
+ return true;
74
+ }
75
+ /** Exported for testing */
76
+ export function migrateSessionEntries(entries) {
77
+ migrateToCurrentVersion(entries);
78
+ }
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Session entry types for the session manager.
3
+ */
4
+ import type { AgentMessage } from "../../../agent-core/index.js";
5
+ import type { ImageContent, TextContent } from "../../../ai/index.js";
6
+ import type { SessionManager } from "../session-manager.js";
7
+ export declare const CURRENT_SESSION_VERSION = 3;
8
+ export interface SessionHeader {
9
+ type: "session";
10
+ version?: number;
11
+ id: string;
12
+ timestamp: string;
13
+ cwd: string;
14
+ parentSession?: string;
15
+ }
16
+ export interface NewSessionOptions {
17
+ id?: string;
18
+ parentSession?: string;
19
+ }
20
+ export interface SessionEntryBase {
21
+ type: string;
22
+ id: string;
23
+ parentId: string | null;
24
+ timestamp: string;
25
+ }
26
+ export interface SessionMessageEntry extends SessionEntryBase {
27
+ type: "message";
28
+ message: AgentMessage;
29
+ }
30
+ export interface ThinkingLevelChangeEntry extends SessionEntryBase {
31
+ type: "thinking_level_change";
32
+ thinkingLevel: string;
33
+ }
34
+ export interface ModelChangeEntry extends SessionEntryBase {
35
+ type: "model_change";
36
+ provider: string;
37
+ modelId: string;
38
+ }
39
+ export interface CompactionEntry<T = unknown> extends SessionEntryBase {
40
+ type: "compaction";
41
+ summary: string;
42
+ firstKeptEntryId: string;
43
+ tokensBefore: number;
44
+ /** Extension-specific data (e.g., ArtifactIndex, version markers for structured compaction) */
45
+ details?: T;
46
+ /** True if generated by an extension, undefined/false if spectral-generated (backward compatible) */
47
+ fromHook?: boolean;
48
+ snapshot?: CompactionSnapshotMetadata;
49
+ }
50
+ /** Durable metadata for an asynchronous request-time compaction overlay. */
51
+ export interface CompactionSnapshotMetadata {
52
+ compactionId: string;
53
+ branchId: string;
54
+ leafId: string | null;
55
+ baseRevision: number;
56
+ targetTurnId: string;
57
+ /** The overlay is a request-time result, rather than a traditional prune. */
58
+ mode: "request_time";
59
+ }
60
+ export type RequestTimeCompactionStatus = "pending" | "running" | "committed" | "aborted" | "failed" | "stale";
61
+ export interface RequestTimeSnapshot {
62
+ compactionId: string;
63
+ branchId: string;
64
+ leafId: string | null;
65
+ baseRevision: number;
66
+ targetTurnId: string;
67
+ /** Immutable copies of the completed branch at the snapshot boundary. */
68
+ entries: readonly SessionEntry[];
69
+ }
70
+ export interface RequestTimeCompactionJob {
71
+ snapshot: RequestTimeSnapshot;
72
+ status: RequestTimeCompactionStatus;
73
+ }
74
+ export interface BranchSummaryEntry<T = unknown> extends SessionEntryBase {
75
+ type: "branch_summary";
76
+ fromId: string;
77
+ summary: string;
78
+ /** Extension-specific data (not sent to LLM) */
79
+ details?: T;
80
+ /** True if generated by an extension, false if spectral-generated */
81
+ fromHook?: boolean;
82
+ }
83
+ /**
84
+ * Custom entry for extensions to store extension-specific data in the session.
85
+ * Use customType to identify your extension's entries.
86
+ *
87
+ * Purpose: Persist extension state across session reloads. On reload, extensions can
88
+ * scan entries for their customType and reconstruct internal state.
89
+ *
90
+ * Does NOT participate in LLM context (ignored by buildSessionContext).
91
+ * For injecting content into context, see CustomMessageEntry.
92
+ */
93
+ export interface CustomEntry<T = unknown> extends SessionEntryBase {
94
+ type: "custom";
95
+ customType: string;
96
+ data?: T;
97
+ }
98
+ /** Label entry for user-defined bookmarks/markers on entries. */
99
+ export interface LabelEntry extends SessionEntryBase {
100
+ type: "label";
101
+ targetId: string;
102
+ label: string | undefined;
103
+ }
104
+ /** Session metadata entry (e.g., user-defined display name). */
105
+ export interface SessionInfoEntry extends SessionEntryBase {
106
+ type: "session_info";
107
+ name?: string;
108
+ }
109
+ /**
110
+ * Custom message entry for extensions to inject messages into LLM context.
111
+ * Use customType to identify your extension's entries.
112
+ *
113
+ * Unlike CustomEntry, this DOES participate in LLM context.
114
+ * The content is converted to a user message in buildSessionContext().
115
+ * Use details for extension-specific metadata (not sent to LLM).
116
+ *
117
+ * display controls TUI rendering:
118
+ * - false: hidden entirely
119
+ * - true: rendered with distinct styling (different from user messages)
120
+ */
121
+ export interface CustomMessageEntry<T = unknown> extends SessionEntryBase {
122
+ type: "custom_message";
123
+ customType: string;
124
+ content: string | (TextContent | ImageContent)[];
125
+ details?: T;
126
+ display: boolean;
127
+ }
128
+ /** Session entry - has id/parentId for tree structure (returned by "read" methods in SessionManager) */
129
+ export type SessionEntry = SessionMessageEntry | ThinkingLevelChangeEntry | ModelChangeEntry | CompactionEntry | BranchSummaryEntry | CustomEntry | CustomMessageEntry | LabelEntry | SessionInfoEntry;
130
+ /** Raw file entry (includes header) */
131
+ export type FileEntry = SessionHeader | SessionEntry;
132
+ /** Tree node for getTree() - defensive copy of session structure */
133
+ export interface SessionTreeNode {
134
+ entry: SessionEntry;
135
+ children: SessionTreeNode[];
136
+ /** Resolved label for this entry, if any */
137
+ label?: string;
138
+ /** Timestamp of the latest label change for this entry, if any */
139
+ labelTimestamp?: string;
140
+ }
141
+ export interface SessionContext {
142
+ messages: AgentMessage[];
143
+ thinkingLevel: string;
144
+ model: {
145
+ provider: string;
146
+ modelId: string;
147
+ } | null;
148
+ }
149
+ export interface SessionInfo {
150
+ path: string;
151
+ id: string;
152
+ /** Working directory where the session was started. Empty string for old sessions. */
153
+ cwd: string;
154
+ /** User-defined display name from session_info entries. */
155
+ name?: string;
156
+ /** Path to the parent session (if this session was forked). */
157
+ parentSessionPath?: string;
158
+ created: Date;
159
+ modified: Date;
160
+ messageCount: number;
161
+ firstMessage: string;
162
+ allMessagesText: string;
163
+ }
164
+ export type ReadonlySessionManager = Pick<SessionManager, "getCwd" | "getSessionDir" | "getSessionId" | "getSessionFile" | "getLeafId" | "getLeafEntry" | "getEntry" | "getLabel" | "getBranch" | "getHeader" | "getEntries" | "getTree" | "getSessionName">;
165
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/sdk/coding-agent/core/session/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Session entry types for the session manager.
3
+ */
4
+ export const CURRENT_SESSION_VERSION = 3;
@@ -1,166 +1,8 @@
1
- import { type AgentMessage } from "../../agent-core/index.js";
2
1
  import type { ImageContent, Message, TextContent } from "../../ai/index.js";
3
2
  import { type BashExecutionMessage, type CustomMessage } from "./messages.js";
4
- export declare const CURRENT_SESSION_VERSION = 3;
5
- export interface SessionHeader {
6
- type: "session";
7
- version?: number;
8
- id: string;
9
- timestamp: string;
10
- cwd: string;
11
- parentSession?: string;
12
- }
13
- export interface NewSessionOptions {
14
- id?: string;
15
- parentSession?: string;
16
- }
17
- export interface SessionEntryBase {
18
- type: string;
19
- id: string;
20
- parentId: string | null;
21
- timestamp: string;
22
- }
23
- export interface SessionMessageEntry extends SessionEntryBase {
24
- type: "message";
25
- message: AgentMessage;
26
- }
27
- export interface ThinkingLevelChangeEntry extends SessionEntryBase {
28
- type: "thinking_level_change";
29
- thinkingLevel: string;
30
- }
31
- export interface ModelChangeEntry extends SessionEntryBase {
32
- type: "model_change";
33
- provider: string;
34
- modelId: string;
35
- }
36
- export interface CompactionEntry<T = unknown> extends SessionEntryBase {
37
- type: "compaction";
38
- summary: string;
39
- firstKeptEntryId: string;
40
- tokensBefore: number;
41
- /** Extension-specific data (e.g., ArtifactIndex, version markers for structured compaction) */
42
- details?: T;
43
- /** True if generated by an extension, undefined/false if spectral-generated (backward compatible) */
44
- fromHook?: boolean;
45
- snapshot?: CompactionSnapshotMetadata;
46
- }
47
- /** Durable metadata for an asynchronous request-time compaction overlay. */
48
- export interface CompactionSnapshotMetadata {
49
- compactionId: string;
50
- branchId: string;
51
- leafId: string | null;
52
- baseRevision: number;
53
- targetTurnId: string;
54
- /** The overlay is a request-time result, rather than a traditional prune. */
55
- mode: "request_time";
56
- }
57
- export type RequestTimeCompactionStatus = "pending" | "running" | "committed" | "aborted" | "failed" | "stale";
58
- export interface RequestTimeSnapshot {
59
- compactionId: string;
60
- branchId: string;
61
- leafId: string | null;
62
- baseRevision: number;
63
- targetTurnId: string;
64
- /** Immutable copies of the completed branch at the snapshot boundary. */
65
- entries: readonly SessionEntry[];
66
- }
67
- export interface RequestTimeCompactionJob {
68
- snapshot: RequestTimeSnapshot;
69
- status: RequestTimeCompactionStatus;
70
- }
71
- export interface BranchSummaryEntry<T = unknown> extends SessionEntryBase {
72
- type: "branch_summary";
73
- fromId: string;
74
- summary: string;
75
- /** Extension-specific data (not sent to LLM) */
76
- details?: T;
77
- /** True if generated by an extension, false if spectral-generated */
78
- fromHook?: boolean;
79
- }
80
- /**
81
- * Custom entry for extensions to store extension-specific data in the session.
82
- * Use customType to identify your extension's entries.
83
- *
84
- * Purpose: Persist extension state across session reloads. On reload, extensions can
85
- * scan entries for their customType and reconstruct internal state.
86
- *
87
- * Does NOT participate in LLM context (ignored by buildSessionContext).
88
- * For injecting content into context, see CustomMessageEntry.
89
- */
90
- export interface CustomEntry<T = unknown> extends SessionEntryBase {
91
- type: "custom";
92
- customType: string;
93
- data?: T;
94
- }
95
- /** Label entry for user-defined bookmarks/markers on entries. */
96
- export interface LabelEntry extends SessionEntryBase {
97
- type: "label";
98
- targetId: string;
99
- label: string | undefined;
100
- }
101
- /** Session metadata entry (e.g., user-defined display name). */
102
- export interface SessionInfoEntry extends SessionEntryBase {
103
- type: "session_info";
104
- name?: string;
105
- }
106
- /**
107
- * Custom message entry for extensions to inject messages into LLM context.
108
- * Use customType to identify your extension's entries.
109
- *
110
- * Unlike CustomEntry, this DOES participate in LLM context.
111
- * The content is converted to a user message in buildSessionContext().
112
- * Use details for extension-specific metadata (not sent to LLM).
113
- *
114
- * display controls TUI rendering:
115
- * - false: hidden entirely
116
- * - true: rendered with distinct styling (different from user messages)
117
- */
118
- export interface CustomMessageEntry<T = unknown> extends SessionEntryBase {
119
- type: "custom_message";
120
- customType: string;
121
- content: string | (TextContent | ImageContent)[];
122
- details?: T;
123
- display: boolean;
124
- }
125
- /** Session entry - has id/parentId for tree structure (returned by "read" methods in SessionManager) */
126
- export type SessionEntry = SessionMessageEntry | ThinkingLevelChangeEntry | ModelChangeEntry | CompactionEntry | BranchSummaryEntry | CustomEntry | CustomMessageEntry | LabelEntry | SessionInfoEntry;
127
- /** Raw file entry (includes header) */
128
- export type FileEntry = SessionHeader | SessionEntry;
129
- /** Tree node for getTree() - defensive copy of session structure */
130
- export interface SessionTreeNode {
131
- entry: SessionEntry;
132
- children: SessionTreeNode[];
133
- /** Resolved label for this entry, if any */
134
- label?: string;
135
- /** Timestamp of the latest label change for this entry, if any */
136
- labelTimestamp?: string;
137
- }
138
- export interface SessionContext {
139
- messages: AgentMessage[];
140
- thinkingLevel: string;
141
- model: {
142
- provider: string;
143
- modelId: string;
144
- } | null;
145
- }
146
- export interface SessionInfo {
147
- path: string;
148
- id: string;
149
- /** Working directory where the session was started. Empty string for old sessions. */
150
- cwd: string;
151
- /** User-defined display name from session_info entries. */
152
- name?: string;
153
- /** Path to the parent session (if this session was forked). */
154
- parentSessionPath?: string;
155
- created: Date;
156
- modified: Date;
157
- messageCount: number;
158
- firstMessage: string;
159
- allMessagesText: string;
160
- }
161
- export type ReadonlySessionManager = Pick<SessionManager, "getCwd" | "getSessionDir" | "getSessionId" | "getSessionFile" | "getLeafId" | "getLeafEntry" | "getEntry" | "getLabel" | "getBranch" | "getHeader" | "getEntries" | "getTree" | "getSessionName">;
162
- /** Exported for testing */
163
- export declare function migrateSessionEntries(entries: FileEntry[]): void;
3
+ import { type CompactionEntry, type CompactionSnapshotMetadata, type FileEntry, type NewSessionOptions, type RequestTimeCompactionJob, type RequestTimeSnapshot, type SessionContext, type SessionEntry, type SessionHeader, type SessionInfo, type SessionTreeNode } from "./session/types.js";
4
+ export * from "./session/types.js";
5
+ export { migrateSessionEntries } from "./session/migrate.js";
164
6
  /** Exported for compaction.test.ts */
165
7
  export declare function parseSessionEntries(content: string): FileEntry[];
166
8
  export declare function getLatestCompactionEntry(entries: SessionEntry[]): CompactionEntry | null;
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../../src/sdk/coding-agent/core/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../../src/sdk/coding-agent/core/session-manager.ts"],"names":[],"mappings":"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"}
@@ -6,21 +6,14 @@ import { join, resolve } from "path";
6
6
  import { getAgentDir as getDefaultAgentDir, getSessionsDir, } from "../config.js";
7
7
  import { normalizePath, resolvePath } from "../utils/paths.js";
8
8
  import { createBranchSummaryMessage, createCompactionSummaryMessage, createCustomMessage, } from "./messages.js";
9
- export const CURRENT_SESSION_VERSION = 3;
9
+ import { CURRENT_SESSION_VERSION, } from "./session/types.js";
10
+ import { generateId, migrateToCurrentVersion } from "./session/migrate.js";
11
+ export * from "./session/types.js";
12
+ export { migrateSessionEntries } from "./session/migrate.js";
10
13
  const REQUEST_TIME_JOB_ENTRY = "spectral.request-time-compaction";
11
14
  function createSessionId() {
12
15
  return uuidv7();
13
16
  }
14
- /** Generate a unique short ID (8 hex chars, collision-checked) */
15
- function generateId(byId) {
16
- for (let i = 0; i < 100; i++) {
17
- const id = randomUUID().slice(0, 8);
18
- if (!byId.has(id))
19
- return id;
20
- }
21
- // Fallback to full UUID if somehow we have collisions
22
- return randomUUID();
23
- }
24
17
  function isRecord(value) {
25
18
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
26
19
  }
@@ -55,67 +48,6 @@ function hasCompletedToolBoundary(entries) {
55
48
  const stopReason = lastAssistant.stopReason;
56
49
  return stopReason !== "aborted" && stopReason !== "error";
57
50
  }
58
- /** Migrate v1 → v2: add id/parentId tree structure. Mutates in place. */
59
- function migrateV1ToV2(entries) {
60
- const ids = new Set();
61
- let prevId = null;
62
- for (const entry of entries) {
63
- if (entry.type === "session") {
64
- entry.version = 2;
65
- continue;
66
- }
67
- entry.id = generateId(ids);
68
- entry.parentId = prevId;
69
- prevId = entry.id;
70
- // Convert firstKeptEntryIndex to firstKeptEntryId for compaction
71
- if (entry.type === "compaction") {
72
- const comp = entry;
73
- if (typeof comp.firstKeptEntryIndex === "number") {
74
- const targetEntry = entries[comp.firstKeptEntryIndex];
75
- if (targetEntry && targetEntry.type !== "session") {
76
- comp.firstKeptEntryId = targetEntry.id;
77
- }
78
- delete comp.firstKeptEntryIndex;
79
- }
80
- }
81
- }
82
- }
83
- /** Migrate v2 → v3: rename hookMessage role to custom. Mutates in place. */
84
- function migrateV2ToV3(entries) {
85
- for (const entry of entries) {
86
- if (entry.type === "session") {
87
- entry.version = 3;
88
- continue;
89
- }
90
- // Update message entries with hookMessage role
91
- if (entry.type === "message") {
92
- const msgEntry = entry;
93
- if (msgEntry.message &&
94
- msgEntry.message.role === "hookMessage") {
95
- msgEntry.message.role = "custom";
96
- }
97
- }
98
- }
99
- }
100
- /**
101
- * Run all necessary migrations to bring entries to current version.
102
- * Mutates entries in place. Returns true if any migration was applied.
103
- */
104
- function migrateToCurrentVersion(entries) {
105
- const header = entries.find((e) => e.type === "session");
106
- const version = header?.version ?? 1;
107
- if (version >= CURRENT_SESSION_VERSION)
108
- return false;
109
- if (version < 2)
110
- migrateV1ToV2(entries);
111
- if (version < 3)
112
- migrateV2ToV3(entries);
113
- return true;
114
- }
115
- /** Exported for testing */
116
- export function migrateSessionEntries(entries) {
117
- migrateToCurrentVersion(entries);
118
- }
119
51
  /** Exported for compaction.test.ts */
120
52
  export function parseSessionEntries(content) {
121
53
  const entries = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aexol/spectral",
3
- "version": "0.9.230",
3
+ "version": "0.9.231",
4
4
  "description": "AI coding agent for Aexol with relay-based browser access.",
5
5
  "type": "module",
6
6
  "private": false,
@@ -115,7 +115,7 @@
115
115
  "@types/proper-lockfile": "^4.1.4",
116
116
  "@types/ws": "^8.18.1",
117
117
  "tsx": "^4.7.0",
118
- "typescript": "^5.4.0",
118
+ "typescript": "^5.7.0",
119
119
  "vitest": "^2.1.9"
120
120
  }
121
121
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../../../src/generated/parser/lexer.ts"],"names":[],"mappings":"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"}