@owlmeans/agent 0.1.18-rc.38 → 0.1.18-rc.40

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 (40) hide show
  1. package/README.md +1 -1
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/agent/SKILL.md +96 -9
  4. package/build/model.d.ts.map +1 -1
  5. package/build/model.js +4 -1
  6. package/build/model.js.map +1 -1
  7. package/build/pipeline/index.d.ts +1 -0
  8. package/build/pipeline/index.d.ts.map +1 -1
  9. package/build/pipeline/index.js +1 -0
  10. package/build/pipeline/index.js.map +1 -1
  11. package/build/pipeline/results.d.ts +121 -0
  12. package/build/pipeline/results.d.ts.map +1 -0
  13. package/build/pipeline/results.js +572 -0
  14. package/build/pipeline/results.js.map +1 -0
  15. package/build/pipeline/runner.d.ts.map +1 -1
  16. package/build/pipeline/runner.js +170 -15
  17. package/build/pipeline/runner.js.map +1 -1
  18. package/build/pipeline/types.d.ts +140 -2
  19. package/build/pipeline/types.d.ts.map +1 -1
  20. package/build/runtime/checkpoint.d.ts +37 -0
  21. package/build/runtime/checkpoint.d.ts.map +1 -0
  22. package/build/runtime/checkpoint.js +52 -0
  23. package/build/runtime/checkpoint.js.map +1 -0
  24. package/build/stores/memory.d.ts +10 -1
  25. package/build/stores/memory.d.ts.map +1 -1
  26. package/build/stores/memory.js +0 -0
  27. package/build/stores/memory.js.map +1 -1
  28. package/build/stores/types.d.ts +23 -1
  29. package/build/stores/types.d.ts.map +1 -1
  30. package/package.json +7 -7
  31. package/src/model.ts +4 -1
  32. package/src/pipeline/index.ts +1 -0
  33. package/src/pipeline/results.ts +827 -0
  34. package/src/pipeline/runner.ts +184 -15
  35. package/src/pipeline/types.ts +155 -2
  36. package/src/stores/memory.ts +0 -0
  37. package/src/stores/types.ts +24 -1
  38. package/tests/pipeline-compat.spec.ts +195 -0
  39. package/tests/pipeline-plugins.spec.ts +194 -0
  40. package/tests/pipeline-results.spec.ts +456 -0
package/README.md CHANGED
@@ -84,7 +84,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
84
84
  your project's skill store (`.agents/skills/`):
85
85
 
86
86
  ```sh
87
- npx @owlmeans/agent-skills@^0.1.18-rc.38
87
+ npx @owlmeans/agent-skills@^0.1.18-rc.41
88
88
  ```
89
89
 
90
90
  The embedded files are version-matched to this package release. Do not edit them
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@owlmeans/agent",
4
- "version": "0.1.18-rc.38",
5
- "generatedAt": "2026-09-23T19:57:40.690Z",
4
+ "version": "0.1.18-rc.40",
5
+ "generatedAt": "2026-09-28T02:06:37.884Z",
6
6
  "canonicalRepo": "https://github.com/owlmeans/common",
7
7
  "entries": [
8
8
  {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: agent
3
- description: How to use @owlmeans/agent — context-aware LLM agents over the LangGraph functional API, and resumable PIPELINES over a checkpointed StateGraph, with the AgentPlugin seam, conversation-summarization and memory plugins, and storage-independent ports. Auto-invoked when importing makeAgentModel, makePipeline, makeCheckpointSaver, appendAgentsService, an agent plugin, safeInvokeTool, or an agent store.
3
+ description: How to use @owlmeans/agent — context-aware LLM agents over the LangGraph functional API, and resumable PIPELINES over a checkpointed StateGraph, with the AgentPlugin and PipelinePlugin seams, CUMULATIVE PIPELINE RESULTS (cumulativeResultsPlugin), conversation-summarization and memory plugins, and storage-independent ports. Auto-invoked when importing makeAgentModel, makePipeline, makeCheckpointSaver, appendAgentsService, an agent or pipeline plugin, cumulativeResultsPlugin, safeInvokeTool, or an agent store.
4
4
  user-invocable: false
5
5
  ---
6
6
  <!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
@@ -8,7 +8,7 @@ user-invocable: false
8
8
  # @owlmeans/agent
9
9
 
10
10
  **Layer:** Cross-cutting domain
11
- **Install:** `"@owlmeans/agent": "^0.1.18-rc.38"` in `dependencies`, plus the `@langchain/core` and
11
+ **Install:** `"@owlmeans/agent": "^0.1.18-rc.40"` in `dependencies`, plus the `@langchain/core` and
12
12
  `@langchain/langgraph` **peers**
13
13
 
14
14
  The agent runtime. Contracts live in `@owlmeans/agent-common`.
@@ -18,7 +18,9 @@ The agent runtime. Contracts live in `@owlmeans/agent-common`.
18
18
  | Export | Description |
19
19
  |---|---|
20
20
  | `makeAgentModel(options)` | An agent over the LangGraph functional API: `invoke`, `use`, `conversation`. |
21
- | `makePipeline(spec, options)` | A resumable state machine over a checkpointed LangGraph `StateGraph`: `invoke`, `resume`, `snapshot`, `asStep`. |
21
+ | `makePipeline(spec, options)` | A resumable state machine over a checkpointed LangGraph `StateGraph`: `invoke`, `resume`, `snapshot`, `asStep`. `options.plugins` seats `PipelinePlugin`s. |
22
+ | `cumulativeResultsPlugin(options)` · `CUMULATIVE_RESULTS_PLUGIN` · `DEFAULT_RESULT_SUMMARY_SCHEMA` | CUMULATIVE PIPELINE RESULTS — tells every step what its predecessors produced; see below. |
23
+ | `PipelinePlugin` and its events, `StepResults`, `PipelineParentRef` | The pipeline plugin seam (types, from `./pipeline`). |
22
24
  | `makeCheckpointSaver(store)` | A `BaseCheckpointSaver` over the `CheckpointStore` port. |
23
25
  | `makeAgentsService(options?, alias?)` · `appendAgentsService(ctx, options?, alias?)` · `agentServiceApi(options, self)` | The service, and its half without `createService` for composition. |
24
26
  | `summarizePlugin(options?)` | Compacts each finished run into `summary` + `advice`; replays the last few. |
@@ -28,7 +30,7 @@ The agent runtime. Contracts live in `@owlmeans/agent-common`.
28
30
  | `composeCompaction`, `composeRollingSummary`, `renderTranscript`, `messageText` | Summary primitives; both composers are total. |
29
31
  | `makeStaticFlowProvider(flows)` | The server-side `FlowProvider` `@owlmeans/flow` does not ship. |
30
32
  | `inProcessTransport()`, `AgentTransport` | The scaling seam; default carries messages by direct call. |
31
- | `createMemory*Store()` | In-memory reference implementations of every port, including `createMemoryPipelineRunStore` and `createMemoryCheckpointStore`. |
33
+ | `createMemory*Store()` | In-memory reference implementations of every port, including `createMemoryPipelineRunStore`, `createMemoryCheckpointStore` and `createMemoryCumulativeResultStore`. |
32
34
  | `AgentError` · `AgentMissconfiguredError` · `AgentLoopExhaustedError` | The `ResilientError` family. `AgentMissconfiguredError` is a model or tool set the agent was built without; `AgentLoopExhaustedError` is the tool loop hitting its ceiling. |
33
35
  | `DEFAULT_MAX_TURNS` (64) · `DEFAULT_PLUGIN_ORDER` · `DEFAULT_ACTION` · `DEFAULT_ENTRYPOINT` | The loop and plugin defaults. |
34
36
 
@@ -70,7 +72,89 @@ as a guard is the same mechanism that makes a resume correct.
70
72
  through the engine's config would make a run depend on which config keys a given LangGraph minor
71
73
  propagates into a node body. A closure cannot be lost.
72
74
 
73
- ## The plugin seam
75
+ ## Pipeline plugins
76
+
77
+ ```ts
78
+ interface PipelinePlugin<S, C> {
79
+ alias: string; order?: number // seated by alias, run by ascending order
80
+ enter?: (event) => void // once per invoke/resume: mode fresh|continue|restart, inherited steps, parent
81
+ beforeStep?: (event) => { results?: StepResults } | void // the step WILL run; may hand it ctx.results
82
+ afterStep?: (event) => void // patch merged into state, BEFORE the row commit marks the step done
83
+ passStep?: (event) => void // reason: 'skipped' (guard) | 'failed' (optional step, run goes on)
84
+ exit?: (event) => void // once, with the result the caller is about to receive
85
+ }
86
+ ```
87
+
88
+ **A plugin watches a run; it never writes the state and never decides where the run stands.**
89
+ Whatever it keeps, it keeps in a store of its own. `afterStep` runs before the commit so a plugin's
90
+ own write lands before the step is durably done — a crash between the two re-runs the step rather
91
+ than leaving a done step with nothing recorded about it.
92
+
93
+ **A plugin that throws costs a warning, never the run** — unless `options.fatal` calls the error
94
+ fatal: then it takes the exact path a fatal step error takes, the row written `Failed` first and the
95
+ error rethrown (from `enter`, `passStep` and `exit` too). The runner's stop signal passes through.
96
+
97
+ **Seating nothing changes nothing.** Every hook site is guarded, so a pipeline without plugins awaits
98
+ nothing it did not await before — its parallel steps interleave identically and its step context
99
+ has no `results` key. `tests/pipeline-compat.spec.ts` pins this with golden rows, trace lines and
100
+ progress events recorded from the runner before the seam existed; it must stay green unedited.
101
+
102
+ `asStep` passes the composing step to the child as `PipelineInvokeArgs.parent` (read-only:
103
+ pipeline, run id, step, and the parent step's `results`); the child's plugins see it on `enter`.
104
+
105
+ ## Cumulative pipeline results
106
+
107
+ After each step, code reads what the step produced into FACTS (`CumulativeResultFact`: a type's
108
+ shape and import specifier, an endpoint's method/path/guard, a resource's table, a file) and every
109
+ later step is told them — so it uses the authoritative names instead of re-deriving them.
110
+
111
+ ```ts
112
+ const pipeline = makePipeline<State, Deps>(spec, {
113
+ steps, runs,
114
+ plugins: [cumulativeResultsPlugin<State, Deps>({
115
+ spec: { steps: { types: { extractors: ['ts-types'], full: ['endpoints'] } } }, // or run => spec | null
116
+ extractors: { 'ts-types': { scope: ({ deps }) => deps.glob('src/types/**'), extract: readTypes } },
117
+ store, // CumulativeResultStore; share it with composed pipelines
118
+ })],
119
+ })
120
+ // inside a step:
121
+ const exec = executions().withResults(taskExec, ctx.results?.view) // every model built from it composes the view
122
+ ctx.results?.record({ files: written }) // what the step touched
123
+ ctx.results?.facts({ kind: 'type', name: 'User' }) // typed query for code
124
+ ```
125
+
126
+ - **Extractors are deterministic code, never a model call.** A rebuild after a crash must find
127
+ exactly what the first pass found. `scope` recomputes the files an extractor answers for from
128
+ DURABLE inputs (state keys, the file tree), never from what a step reported — it is what a rebuild
129
+ reads. Declarations name extractors; the plugin holds the code.
130
+ - **The ledger is an optimization, never the authority.** A fresh start or restart clears the run's
131
+ own entries (and those of runs composed under it); a continuation loads them and silently
132
+ REBUILDS any missing entry of a finished step from its durable scope. Resume correctness never
133
+ depends on the store; a failing store is a warning. A step's `record({ facts })`-only facts with
134
+ no extractor cannot be rebuilt.
135
+ - **A view is cut once per step**: predecessors only (siblings may not have run), full within
136
+ `window` edges (default 2) or when the producer names the step in `full` (`'*'` for every step),
137
+ names only beyond, never shown when named in `omit`. Over `maxChars` the OLDEST entries not naming
138
+ the step go to names only, then out (listed in `view.omitted`); named ones last; an entry's own
139
+ text is never cut. `facts()` answers from every visible entry regardless of the prompt budget.
140
+ - **A fact belongs to the first entry that produced it** — the step's predecessors and the runs
141
+ composed under the step itself. A later re-extraction never duplicates it.
142
+ - **A later step that rewrites an earlier entry's files refreshes it**: re-extracted from its own
143
+ sources, revision bumped, facts about untouched files kept (`refresh: false` opts out). Entries of
144
+ other pipelines are never refreshed — their extractors live elsewhere.
145
+ - **A skipped step** keeps a stored entry, or gets one rebuilt from its files; **a failed optional
146
+ step** gets a `partial` entry from what it left behind.
147
+ - **Model summaries are OFF unless a step declares `summary`** and the plugin has `summarize`.
148
+ The request carries a ready prompt and schema; the answer is rendered deterministically, capped
149
+ in code, always labelled "not verified", and a failure is a warning without the summary.
150
+ - **A composed run shares its parent's ledger** (parent's, else the root run id); its steps see the
151
+ parent's view for the composing step, and the parent's later steps see the child's entries,
152
+ labelled `<composingStep>/<childStep>` and ordered inside the composing step. Both pipelines must
153
+ be given the SAME store.
154
+ - **Seeds** are facts known before any step ran, visible to every step. A declaration resolved to
155
+ `null`/`false` leaves that run without `ctx.results` at all.
156
+
157
+ ## The agent plugin seam
74
158
 
75
159
  ```ts
76
160
  interface AgentPlugin {
@@ -115,8 +199,9 @@ by default — the agent holds an execution, not the service that knows its poli
115
199
  would spend one cheap call on a relevance pick silently degrades until this is passed. What such a
116
200
  call returns may never land in a cached block; see [[llm-prompt-caching]].
117
201
 
118
- **`compose()` is called with `files: exec.files`.** Without it, a prompt plugin that resolves
119
- knowledge from disk is silently inert on agent runs while working fine on plain model calls.
202
+ **`compose()` is called with `files: exec.files` and `results: exec.results`.** Without them, a
203
+ prompt plugin that resolves knowledge from disk — or the cumulative results block — is silently
204
+ inert on agent runs while working fine on plain model calls.
120
205
 
121
206
  **Use `autoFinish: false` whenever something runs after the agent.** A compaction written before a
122
207
  validation or build pass describes a state that did not survive it, so its "what to do next" is
@@ -139,7 +224,7 @@ no model, a failing model or an empty answer they fall back deterministically, s
139
224
  history unconditionally. A failed fold costs detail, never the event.
140
225
 
141
226
  **Ports, not resources.** `ConversationStore`, `MemoryGraphStore`, `MemoryEventStore`,
142
- `PipelineRunStore` and `CheckpointStore` are narrow interfaces a consumer implements. A port names exactly what the
227
+ `PipelineRunStore`, `CheckpointStore` and `CumulativeResultStore` are narrow interfaces a consumer implements. A port names exactly what the
143
228
  plugin needs, which is a far smaller surface than CRUD, and anything can satisfy it — a `Resource`,
144
229
  or a file on disk, which is what the project-history equivalent is. An unbound port is a no-op, not
145
230
  an error.
@@ -200,7 +285,9 @@ would break every restore.
200
285
  Category A (unit, no env, no network). The model is doubled with a small scripted object in
201
286
  `tests/_tools/model.ts` because `@langchain/core`'s own `FakeStreamingChatModel` always replays its
202
287
  first response and so cannot drive a tool loop. That double stands in for the MODEL, an external
203
- boundary — never for an `@owlmeans/*` package.
288
+ boundary — never for an `@owlmeans/*` package. The cumulative-results specs keep the project as a
289
+ `Map` of files in `deps` — the durable input extractors read — so a "new process" is a new plugin
290
+ over the same files.
204
291
 
205
292
  ## Related
206
293
 
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,UAAU,EAAE,YAAY,EACzB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,YAAa,YAAY,KAAG,UA6PtD,CAAA"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,UAAU,EAAE,YAAY,EACzB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,YAAa,YAAY,KAAG,UAgQtD,CAAA"}
package/build/model.js CHANGED
@@ -100,7 +100,10 @@ export const makeAgentModel = (options) => {
100
100
  // knowledge from disk works on an agent run and not only on a plain model call — the
101
101
  // omission of exactly this argument is what makes such plugins silently inert.
102
102
  const composed = prompts != null
103
- ? await prompts().compose({ ...exec.prompt, context }, [], { model: agentModel, provider, purpose, files: exec.files, utility: options.utility, action })
103
+ ? await prompts().compose({ ...exec.prompt, context }, [], {
104
+ model: agentModel, provider, purpose, files: exec.files, utility: options.utility, action,
105
+ results: exec.results,
106
+ })
104
107
  : null;
105
108
  const system = composed?.system?.content
106
109
  ?? (context.length > 0 ? context.join('\n\n') : '');
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export * from './runner.js';
2
+ export * from './results.js';
2
3
  export type * from './types.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,mBAAmB,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,mBAAmB,YAAY,CAAA"}
@@ -1,2 +1,3 @@
1
1
  export * from './runner.js';
2
+ export * from './results.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,121 @@
1
+ import type { CumulativeResultFact, CumulativeResultsSpec, PipelineSpec, PipelineState, ResultSummarySpec } from '@owlmeans/agent-common';
2
+ import type { CumulativeResultStore } from '../stores/types.js';
3
+ import type { PipelineEnterMode, PipelineParentRef, PipelinePlugin } from './types.js';
4
+ /** The plugin's alias. Seated under it, so wiring it twice replaces rather than doubles. */
5
+ export declare const CUMULATIVE_RESULTS_PLUGIN = "cumulative-results";
6
+ /** The answer shape a summary is asked for when its declaration names none. */
7
+ export declare const DEFAULT_RESULT_SUMMARY_SCHEMA: Record<string, unknown>;
8
+ /** What a declaration resolver, a seed and a ledger resolver are told about the run. */
9
+ export interface ResultsRunInfo<S extends PipelineState, C> {
10
+ pipeline: string;
11
+ spec: PipelineSpec;
12
+ runId: string;
13
+ scope: string;
14
+ entityId?: string;
15
+ deps: C;
16
+ state: Readonly<S>;
17
+ mode: PipelineEnterMode;
18
+ parent?: PipelineParentRef;
19
+ }
20
+ /** What an extractor reads facts from. */
21
+ export interface ResultExtractInput<S extends PipelineState, C> {
22
+ pipeline: string;
23
+ runId: string;
24
+ step: string;
25
+ /** Durable: the run's state, restored from its row on a resume. */
26
+ state: Readonly<S>;
27
+ deps: C;
28
+ /** Every file the entry answers for — its durable scope and whatever its step recorded. */
29
+ files: readonly string[];
30
+ /** What was recorded as touched on THIS pass — empty on a rebuild. */
31
+ changed: readonly string[];
32
+ }
33
+ export type ResultScopeInput<S extends PipelineState, C> = Omit<ResultExtractInput<S, C>, 'files' | 'changed'>;
34
+ /**
35
+ * Facts from files. DETERMINISTIC — the same inputs give the same facts — and never a model
36
+ * call: an extractor is what makes a fact a fact, and a rebuild after a crash must find exactly
37
+ * what the first pass found.
38
+ */
39
+ export type ResultExtractFn<S extends PipelineState, C> = (input: ResultExtractInput<S, C>) => Promise<CumulativeResultFact[]> | CumulativeResultFact[];
40
+ export interface ResultExtractorSpec<S extends PipelineState, C> {
41
+ /**
42
+ * The files this extractor answers for, recomputed from DURABLE inputs — the state's keys, the
43
+ * file tree — and never from what a step happened to report. It is what a rebuild reads when
44
+ * nothing was recorded, so a step's facts can be found again after the process that ran it died.
45
+ */
46
+ scope?: (input: ResultScopeInput<S, C>) => Promise<string[]> | string[];
47
+ extract: ResultExtractFn<S, C>;
48
+ }
49
+ export type ResultExtractor<S extends PipelineState, C> = ResultExtractFn<S, C> | ResultExtractorSpec<S, C>;
50
+ /** Facts known before any step of the run ran. Called on every entry of the run; deterministic. */
51
+ export type ResultSeed<S extends PipelineState, C> = (run: ResultsRunInfo<S, C>) => Promise<CumulativeResultFact[]> | CumulativeResultFact[];
52
+ /** Everything a summarize callback needs, including a ready prompt. */
53
+ export interface ResultSummaryRequest<S extends PipelineState, C> extends ResultSummarySpec {
54
+ schema: Record<string, unknown>;
55
+ maxChars: number;
56
+ pipeline: string;
57
+ runId: string;
58
+ step: string;
59
+ label: string;
60
+ facts: readonly CumulativeResultFact[];
61
+ files: readonly string[];
62
+ state: Readonly<S>;
63
+ deps: C;
64
+ signal: AbortSignal;
65
+ /** The instructions, the step's facts and its files, as one deterministic prompt. */
66
+ prompt: string;
67
+ }
68
+ /**
69
+ * Ask a model for a step's summary; return its schema-shaped answer.
70
+ *
71
+ * Typically `request => model.invoke(request.prompt, request.schema, { action })` on a model
72
+ * resolved for `request.role`. A throw is a warning and the entry goes without a summary.
73
+ */
74
+ export type ResultSummarizer<S extends PipelineState, C> = (request: ResultSummaryRequest<S, C>) => Promise<unknown>;
75
+ export interface CumulativeResultsPluginOptions<S extends PipelineState, C> {
76
+ alias?: string;
77
+ order?: number;
78
+ /**
79
+ * The declaration, or a function of the run that returns one — or `null`/`false` to leave THIS
80
+ * run without results. Resolved once, on `enter`.
81
+ */
82
+ spec: CumulativeResultsSpec | ((run: ResultsRunInfo<S, C>) => CumulativeResultsSpec | null | false | undefined | Promise<CumulativeResultsSpec | null | false | undefined>);
83
+ /** Named deterministic extractors, referenced by name from `StepResultsSpec.extractors`. */
84
+ extractors?: Record<string, ResultExtractor<S, C>>;
85
+ /** Named facts available before any step ran. Visible to every step, in name order. */
86
+ seeds?: Record<string, ResultSeed<S, C>>;
87
+ /**
88
+ * Where entries live. A composed pipeline must be given the SAME store as the pipeline it is a
89
+ * step of, or neither sees what the other produced. Default: an in-process memory store of this
90
+ * plugin instance.
91
+ */
92
+ store?: CumulativeResultStore;
93
+ /** Called only for a step whose declaration has a `summary`. */
94
+ summarize?: ResultSummarizer<S, C>;
95
+ /** The ledger a run's entries belong to. Default: the parent's, else the root run's id. */
96
+ ledger?: (run: ResultsRunInfo<S, C>) => string;
97
+ trace?: (line: string) => void;
98
+ }
99
+ /**
100
+ * CUMULATIVE PIPELINE RESULTS: every step is told, in its prompt and through a typed query, what
101
+ * the steps before it produced — read from the files by code, not recalled by a model.
102
+ *
103
+ * - `enter` decides the LEDGER the run's entries belong to (its parent's for a composed run, else
104
+ * the root run's id). A fresh start or a restart forgets the run's own earlier entries; a
105
+ * continuation loads them and silently REBUILDS any that are missing from the finished steps'
106
+ * durable inputs — so a resume never depends on the ledger having survived, only the quality
107
+ * of what the next step is told does.
108
+ * - `beforeStep` cuts the step's VIEW once: every predecessor's entry, full within the window or
109
+ * when the producer names the step, names only otherwise, inside a character budget that drops
110
+ * the oldest entries to names only and then out — never cutting an entry's own text.
111
+ * - `afterStep` extracts the step's entry from its durable scope and what it recorded, leaves any
112
+ * fact an earlier entry already owns to that entry, re-extracts earlier entries whose files the
113
+ * step rewrote, and persists — all before the runner marks the step complete.
114
+ * - `passStep` gives a skipped step the entry its files still support, and an optional step that
115
+ * failed a partial one.
116
+ *
117
+ * Everything here is an enhancement. A store that fails, an extractor that throws or a summary
118
+ * that cannot be had costs a step some context and is logged; it never fails the run.
119
+ */
120
+ export declare const cumulativeResultsPlugin: <S extends PipelineState, C>(options: CumulativeResultsPluginOptions<S, C>) => PipelinePlugin<S, C>;
121
+ //# sourceMappingURL=results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/pipeline/results.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACa,oBAAoB,EAAE,qBAAqB,EAAE,YAAY,EAAE,aAAa,EAC/F,iBAAiB,EAClB,MAAM,wBAAwB,CAAA;AAI/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,KAAK,EACV,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAErD,MAAM,YAAY,CAAA;AAEnB,4FAA4F;AAC5F,eAAO,MAAM,yBAAyB,uBAAuB,CAAA;AAE7D,+EAA+E;AAC/E,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAKjE,CAAA;AAED,wFAAwF;AACxF,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC;IACxD,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,YAAY,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,CAAC,CAAA;IACP,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IAClB,IAAI,EAAE,iBAAiB,CAAA;IACvB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC;IAC5D,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,mEAAmE;IACnE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IAClB,IAAI,EAAE,CAAC,CAAA;IACP,2FAA2F;IAC3F,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,sEAAsE;IACtE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,IAAI,IAAI,CAC7D,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS,CAC9C,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,IAAI,CACxD,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,KAC5B,OAAO,CAAC,oBAAoB,EAAE,CAAC,GAAG,oBAAoB,EAAE,CAAA;AAE7D,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC;IAC7D;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAA;IACvE,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CAC/B;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,IACpD,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEnD,mGAAmG;AACnG,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,IAAI,CACnD,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KACtB,OAAO,CAAC,oBAAoB,EAAE,CAAC,GAAG,oBAAoB,EAAE,CAAA;AAE7D,uEAAuE;AACvE,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,CAAE,SAAQ,iBAAiB;IACzF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAA;IACtC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IAClB,IAAI,EAAE,CAAC,CAAA;IACP,MAAM,EAAE,WAAW,CAAA;IACnB,qFAAqF;IACrF,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,IAAI,CACzD,OAAO,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,KAChC,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB,MAAM,WAAW,8BAA8B,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC;IACxE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,IAAI,EACA,qBAAqB,GACrB,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAC3B,qBAAqB,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,GAC9C,OAAO,CAAC,qBAAqB,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC,CAAA;IAChE,4FAA4F;IAC5F,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAClD,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACxC;;;;OAIG;IACH,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,gEAAgE;IAChE,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClC,2FAA2F;IAC3F,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAA;IAC9C,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AA2GD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,aAAa,EAAE,CAAC,WACvD,8BAA8B,CAAC,CAAC,EAAE,CAAC,CAAC,KAC5C,cAAc,CAAC,CAAC,EAAE,CAAC,CA0iBrB,CAAA"}