@inixiative/foundry-core 0.5.13 → 0.5.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/event-stream.ts +17 -3
- package/src/feedback/correction.ts +1 -1
- package/src/index.ts +1 -0
- package/src/thread.ts +15 -0
package/package.json
CHANGED
package/src/event-stream.ts
CHANGED
|
@@ -42,6 +42,8 @@ export type StreamEvent =
|
|
|
42
42
|
message: string;
|
|
43
43
|
severity: 'error' | 'warn';
|
|
44
44
|
timestamp: number;
|
|
45
|
+
/** The thread the error is about, when it is one thread's (the viewer shows it on that thread). */
|
|
46
|
+
threadId?: string;
|
|
45
47
|
}
|
|
46
48
|
| ({ kind: 'activity'; timestamp: number } & SystemActivity);
|
|
47
49
|
|
|
@@ -142,9 +144,21 @@ export class EventStream {
|
|
|
142
144
|
return events.slice(-limit);
|
|
143
145
|
}
|
|
144
146
|
|
|
145
|
-
/** Push an error event — surfaced as a toast in the viewer UI. */
|
|
146
|
-
pushError(
|
|
147
|
-
|
|
147
|
+
/** Push an error event — surfaced as a toast in the viewer UI, on its thread when it names one. */
|
|
148
|
+
pushError(
|
|
149
|
+
source: string,
|
|
150
|
+
message: string,
|
|
151
|
+
severity: 'error' | 'warn' = 'error',
|
|
152
|
+
threadId?: string,
|
|
153
|
+
): void {
|
|
154
|
+
this.push({
|
|
155
|
+
kind: 'error',
|
|
156
|
+
source,
|
|
157
|
+
message,
|
|
158
|
+
severity,
|
|
159
|
+
timestamp: Date.now(),
|
|
160
|
+
...(threadId ? { threadId } : {}),
|
|
161
|
+
});
|
|
148
162
|
}
|
|
149
163
|
|
|
150
164
|
/** Push what the system is doing (shown above the composer, never as a toast). */
|
|
@@ -340,7 +340,7 @@ export const CORRECTION_CLASSIFY_PROMPT = `You classify messages a person typed
|
|
|
340
340
|
|
|
341
341
|
A CORRECTION is feedback about how the agent works: the person redirects, fixes or rejects what the agent did, or states a rule or preference the agent should keep following beyond this task. These are NOT corrections: a new task or question, an answer to the agent's question, approving or reviewing one specific item, design discussion, status chatter.
|
|
342
342
|
|
|
343
|
-
For a correction, write each rule it carries as a statement: one imperative sentence of at most 160 characters that says when it applies ("When X, do Y." or "Never X."), general enough to hold next time, in plain words without quoting the message. At most three statements per message. Use names (products, tools, terms) only when the rule is about them.
|
|
343
|
+
For a correction, write each rule it carries as a statement: one imperative sentence of at most 160 characters that says when it applies ("When X, do Y." or "Never X."), general enough to hold next time, in plain words without quoting the message. A statement is exactly one sentence: put what to do instead in the same sentence ("…; never Y" or "…instead of Y"), never in a second sentence, and write a separate rule as a separate statement. At most three statements per message. Use names (products, tools, terms) only when the rule is about them.
|
|
344
344
|
|
|
345
345
|
Respond with JSON only, one result per message id:
|
|
346
346
|
{ "results": { "<id>": { "isCorrection": boolean, "category": "approach" | "scope" | "convention" | "fact" | "other", "statements": string[], "sharp": boolean } } }
|
package/src/index.ts
CHANGED
package/src/thread.ts
CHANGED
|
@@ -214,6 +214,15 @@ export interface ThreadFork {
|
|
|
214
214
|
readonly journalSeq: number;
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
+
/** The schedule run a thread was started for (provenance; a run is top-level). */
|
|
218
|
+
export interface ThreadScheduled {
|
|
219
|
+
readonly scheduleId: string;
|
|
220
|
+
/** The run's id, `schedule:<scheduleId>:<dueAt>`: one run per due time. */
|
|
221
|
+
readonly runId: string;
|
|
222
|
+
/** When the run was due (epoch ms). */
|
|
223
|
+
readonly dueAt: number;
|
|
224
|
+
}
|
|
225
|
+
|
|
217
226
|
/** How a subagent thread came to be: who spawned it, through what, and its native identity. */
|
|
218
227
|
export interface ThreadSpawn {
|
|
219
228
|
readonly via: 'foundry' | 'native-claude' | 'native-codex' | 'host-paseo' | 'host-t3';
|
|
@@ -292,6 +301,9 @@ export interface ThreadMeta {
|
|
|
292
301
|
/** The thread and point this one was forked from (provenance; a fork is top-level). */
|
|
293
302
|
forkedFrom?: ThreadFork;
|
|
294
303
|
|
|
304
|
+
/** The schedule run this thread was started for. */
|
|
305
|
+
scheduledBy?: ThreadScheduled;
|
|
306
|
+
|
|
295
307
|
/** How this subagent thread was spawned. */
|
|
296
308
|
spawn?: ThreadSpawn;
|
|
297
309
|
|
|
@@ -409,6 +421,8 @@ export interface ThreadConfig {
|
|
|
409
421
|
parentThreadId?: string;
|
|
410
422
|
/** The thread and point this one was forked from. */
|
|
411
423
|
forkedFrom?: ThreadFork;
|
|
424
|
+
/** The schedule run this thread was started for. */
|
|
425
|
+
scheduledBy?: ThreadScheduled;
|
|
412
426
|
/** Project that owns this thread. Scopes memory sources and tool calls. */
|
|
413
427
|
projectId?: string;
|
|
414
428
|
/** The harness running this thread's main session. */
|
|
@@ -466,6 +480,7 @@ export class Thread {
|
|
|
466
480
|
branch: opts?.branch,
|
|
467
481
|
parentThreadId: opts?.parentThreadId,
|
|
468
482
|
...(opts?.forkedFrom ? { forkedFrom: opts.forkedFrom } : {}),
|
|
483
|
+
...(opts?.scheduledBy ? { scheduledBy: opts.scheduledBy } : {}),
|
|
469
484
|
projectId: opts?.projectId,
|
|
470
485
|
...(opts?.worker ? { worker: opts.worker } : {}),
|
|
471
486
|
...(opts?.role ? { role: opts.role } : {}),
|