@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.
- package/README.md +1 -1
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/agent/SKILL.md +96 -9
- package/build/model.d.ts.map +1 -1
- package/build/model.js +4 -1
- package/build/model.js.map +1 -1
- package/build/pipeline/index.d.ts +1 -0
- package/build/pipeline/index.d.ts.map +1 -1
- package/build/pipeline/index.js +1 -0
- package/build/pipeline/index.js.map +1 -1
- package/build/pipeline/results.d.ts +121 -0
- package/build/pipeline/results.d.ts.map +1 -0
- package/build/pipeline/results.js +572 -0
- package/build/pipeline/results.js.map +1 -0
- package/build/pipeline/runner.d.ts.map +1 -1
- package/build/pipeline/runner.js +170 -15
- package/build/pipeline/runner.js.map +1 -1
- package/build/pipeline/types.d.ts +140 -2
- package/build/pipeline/types.d.ts.map +1 -1
- package/build/runtime/checkpoint.d.ts +37 -0
- package/build/runtime/checkpoint.d.ts.map +1 -0
- package/build/runtime/checkpoint.js +52 -0
- package/build/runtime/checkpoint.js.map +1 -0
- package/build/stores/memory.d.ts +10 -1
- package/build/stores/memory.d.ts.map +1 -1
- package/build/stores/memory.js +0 -0
- package/build/stores/memory.js.map +1 -1
- package/build/stores/types.d.ts +23 -1
- package/build/stores/types.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/model.ts +4 -1
- package/src/pipeline/index.ts +1 -0
- package/src/pipeline/results.ts +827 -0
- package/src/pipeline/runner.ts +184 -15
- package/src/pipeline/types.ts +155 -2
- package/src/stores/memory.ts +0 -0
- package/src/stores/types.ts +24 -1
- package/tests/pipeline-compat.spec.ts +195 -0
- package/tests/pipeline-plugins.spec.ts +194 -0
- 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.
|
|
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
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/agent",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-09-
|
|
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
|
|
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.
|
|
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 `
|
|
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
|
-
##
|
|
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
|
|
119
|
-
|
|
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 `
|
|
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
|
|
package/build/model.d.ts.map
CHANGED
|
@@ -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,
|
|
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 }, [], {
|
|
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') : '');
|
package/build/model.js.map
CHANGED
|
@@ -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 +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"}
|
package/build/pipeline/index.js
CHANGED
|
@@ -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":"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"}
|