openhorse 0.2.5 → 0.2.8

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 (150) hide show
  1. package/dist/commands/index.d.ts.map +1 -1
  2. package/dist/commands/index.js +188 -2
  3. package/dist/commands/index.js.map +1 -1
  4. package/dist/commands/types.d.ts +21 -0
  5. package/dist/commands/types.d.ts.map +1 -1
  6. package/dist/commands/types.js.map +1 -1
  7. package/dist/core/checkpoint.d.ts +42 -0
  8. package/dist/core/checkpoint.d.ts.map +1 -0
  9. package/dist/core/checkpoint.js +222 -0
  10. package/dist/core/checkpoint.js.map +1 -0
  11. package/dist/core/tool-artifacts.d.ts +38 -0
  12. package/dist/core/tool-artifacts.d.ts.map +1 -0
  13. package/dist/core/tool-artifacts.js +138 -0
  14. package/dist/core/tool-artifacts.js.map +1 -0
  15. package/dist/core/warn-dedup.d.ts +39 -0
  16. package/dist/core/warn-dedup.d.ts.map +1 -0
  17. package/dist/core/warn-dedup.js +80 -0
  18. package/dist/core/warn-dedup.js.map +1 -0
  19. package/dist/framework/index.d.ts +3 -0
  20. package/dist/framework/index.d.ts.map +1 -1
  21. package/dist/framework/index.js +9 -1
  22. package/dist/framework/index.js.map +1 -1
  23. package/dist/framework/query.d.ts +4 -0
  24. package/dist/framework/query.d.ts.map +1 -1
  25. package/dist/framework/query.js +55 -139
  26. package/dist/framework/query.js.map +1 -1
  27. package/dist/framework/tool-scheduler.d.ts +103 -0
  28. package/dist/framework/tool-scheduler.d.ts.map +1 -0
  29. package/dist/framework/tool-scheduler.js +242 -0
  30. package/dist/framework/tool-scheduler.js.map +1 -0
  31. package/dist/framework/tool-serializer.d.ts +21 -0
  32. package/dist/framework/tool-serializer.d.ts.map +1 -0
  33. package/dist/framework/tool-serializer.js +68 -0
  34. package/dist/framework/tool-serializer.js.map +1 -0
  35. package/dist/framework/tool-state.d.ts +13 -0
  36. package/dist/framework/tool-state.d.ts.map +1 -1
  37. package/dist/framework/tool-state.js +1 -0
  38. package/dist/framework/tool-state.js.map +1 -1
  39. package/dist/framework/tool.d.ts +18 -1
  40. package/dist/framework/tool.d.ts.map +1 -1
  41. package/dist/framework/tool.js.map +1 -1
  42. package/dist/harness/context-harness.d.ts +1 -0
  43. package/dist/harness/context-harness.d.ts.map +1 -1
  44. package/dist/harness/context-harness.js +14 -10
  45. package/dist/harness/context-harness.js.map +1 -1
  46. package/dist/harness/evidence.d.ts +5 -0
  47. package/dist/harness/evidence.d.ts.map +1 -1
  48. package/dist/harness/evidence.js +23 -0
  49. package/dist/harness/evidence.js.map +1 -1
  50. package/dist/harness/index.d.ts +1 -1
  51. package/dist/harness/index.d.ts.map +1 -1
  52. package/dist/harness/index.js +2 -1
  53. package/dist/harness/index.js.map +1 -1
  54. package/dist/harness/intent.d.ts.map +1 -1
  55. package/dist/harness/intent.js +8 -0
  56. package/dist/harness/intent.js.map +1 -1
  57. package/dist/harness/ledger.d.ts +1 -0
  58. package/dist/harness/ledger.d.ts.map +1 -1
  59. package/dist/harness/ledger.js +2 -1
  60. package/dist/harness/ledger.js.map +1 -1
  61. package/dist/harness/types.d.ts +4 -1
  62. package/dist/harness/types.d.ts.map +1 -1
  63. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
  64. package/dist/ink-ui/screens/ReplScreen.js +29 -0
  65. package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
  66. package/dist/memory/storage.d.ts +2 -0
  67. package/dist/memory/storage.d.ts.map +1 -1
  68. package/dist/memory/storage.js +56 -32
  69. package/dist/memory/storage.js.map +1 -1
  70. package/dist/memory/vector-store.d.ts +23 -3
  71. package/dist/memory/vector-store.d.ts.map +1 -1
  72. package/dist/memory/vector-store.js +107 -37
  73. package/dist/memory/vector-store.js.map +1 -1
  74. package/dist/print-ui/launch.d.ts.map +1 -1
  75. package/dist/print-ui/launch.js +7 -0
  76. package/dist/print-ui/launch.js.map +1 -1
  77. package/dist/runtime/agent-runtime-controller.js +1 -1
  78. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  79. package/dist/runtime/agent-runtime-protocol.d.ts +4 -1
  80. package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
  81. package/dist/runtime/agent-runtime-protocol.js +6 -0
  82. package/dist/runtime/agent-runtime-protocol.js.map +1 -1
  83. package/dist/runtime/chat-controller.d.ts +1 -0
  84. package/dist/runtime/chat-controller.d.ts.map +1 -1
  85. package/dist/runtime/chat-controller.js +47 -9
  86. package/dist/runtime/chat-controller.js.map +1 -1
  87. package/dist/runtime/ui-events.d.ts +17 -0
  88. package/dist/runtime/ui-events.d.ts.map +1 -1
  89. package/dist/services/concurrent-sessions.d.ts.map +1 -1
  90. package/dist/services/concurrent-sessions.js +6 -7
  91. package/dist/services/concurrent-sessions.js.map +1 -1
  92. package/dist/services/config-dir.d.ts +29 -6
  93. package/dist/services/config-dir.d.ts.map +1 -1
  94. package/dist/services/config-dir.js +118 -17
  95. package/dist/services/config-dir.js.map +1 -1
  96. package/dist/services/doctor.d.ts.map +1 -1
  97. package/dist/services/doctor.js +137 -0
  98. package/dist/services/doctor.js.map +1 -1
  99. package/dist/services/llm.d.ts +17 -0
  100. package/dist/services/llm.d.ts.map +1 -1
  101. package/dist/services/llm.js +11 -0
  102. package/dist/services/llm.js.map +1 -1
  103. package/dist/services/session-index.d.ts +5 -0
  104. package/dist/services/session-index.d.ts.map +1 -1
  105. package/dist/services/session-index.js +19 -10
  106. package/dist/services/session-index.js.map +1 -1
  107. package/dist/services/session-storage.d.ts +10 -0
  108. package/dist/services/session-storage.d.ts.map +1 -1
  109. package/dist/services/session-storage.js +80 -69
  110. package/dist/services/session-storage.js.map +1 -1
  111. package/dist/services/storage-maintenance.d.ts +53 -0
  112. package/dist/services/storage-maintenance.d.ts.map +1 -0
  113. package/dist/services/storage-maintenance.js +375 -0
  114. package/dist/services/storage-maintenance.js.map +1 -0
  115. package/dist/services/web-search-adapters.d.ts.map +1 -1
  116. package/dist/services/web-search-adapters.js +20 -1
  117. package/dist/services/web-search-adapters.js.map +1 -1
  118. package/dist/services/web-search-mcp.d.ts.map +1 -1
  119. package/dist/services/web-search-mcp.js +20 -1
  120. package/dist/services/web-search-mcp.js.map +1 -1
  121. package/dist/skills/loader.d.ts.map +1 -1
  122. package/dist/skills/loader.js +4 -3
  123. package/dist/skills/loader.js.map +1 -1
  124. package/dist/terminal-ui/launch.d.ts.map +1 -1
  125. package/dist/terminal-ui/launch.js +40 -18
  126. package/dist/terminal-ui/launch.js.map +1 -1
  127. package/dist/tools/index.d.ts +10 -2
  128. package/dist/tools/index.d.ts.map +1 -1
  129. package/dist/tools/index.js +154 -28
  130. package/dist/tools/index.js.map +1 -1
  131. package/dist/tui-ui/layout.js +22 -0
  132. package/dist/tui-ui/layout.js.map +1 -1
  133. package/dist/tui-ui/runner.d.ts.map +1 -1
  134. package/dist/tui-ui/runner.js +21 -0
  135. package/dist/tui-ui/runner.js.map +1 -1
  136. package/dist/tui-ui/state.d.ts +8 -1
  137. package/dist/tui-ui/state.d.ts.map +1 -1
  138. package/dist/tui-ui/state.js +8 -0
  139. package/dist/tui-ui/state.js.map +1 -1
  140. package/dist/ui-v2/components/edit-preview-picker.d.ts +26 -0
  141. package/dist/ui-v2/components/edit-preview-picker.d.ts.map +1 -0
  142. package/dist/ui-v2/components/edit-preview-picker.js +79 -0
  143. package/dist/ui-v2/components/edit-preview-picker.js.map +1 -0
  144. package/dist/ui-v2/index.d.ts +1 -0
  145. package/dist/ui-v2/index.d.ts.map +1 -1
  146. package/dist/ui-v2/index.js +1 -0
  147. package/dist/ui-v2/index.js.map +1 -1
  148. package/dist/ui-v2/types.d.ts +1 -1
  149. package/dist/ui-v2/types.d.ts.map +1 -1
  150. package/package.json +1 -1
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ /**
3
+ * openhorse - File Checkpoints
4
+ *
5
+ * Before editing files, create recoverable snapshots so the user can
6
+ * undo agent changes back to a specific turn.
7
+ *
8
+ * Storage: ~/.openhorse/projects/<project-key>/checkpoints/<turnId>/<file>
9
+ * TTL: 7 days
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.CHECKPOINT_TTL_MS = void 0;
46
+ exports.createCheckpoint = createCheckpoint;
47
+ exports.restoreCheckpoint = restoreCheckpoint;
48
+ exports.listCheckpoints = listCheckpoints;
49
+ exports.cleanupCheckpoints = cleanupCheckpoints;
50
+ const fs = __importStar(require("fs"));
51
+ const path = __importStar(require("path"));
52
+ const config_dir_1 = require("../services/config-dir");
53
+ exports.CHECKPOINT_TTL_MS = 7 * 24 * 60 * 60 * 1000; // 7 days
54
+ function getCheckpointDir(projectPath) {
55
+ const dir = (0, config_dir_1.getProjectCheckpointsDir)(projectPath);
56
+ if (!fs.existsSync(dir)) {
57
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
58
+ }
59
+ return dir;
60
+ }
61
+ function getLegacyCheckpointDir(projectPath) {
62
+ return path.join((0, config_dir_1.getProjectSessionsDir)(projectPath), '_checkpoints');
63
+ }
64
+ function getTurnDir(projectPath, turnId) {
65
+ const base = getCheckpointDir(projectPath);
66
+ return path.join(base, `${turnId}`);
67
+ }
68
+ function getExistingTurnDir(projectPath, turnId) {
69
+ const canonical = path.join((0, config_dir_1.getProjectCheckpointsDir)(projectPath), `${turnId}`);
70
+ if (fs.existsSync(canonical))
71
+ return canonical;
72
+ const legacy = path.join(getLegacyCheckpointDir(projectPath), `${turnId}`);
73
+ if (fs.existsSync(legacy))
74
+ return legacy;
75
+ return canonical;
76
+ }
77
+ /**
78
+ * Create a checkpoint for the given files at the current state.
79
+ * Files are saved individually so they can be restored independently.
80
+ */
81
+ function createCheckpoint(projectPath, turnId, filePaths) {
82
+ if (!projectPath || filePaths.length === 0)
83
+ return null;
84
+ const dir = getTurnDir(projectPath, turnId);
85
+ if (fs.existsSync(dir))
86
+ return null; // Already exists
87
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
88
+ const files = [];
89
+ for (const filePath of filePaths) {
90
+ try {
91
+ if (!fs.existsSync(filePath))
92
+ continue;
93
+ const content = fs.readFileSync(filePath, 'utf8');
94
+ const relativePath = path.relative(projectPath, filePath);
95
+ const checkpointPath = path.join(dir, safeFileName(relativePath));
96
+ fs.mkdirSync(path.dirname(checkpointPath), { recursive: true });
97
+ fs.writeFileSync(checkpointPath, content, { mode: 0o600 });
98
+ files.push({
99
+ path: relativePath,
100
+ content: content.slice(0, 200), // Preview only
101
+ sizeBytes: Buffer.byteLength(content, 'utf8'),
102
+ });
103
+ }
104
+ catch {
105
+ // Skip files that can't be read
106
+ }
107
+ }
108
+ // Write checkpoint metadata
109
+ const meta = { turnId, createdAt: Date.now(), files };
110
+ fs.writeFileSync(path.join(dir, '.checkpoint.json'), JSON.stringify(meta, null, 2), { mode: 0o600 });
111
+ return meta;
112
+ }
113
+ /**
114
+ * Restore a checkpoint — overwrite current files with checkpointed content.
115
+ * Returns the list of restored files.
116
+ */
117
+ function restoreCheckpoint(projectPath, turnId) {
118
+ if (!projectPath)
119
+ return { restored: [], error: 'No project path' };
120
+ const dir = getExistingTurnDir(projectPath, turnId);
121
+ if (!fs.existsSync(dir)) {
122
+ return { restored: [], error: `No checkpoint found for turn ${turnId}` };
123
+ }
124
+ const metaPath = path.join(dir, '.checkpoint.json');
125
+ if (!fs.existsSync(metaPath)) {
126
+ return { restored: [], error: 'Checkpoint metadata missing' };
127
+ }
128
+ let meta;
129
+ try {
130
+ meta = JSON.parse(fs.readFileSync(metaPath, 'utf8'));
131
+ }
132
+ catch {
133
+ return { restored: [], error: 'Checkpoint metadata corrupted' };
134
+ }
135
+ const restored = [];
136
+ for (const file of meta.files) {
137
+ const checkpointFile = path.join(dir, safeFileName(file.path));
138
+ const targetFile = path.join(projectPath, file.path);
139
+ try {
140
+ if (!fs.existsSync(checkpointFile))
141
+ continue;
142
+ const content = fs.readFileSync(checkpointFile, 'utf8');
143
+ fs.mkdirSync(path.dirname(targetFile), { recursive: true });
144
+ fs.writeFileSync(targetFile, content, { mode: 0o600 });
145
+ restored.push(file.path);
146
+ }
147
+ catch {
148
+ // Skip files that can't be restored
149
+ }
150
+ }
151
+ return { restored };
152
+ }
153
+ /**
154
+ * List available checkpoints for a project.
155
+ */
156
+ function listCheckpoints(projectPath) {
157
+ if (!projectPath)
158
+ return [];
159
+ const dirs = [getCheckpointDir(projectPath), getLegacyCheckpointDir(projectPath)];
160
+ const checkpointsByTurn = new Map();
161
+ for (const dir of dirs) {
162
+ if (!fs.existsSync(dir))
163
+ continue;
164
+ for (const entry of fs.readdirSync(dir)) {
165
+ const metaPath = path.join(dir, entry, '.checkpoint.json');
166
+ if (fs.existsSync(metaPath)) {
167
+ try {
168
+ const checkpoint = JSON.parse(fs.readFileSync(metaPath, 'utf8'));
169
+ if (!checkpointsByTurn.has(checkpoint.turnId)) {
170
+ checkpointsByTurn.set(checkpoint.turnId, checkpoint);
171
+ }
172
+ }
173
+ catch {
174
+ // Skip corrupted metadata
175
+ }
176
+ }
177
+ }
178
+ }
179
+ return Array.from(checkpointsByTurn.values()).sort((a, b) => b.createdAt - a.createdAt);
180
+ }
181
+ /**
182
+ * Clean up checkpoints older than the TTL (7 days).
183
+ */
184
+ function cleanupCheckpoints(projectPath) {
185
+ if (!projectPath)
186
+ return 0;
187
+ const dirs = [getCheckpointDir(projectPath), getLegacyCheckpointDir(projectPath)];
188
+ let cleaned = 0;
189
+ const now = Date.now();
190
+ for (const dir of dirs) {
191
+ if (!fs.existsSync(dir))
192
+ continue;
193
+ for (const entry of fs.readdirSync(dir)) {
194
+ if (entry === '.checkpoint.json')
195
+ continue; // Skip stray meta files
196
+ const entryPath = path.join(dir, entry);
197
+ try {
198
+ const stat = fs.statSync(entryPath);
199
+ if (!stat.isDirectory())
200
+ continue;
201
+ // Check the meta file's mtime
202
+ const metaPath = path.join(entryPath, '.checkpoint.json');
203
+ if (fs.existsSync(metaPath)) {
204
+ const metaStat = fs.statSync(metaPath);
205
+ if (now - metaStat.mtimeMs > exports.CHECKPOINT_TTL_MS) {
206
+ fs.rmSync(entryPath, { recursive: true, force: true });
207
+ cleaned++;
208
+ }
209
+ }
210
+ }
211
+ catch {
212
+ // Skip entries that can't be accessed
213
+ }
214
+ }
215
+ }
216
+ return cleaned;
217
+ }
218
+ function safeFileName(filePath) {
219
+ // Replace problematic characters in file names for safe storage
220
+ return filePath.replace(/[<>:"|?*]/g, '_');
221
+ }
222
+ //# sourceMappingURL=checkpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/core/checkpoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * openhorse - Tool Artifacts
3
+ *
4
+ * Store large tool outputs as disk artifacts instead of embedding them in
5
+ * session transcripts or harness evidence. Returns a reference ID that can
6
+ * be used to retrieve the full output later.
7
+ */
8
+ /** Maximum output size before truncation + artifact storage (10KB) */
9
+ export declare const ARTIFACT_THRESHOLD = 10240;
10
+ export interface ToolArtifact {
11
+ /** Unique artifact reference ID */
12
+ id: string;
13
+ /** Size in bytes of the full output */
14
+ outputBytes: number;
15
+ /** Whether the output was truncated */
16
+ truncated: boolean;
17
+ /** Path to the artifact file on disk (relative to artifact dir) */
18
+ path: string;
19
+ }
20
+ /**
21
+ * Store a large output as an artifact file and return a reference.
22
+ * Returns null if the project path is not available (falls back to inline).
23
+ */
24
+ export declare function storeArtifact(projectPath: string | undefined, toolName: string, output: string, outputBytes: number): ToolArtifact | null;
25
+ /**
26
+ * Retrieve a stored artifact by path.
27
+ */
28
+ export declare function retrieveArtifact(artifactPath: string): string | null;
29
+ /**
30
+ * Truncate a large output for inline context display.
31
+ * Shows the first portion and last portion with an ellipsis in between.
32
+ */
33
+ export declare function truncateForContext(output: string, maxBytes?: number): string;
34
+ /**
35
+ * Clean up expired artifacts (older than 24h).
36
+ */
37
+ export declare function cleanupArtifacts(projectPath: string): void;
38
+ //# sourceMappingURL=tool-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-artifacts.d.ts","sourceRoot":"","sources":["../../src/core/tool-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,sEAAsE;AACtE,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAezC,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,YAAY,GAAG,IAAI,CAkBrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOpE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAO,GAAG,MAAM,CAS1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAmB1D"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ /**
3
+ * openhorse - Tool Artifacts
4
+ *
5
+ * Store large tool outputs as disk artifacts instead of embedding them in
6
+ * session transcripts or harness evidence. Returns a reference ID that can
7
+ * be used to retrieve the full output later.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.ARTIFACT_THRESHOLD = void 0;
44
+ exports.storeArtifact = storeArtifact;
45
+ exports.retrieveArtifact = retrieveArtifact;
46
+ exports.truncateForContext = truncateForContext;
47
+ exports.cleanupArtifacts = cleanupArtifacts;
48
+ const fs = __importStar(require("fs"));
49
+ const path = __importStar(require("path"));
50
+ const config_dir_1 = require("../services/config-dir");
51
+ /** Maximum output size before truncation + artifact storage (10KB) */
52
+ exports.ARTIFACT_THRESHOLD = 10240;
53
+ /** Directory for tool artifacts */
54
+ function getArtifactDir(projectPath) {
55
+ const dir = (0, config_dir_1.getProjectArtifactsDir)(projectPath);
56
+ if (!fs.existsSync(dir)) {
57
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
58
+ }
59
+ return dir;
60
+ }
61
+ function getLegacyArtifactDir(projectPath) {
62
+ return path.join((0, config_dir_1.getProjectSessionsDir)(projectPath), '_artifacts');
63
+ }
64
+ /**
65
+ * Store a large output as an artifact file and return a reference.
66
+ * Returns null if the project path is not available (falls back to inline).
67
+ */
68
+ function storeArtifact(projectPath, toolName, output, outputBytes) {
69
+ if (!projectPath)
70
+ return null;
71
+ const id = `${toolName}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
72
+ const artifactDir = getArtifactDir(projectPath);
73
+ const artifactPath = path.join(artifactDir, `${id}.txt`);
74
+ try {
75
+ fs.writeFileSync(artifactPath, output, { mode: 0o600 });
76
+ return {
77
+ id,
78
+ outputBytes,
79
+ truncated: false,
80
+ path: artifactPath,
81
+ };
82
+ }
83
+ catch {
84
+ return null;
85
+ }
86
+ }
87
+ /**
88
+ * Retrieve a stored artifact by path.
89
+ */
90
+ function retrieveArtifact(artifactPath) {
91
+ try {
92
+ if (!fs.existsSync(artifactPath))
93
+ return null;
94
+ return fs.readFileSync(artifactPath, 'utf8');
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ }
100
+ /**
101
+ * Truncate a large output for inline context display.
102
+ * Shows the first portion and last portion with an ellipsis in between.
103
+ */
104
+ function truncateForContext(output, maxBytes = 4096) {
105
+ const byteLen = Buffer.byteLength(output, 'utf8');
106
+ if (byteLen <= maxBytes)
107
+ return output;
108
+ const half = Math.floor(maxBytes / 2);
109
+ const buf = Buffer.from(output, 'utf8');
110
+ const head = buf.subarray(0, half).toString('utf8');
111
+ const tail = buf.subarray(buf.length - half).toString('utf8');
112
+ return `${head}\n\n[... ${byteLen - maxBytes} bytes truncated, ${byteLen}B total — see artifact for full output]\n\n${tail}`;
113
+ }
114
+ /**
115
+ * Clean up expired artifacts (older than 24h).
116
+ */
117
+ function cleanupArtifacts(projectPath) {
118
+ const artifactDirs = [getArtifactDir(projectPath), getLegacyArtifactDir(projectPath)];
119
+ const now = Date.now();
120
+ for (const artifactDir of artifactDirs) {
121
+ if (!fs.existsSync(artifactDir))
122
+ continue;
123
+ const entries = fs.readdirSync(artifactDir);
124
+ for (const entry of entries) {
125
+ const fullPath = path.join(artifactDir, entry);
126
+ try {
127
+ const stat = fs.statSync(fullPath);
128
+ if (now - stat.mtimeMs > 24 * 60 * 60 * 1000) {
129
+ fs.unlinkSync(fullPath);
130
+ }
131
+ }
132
+ catch {
133
+ // Best-effort
134
+ }
135
+ }
136
+ }
137
+ }
138
+ //# sourceMappingURL=tool-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-artifacts.js","sourceRoot":"","sources":["../../src/core/tool-artifacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * openhorse - Warning Deduplication
3
+ *
4
+ * Suppresses repeated console warnings in CI and interactive sessions.
5
+ * Each unique warning key is emitted once, with a counter for subsequent
6
+ * identical warnings. On process exit or explicit flush, a summary line
7
+ * reports how many duplicates were suppressed.
8
+ *
9
+ * Usage:
10
+ * import { warnOnce, flushWarnings } from '../core/warn-dedup';
11
+ * warnOnce('sqlite-vec', '[VectorStore] sqlite-vec not available: ...');
12
+ */
13
+ interface WarningCount {
14
+ message: string;
15
+ count: number;
16
+ }
17
+ /**
18
+ * Emit a warning only once per unique key. Subsequent calls with the same
19
+ * key are silently counted.
20
+ *
21
+ * @param key Stable identifier (e.g. 'sqlite-vec', 'skill-frontmatter')
22
+ * @param message Warning text (logged on first occurrence)
23
+ */
24
+ export declare function warnOnce(key: string, message: string): void;
25
+ /**
26
+ * Flush accumulated warning summary. Call once at session exit or test
27
+ * teardown. Returns the summary string (empty if no warnings were seen).
28
+ */
29
+ export declare function flushWarnings(): string;
30
+ /**
31
+ * Reset dedup state (for tests).
32
+ */
33
+ export declare function resetWarnings(): void;
34
+ /**
35
+ * Return the current dedup state for testing.
36
+ */
37
+ export declare function getWarningState(): ReadonlyMap<string, WarningCount>;
38
+ export {};
39
+ //# sourceMappingURL=warn-dedup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warn-dedup.d.ts","sourceRoot":"","sources":["../../src/core/warn-dedup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAKD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAW3D;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAsBtC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAEnE"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ /**
3
+ * openhorse - Warning Deduplication
4
+ *
5
+ * Suppresses repeated console warnings in CI and interactive sessions.
6
+ * Each unique warning key is emitted once, with a counter for subsequent
7
+ * identical warnings. On process exit or explicit flush, a summary line
8
+ * reports how many duplicates were suppressed.
9
+ *
10
+ * Usage:
11
+ * import { warnOnce, flushWarnings } from '../core/warn-dedup';
12
+ * warnOnce('sqlite-vec', '[VectorStore] sqlite-vec not available: ...');
13
+ */
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.warnOnce = warnOnce;
19
+ exports.flushWarnings = flushWarnings;
20
+ exports.resetWarnings = resetWarnings;
21
+ exports.getWarningState = getWarningState;
22
+ const chalk_1 = __importDefault(require("chalk"));
23
+ const _seen = new Map();
24
+ let _flushed = false;
25
+ /**
26
+ * Emit a warning only once per unique key. Subsequent calls with the same
27
+ * key are silently counted.
28
+ *
29
+ * @param key Stable identifier (e.g. 'sqlite-vec', 'skill-frontmatter')
30
+ * @param message Warning text (logged on first occurrence)
31
+ */
32
+ function warnOnce(key, message) {
33
+ if (_flushed)
34
+ return;
35
+ const existing = _seen.get(key);
36
+ if (!existing) {
37
+ _seen.set(key, { message, count: 1 });
38
+ console.warn(chalk_1.default.yellow(`⚠ ${message}`));
39
+ return;
40
+ }
41
+ existing.count++;
42
+ }
43
+ /**
44
+ * Flush accumulated warning summary. Call once at session exit or test
45
+ * teardown. Returns the summary string (empty if no warnings were seen).
46
+ */
47
+ function flushWarnings() {
48
+ if (_flushed || _seen.size === 0)
49
+ return '';
50
+ _flushed = true;
51
+ const lines = [];
52
+ let suppressed = 0;
53
+ for (const [, wc] of _seen) {
54
+ if (wc.count > 1) {
55
+ suppressed += wc.count - 1;
56
+ lines.push(` [x${wc.count}] ${wc.message}`);
57
+ }
58
+ }
59
+ if (suppressed > 0) {
60
+ lines.unshift(chalk_1.default.yellow(`\n⚠ ${suppressed} duplicate warning(s) suppressed:`));
61
+ const summary = lines.join('\n');
62
+ console.warn(summary);
63
+ return summary;
64
+ }
65
+ return '';
66
+ }
67
+ /**
68
+ * Reset dedup state (for tests).
69
+ */
70
+ function resetWarnings() {
71
+ _seen.clear();
72
+ _flushed = false;
73
+ }
74
+ /**
75
+ * Return the current dedup state for testing.
76
+ */
77
+ function getWarningState() {
78
+ return _seen;
79
+ }
80
+ //# sourceMappingURL=warn-dedup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warn-dedup.js","sourceRoot":"","sources":["../../src/core/warn-dedup.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;AAmBH,4BAWC;AAMD,sCAsBC;AAKD,sCAGC;AAKD,0CAEC;AAvED,kDAA0B;AAO1B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;AAC9C,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB;;;;;;GAMG;AACH,SAAgB,QAAQ,CAAC,GAAW,EAAE,OAAe;IACnD,IAAI,QAAQ;QAAE,OAAO;IAErB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa;IAC3B,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5C,QAAQ,GAAG,IAAI,CAAC;IAEhB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QAC3B,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACjB,UAAU,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,KAAK,CAAC,OAAO,CAAC,eAAK,CAAC,MAAM,CAAC,OAAO,UAAU,mCAAmC,CAAC,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa;IAC3B,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,QAAQ,GAAG,KAAK,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -8,9 +8,12 @@
8
8
  * - State Store (pub-sub)
9
9
  */
10
10
  export { buildTool, toOpenAITool, toOpenAITools } from './tool';
11
+ export { serializeToolResult, parseToolResultEnvelope, TOOL_RESULT_SCHEMA_VERSION } from './tool-serializer';
11
12
  export type { OpenHorseTool, ToolResult, ToolContext, ToolConfig, PermissionResult, ToolInputJSONSchema, OpenAITool, } from './tool';
12
13
  export { query } from './query';
13
14
  export type { QueryEvent, QueryParams } from './query';
15
+ export { prepareToolCalls, executeToolCalls, inspectSchedule } from './tool-scheduler';
16
+ export type { PreparedToolCall, ExecutedToolCall, ToolSchedule, ToolSchedulerOptions } from './tool-scheduler';
14
17
  export { buildSystemPrompt, getSystemPrompt } from './prompt';
15
18
  export type { PromptContext, PromptSection } from './prompt';
16
19
  export { Store } from './store';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/framework/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAChE,YAAY,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,GACX,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/framework/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC7G,YAAY,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,GACX,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvF,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE/G,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC"}
@@ -9,13 +9,21 @@
9
9
  * - State Store (pub-sub)
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.resetToolState = exports.subscribeToolState = exports.setToolState = exports.getToolState = exports.upgradeHarnessState = exports.rankEvidence = exports.classifyIntent = exports.buildHarnessContext = exports.assembleHarnessMessages = exports.renderHarnessStateForCompact = exports.renderContextCapsule = exports.createContextCapsule = exports.ContextLedger = exports.createContextHarness = exports.ContextHarness = exports.Store = exports.getSystemPrompt = exports.buildSystemPrompt = exports.query = exports.toOpenAITools = exports.toOpenAITool = exports.buildTool = void 0;
12
+ exports.resetToolState = exports.subscribeToolState = exports.setToolState = exports.getToolState = exports.upgradeHarnessState = exports.rankEvidence = exports.classifyIntent = exports.buildHarnessContext = exports.assembleHarnessMessages = exports.renderHarnessStateForCompact = exports.renderContextCapsule = exports.createContextCapsule = exports.ContextLedger = exports.createContextHarness = exports.ContextHarness = exports.Store = exports.getSystemPrompt = exports.buildSystemPrompt = exports.inspectSchedule = exports.executeToolCalls = exports.prepareToolCalls = exports.query = exports.TOOL_RESULT_SCHEMA_VERSION = exports.parseToolResultEnvelope = exports.serializeToolResult = exports.toOpenAITools = exports.toOpenAITool = exports.buildTool = void 0;
13
13
  var tool_1 = require("./tool");
14
14
  Object.defineProperty(exports, "buildTool", { enumerable: true, get: function () { return tool_1.buildTool; } });
15
15
  Object.defineProperty(exports, "toOpenAITool", { enumerable: true, get: function () { return tool_1.toOpenAITool; } });
16
16
  Object.defineProperty(exports, "toOpenAITools", { enumerable: true, get: function () { return tool_1.toOpenAITools; } });
17
+ var tool_serializer_1 = require("./tool-serializer");
18
+ Object.defineProperty(exports, "serializeToolResult", { enumerable: true, get: function () { return tool_serializer_1.serializeToolResult; } });
19
+ Object.defineProperty(exports, "parseToolResultEnvelope", { enumerable: true, get: function () { return tool_serializer_1.parseToolResultEnvelope; } });
20
+ Object.defineProperty(exports, "TOOL_RESULT_SCHEMA_VERSION", { enumerable: true, get: function () { return tool_serializer_1.TOOL_RESULT_SCHEMA_VERSION; } });
17
21
  var query_1 = require("./query");
18
22
  Object.defineProperty(exports, "query", { enumerable: true, get: function () { return query_1.query; } });
23
+ var tool_scheduler_1 = require("./tool-scheduler");
24
+ Object.defineProperty(exports, "prepareToolCalls", { enumerable: true, get: function () { return tool_scheduler_1.prepareToolCalls; } });
25
+ Object.defineProperty(exports, "executeToolCalls", { enumerable: true, get: function () { return tool_scheduler_1.executeToolCalls; } });
26
+ Object.defineProperty(exports, "inspectSchedule", { enumerable: true, get: function () { return tool_scheduler_1.inspectSchedule; } });
19
27
  var prompt_1 = require("./prompt");
20
28
  Object.defineProperty(exports, "buildSystemPrompt", { enumerable: true, get: function () { return prompt_1.buildSystemPrompt; } });
21
29
  Object.defineProperty(exports, "getSystemPrompt", { enumerable: true, get: function () { return prompt_1.getSystemPrompt; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/framework/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,+BAAgE;AAAvD,iGAAA,SAAS,OAAA;AAAE,oGAAA,YAAY,OAAA;AAAE,qGAAA,aAAa,OAAA;AAW/C,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AAGd,mCAA8D;AAArD,2GAAA,iBAAiB,OAAA;AAAE,yGAAA,eAAe,OAAA;AAG3C,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AAGd,sCAYoB;AAXlB,yGAAA,cAAc,OAAA;AACd,+GAAA,oBAAoB,OAAA;AACpB,wGAAA,aAAa,OAAA;AACb,+GAAA,oBAAoB,OAAA;AACpB,+GAAA,oBAAoB,OAAA;AACpB,uHAAA,4BAA4B,OAAA;AAC5B,kHAAA,uBAAuB,OAAA;AACvB,8GAAA,mBAAmB,OAAA;AACnB,yGAAA,cAAc,OAAA;AACd,uGAAA,YAAY,OAAA;AACZ,8GAAA,mBAAmB,OAAA;AAerB,2CAKsB;AAJpB,0GAAA,YAAY,OAAA;AACZ,0GAAA,YAAY,OAAA;AACZ,gHAAA,kBAAkB,OAAA;AAClB,4GAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/framework/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,+BAAgE;AAAvD,iGAAA,SAAS,OAAA;AAAE,oGAAA,YAAY,OAAA;AAAE,qGAAA,aAAa,OAAA;AAC/C,qDAA6G;AAApG,sHAAA,mBAAmB,OAAA;AAAE,0HAAA,uBAAuB,OAAA;AAAE,6HAAA,0BAA0B,OAAA;AAWjF,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AAGd,mDAAuF;AAA9E,kHAAA,gBAAgB,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAAE,iHAAA,eAAe,OAAA;AAG5D,mCAA8D;AAArD,2GAAA,iBAAiB,OAAA;AAAE,yGAAA,eAAe,OAAA;AAG3C,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AAGd,sCAYoB;AAXlB,yGAAA,cAAc,OAAA;AACd,+GAAA,oBAAoB,OAAA;AACpB,wGAAA,aAAa,OAAA;AACb,+GAAA,oBAAoB,OAAA;AACpB,+GAAA,oBAAoB,OAAA;AACpB,uHAAA,4BAA4B,OAAA;AAC5B,kHAAA,uBAAuB,OAAA;AACvB,8GAAA,mBAAmB,OAAA;AACnB,yGAAA,cAAc,OAAA;AACd,uGAAA,YAAY,OAAA;AACZ,8GAAA,mBAAmB,OAAA;AAerB,2CAKsB;AAJpB,0GAAA,YAAY,OAAA;AACZ,0GAAA,YAAY,OAAA;AACZ,gHAAA,kBAAkB,OAAA;AAClB,4GAAA,cAAc,OAAA"}
@@ -38,6 +38,10 @@ export type QueryEvent = {
38
38
  result: string;
39
39
  duration: number;
40
40
  success: boolean;
41
+ artifactRef?: {
42
+ id: string;
43
+ outputBytes: number;
44
+ };
41
45
  error?: string;
42
46
  summary?: string;
43
47
  outputBytes?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/framework/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/framework/query.ts"],"names":[],"mappings":"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"}