@aexol/spectral 0.9.229 → 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 (189) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/auth-helper.d.ts.map +1 -1
  3. package/dist/auth-helper.js +14 -8
  4. package/dist/commands/login.d.ts +12 -4
  5. package/dist/commands/login.d.ts.map +1 -1
  6. package/dist/commands/login.js +36 -15
  7. package/dist/commands/serve.d.ts.map +1 -1
  8. package/dist/commands/serve.js +3 -0
  9. package/dist/config.d.ts +15 -0
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +10 -1
  12. package/dist/designer/data/skills/blog-post.d.ts +3 -0
  13. package/dist/designer/data/skills/blog-post.d.ts.map +1 -0
  14. package/dist/designer/data/skills/blog-post.js +84 -0
  15. package/dist/designer/data/skills/blog-post.ts +87 -0
  16. package/dist/designer/data/skills/critique.d.ts +3 -0
  17. package/dist/designer/data/skills/critique.d.ts.map +1 -0
  18. package/dist/designer/data/skills/critique.js +109 -0
  19. package/dist/designer/data/skills/critique.ts +112 -0
  20. package/dist/designer/data/skills/dashboard.d.ts +3 -0
  21. package/dist/designer/data/skills/dashboard.d.ts.map +1 -0
  22. package/dist/designer/data/skills/dashboard.js +165 -0
  23. package/dist/designer/data/skills/dashboard.ts +168 -0
  24. package/dist/designer/data/skills/design-brief.d.ts +3 -0
  25. package/dist/designer/data/skills/design-brief.d.ts.map +1 -0
  26. package/dist/designer/data/skills/design-brief.js +141 -0
  27. package/dist/designer/data/skills/design-brief.ts +144 -0
  28. package/dist/designer/data/skills/design-skill.d.ts +10 -0
  29. package/dist/designer/data/skills/design-skill.d.ts.map +1 -0
  30. package/dist/designer/data/skills/design-skill.js +1 -0
  31. package/dist/designer/data/skills/design-skill.ts +9 -0
  32. package/dist/designer/data/skills/docs-page.d.ts +3 -0
  33. package/dist/designer/data/skills/docs-page.d.ts.map +1 -0
  34. package/dist/designer/data/skills/docs-page.js +68 -0
  35. package/dist/designer/data/skills/docs-page.ts +71 -0
  36. package/dist/designer/data/skills/index.d.ts +3 -0
  37. package/dist/designer/data/skills/index.d.ts.map +1 -0
  38. package/dist/designer/data/skills/index.js +28 -0
  39. package/dist/designer/data/skills/index.ts +30 -0
  40. package/dist/designer/data/skills/magazine-poster.d.ts +3 -0
  41. package/dist/designer/data/skills/magazine-poster.d.ts.map +1 -0
  42. package/dist/designer/data/skills/magazine-poster.js +70 -0
  43. package/dist/designer/data/skills/magazine-poster.ts +73 -0
  44. package/dist/designer/data/skills/mobile-app.d.ts +3 -0
  45. package/dist/designer/data/skills/mobile-app.d.ts.map +1 -0
  46. package/dist/designer/data/skills/mobile-app.js +229 -0
  47. package/dist/designer/data/skills/mobile-app.ts +232 -0
  48. package/dist/designer/data/skills/motion-frames.d.ts +3 -0
  49. package/dist/designer/data/skills/motion-frames.d.ts.map +1 -0
  50. package/dist/designer/data/skills/motion-frames.js +121 -0
  51. package/dist/designer/data/skills/motion-frames.ts +124 -0
  52. package/dist/designer/data/skills/pricing-page.d.ts +3 -0
  53. package/dist/designer/data/skills/pricing-page.d.ts.map +1 -0
  54. package/dist/designer/data/skills/pricing-page.js +76 -0
  55. package/dist/designer/data/skills/pricing-page.ts +79 -0
  56. package/dist/designer/data/skills/saas-landing.d.ts +3 -0
  57. package/dist/designer/data/skills/saas-landing.d.ts.map +1 -0
  58. package/dist/designer/data/skills/saas-landing.js +71 -0
  59. package/dist/designer/data/skills/saas-landing.ts +74 -0
  60. package/dist/designer/data/skills/slide-deck.d.ts +3 -0
  61. package/dist/designer/data/skills/slide-deck.d.ts.map +1 -0
  62. package/dist/designer/data/skills/slide-deck.js +213 -0
  63. package/dist/designer/data/skills/slide-deck.ts +216 -0
  64. package/dist/designer/data/skills/social-carousel.d.ts +3 -0
  65. package/dist/designer/data/skills/social-carousel.d.ts.map +1 -0
  66. package/dist/designer/data/skills/social-carousel.js +135 -0
  67. package/dist/designer/data/skills/social-carousel.ts +138 -0
  68. package/dist/designer/data/skills/web-prototype.d.ts +3 -0
  69. package/dist/designer/data/skills/web-prototype.d.ts.map +1 -0
  70. package/dist/designer/data/skills/web-prototype.js +159 -0
  71. package/dist/designer/data/skills/web-prototype.ts +162 -0
  72. package/dist/designer/skills.d.ts +4 -10
  73. package/dist/designer/skills.d.ts.map +1 -1
  74. package/dist/designer/skills.js +2 -1643
  75. package/dist/extensions/wizard/index.js +9 -1
  76. package/dist/generated/parser/ast/nodes.d.ts +115 -0
  77. package/dist/generated/parser/ast/nodes.d.ts.map +1 -0
  78. package/dist/generated/parser/ast/nodes.js +8 -0
  79. package/dist/generated/parser/lexer/lexer.d.ts +28 -0
  80. package/dist/generated/parser/lexer/lexer.d.ts.map +1 -0
  81. package/dist/generated/parser/{lexer.js → lexer/lexer.js} +1 -180
  82. package/dist/generated/parser/{lexer.d.ts → lexer/tokens.d.ts} +5 -24
  83. package/dist/generated/parser/lexer/tokens.d.ts.map +1 -0
  84. package/dist/generated/parser/lexer/tokens.js +187 -0
  85. package/dist/generated/parser/mod.d.ts +5 -7
  86. package/dist/generated/parser/mod.d.ts.map +1 -1
  87. package/dist/generated/parser/mod.js +2 -1
  88. package/dist/generated/parser/parser/cursor.d.ts +47 -0
  89. package/dist/generated/parser/parser/cursor.d.ts.map +1 -0
  90. package/dist/generated/parser/parser/cursor.js +12 -0
  91. package/dist/generated/parser/parser/definitions.d.ts +16 -0
  92. package/dist/generated/parser/parser/definitions.d.ts.map +1 -0
  93. package/dist/generated/parser/parser/definitions.js +353 -0
  94. package/dist/generated/parser/parser/expressions.d.ts +17 -0
  95. package/dist/generated/parser/parser/expressions.d.ts.map +1 -0
  96. package/dist/generated/parser/parser/expressions.js +165 -0
  97. package/dist/generated/parser/parser.d.ts +18 -133
  98. package/dist/generated/parser/parser.d.ts.map +1 -1
  99. package/dist/generated/parser/parser.js +9 -505
  100. package/dist/generated/parser/tokenizer.d.ts +1 -2
  101. package/dist/generated/parser/tokenizer.d.ts.map +1 -1
  102. package/dist/generated/parser/tokenizer.js +2 -1
  103. package/dist/generated/parser/validator.d.ts +1 -1
  104. package/dist/generated/parser/validator.d.ts.map +1 -1
  105. package/dist/generated/zeus/const.d.ts.map +1 -1
  106. package/dist/generated/zeus/const.js +21 -0
  107. package/dist/generated/zeus/index.d.ts +98 -0
  108. package/dist/generated/zeus/index.d.ts.map +1 -1
  109. package/dist/mcp/glimpse-ui.js +9 -1
  110. package/dist/relay/dispatcher.d.ts +11 -104
  111. package/dist/relay/dispatcher.d.ts.map +1 -1
  112. package/dist/relay/dispatcher.js +10 -1130
  113. package/dist/relay/registration.d.ts +10 -2
  114. package/dist/relay/registration.d.ts.map +1 -1
  115. package/dist/relay/registration.js +32 -3
  116. package/dist/relay/rest.d.ts +31 -0
  117. package/dist/relay/rest.d.ts.map +1 -0
  118. package/dist/relay/rest.js +85 -0
  119. package/dist/relay/routing.d.ts +109 -0
  120. package/dist/relay/routing.d.ts.map +1 -0
  121. package/dist/relay/routing.js +669 -0
  122. package/dist/relay/wizard-login.d.ts +17 -0
  123. package/dist/relay/wizard-login.d.ts.map +1 -0
  124. package/dist/relay/wizard-login.js +419 -0
  125. package/dist/sdk/agent-core/agent-loop.d.ts +2 -9
  126. package/dist/sdk/agent-core/agent-loop.d.ts.map +1 -1
  127. package/dist/sdk/agent-core/agent-loop.js +4 -288
  128. package/dist/sdk/agent-core/tool-execution.d.ts +33 -0
  129. package/dist/sdk/agent-core/tool-execution.d.ts.map +1 -0
  130. package/dist/sdk/agent-core/tool-execution.js +300 -0
  131. package/dist/sdk/ai/env-api-keys.js +9 -1
  132. package/dist/sdk/ai/providers/openai/reasoning-replay.d.ts +48 -0
  133. package/dist/sdk/ai/providers/openai/reasoning-replay.d.ts.map +1 -0
  134. package/dist/sdk/ai/providers/openai/reasoning-replay.js +209 -0
  135. package/dist/sdk/ai/providers/openai-completions.d.ts.map +1 -1
  136. package/dist/sdk/ai/providers/openai-completions.js +1 -203
  137. package/dist/sdk/coding-agent/core/compaction/compaction.d.ts +6 -118
  138. package/dist/sdk/coding-agent/core/compaction/compaction.d.ts.map +1 -1
  139. package/dist/sdk/coding-agent/core/compaction/compaction.js +11 -733
  140. package/dist/sdk/coding-agent/core/compaction/cut-points.d.ts +58 -0
  141. package/dist/sdk/coding-agent/core/compaction/cut-points.d.ts.map +1 -0
  142. package/dist/sdk/coding-agent/core/compaction/cut-points.js +191 -0
  143. package/dist/sdk/coding-agent/core/compaction/dedupe.d.ts +28 -0
  144. package/dist/sdk/coding-agent/core/compaction/dedupe.d.ts.map +1 -0
  145. package/dist/sdk/coding-agent/core/compaction/dedupe.js +156 -0
  146. package/dist/sdk/coding-agent/core/compaction/summarize.d.ts +21 -0
  147. package/dist/sdk/coding-agent/core/compaction/summarize.d.ts.map +1 -0
  148. package/dist/sdk/coding-agent/core/compaction/summarize.js +181 -0
  149. package/dist/sdk/coding-agent/core/compaction/tokens.d.ts +47 -0
  150. package/dist/sdk/coding-agent/core/compaction/tokens.d.ts.map +1 -0
  151. package/dist/sdk/coding-agent/core/compaction/tokens.js +224 -0
  152. package/dist/sdk/coding-agent/core/extensions/session-events.d.ts +157 -0
  153. package/dist/sdk/coding-agent/core/extensions/session-events.d.ts.map +1 -0
  154. package/dist/sdk/coding-agent/core/extensions/session-events.js +13 -0
  155. package/dist/sdk/coding-agent/core/extensions/types.d.ts +6 -365
  156. package/dist/sdk/coding-agent/core/extensions/types.d.ts.map +1 -1
  157. package/dist/sdk/coding-agent/core/extensions/types.js +2 -10
  158. package/dist/sdk/coding-agent/core/extensions/ui-types.d.ts +219 -0
  159. package/dist/sdk/coding-agent/core/extensions/ui-types.d.ts.map +1 -0
  160. package/dist/sdk/coding-agent/core/extensions/ui-types.js +4 -0
  161. package/dist/sdk/coding-agent/core/package/default-package-manager.d.ts +115 -0
  162. package/dist/sdk/coding-agent/core/package/default-package-manager.d.ts.map +1 -0
  163. package/dist/sdk/coding-agent/core/package/default-package-manager.js +1184 -0
  164. package/dist/sdk/coding-agent/core/package/discovery.d.ts +20 -0
  165. package/dist/sdk/coding-agent/core/package/discovery.d.ts.map +1 -0
  166. package/dist/sdk/coding-agent/core/package/discovery.js +283 -0
  167. package/dist/sdk/coding-agent/core/package/ignore.d.ts +29 -0
  168. package/dist/sdk/coding-agent/core/package/ignore.d.ts.map +1 -0
  169. package/dist/sdk/coding-agent/core/package/ignore.js +235 -0
  170. package/dist/sdk/coding-agent/core/package/types.d.ts +128 -0
  171. package/dist/sdk/coding-agent/core/package/types.d.ts.map +1 -0
  172. package/dist/sdk/coding-agent/core/package/types.js +18 -0
  173. package/dist/sdk/coding-agent/core/package/update-check.d.ts +43 -0
  174. package/dist/sdk/coding-agent/core/package/update-check.d.ts.map +1 -0
  175. package/dist/sdk/coding-agent/core/package/update-check.js +253 -0
  176. package/dist/sdk/coding-agent/core/package-manager.d.ts +2 -188
  177. package/dist/sdk/coding-agent/core/package-manager.d.ts.map +1 -1
  178. package/dist/sdk/coding-agent/core/package-manager.js +1 -1940
  179. package/dist/sdk/coding-agent/core/session/migrate.d.ts +18 -0
  180. package/dist/sdk/coding-agent/core/session/migrate.d.ts.map +1 -0
  181. package/dist/sdk/coding-agent/core/session/migrate.js +78 -0
  182. package/dist/sdk/coding-agent/core/session/types.d.ts +165 -0
  183. package/dist/sdk/coding-agent/core/session/types.d.ts.map +1 -0
  184. package/dist/sdk/coding-agent/core/session/types.js +4 -0
  185. package/dist/sdk/coding-agent/core/session-manager.d.ts +3 -161
  186. package/dist/sdk/coding-agent/core/session-manager.d.ts.map +1 -1
  187. package/dist/sdk/coding-agent/core/session-manager.js +4 -72
  188. package/package.json +2 -2
  189. 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.229",
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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"}