@owlmeans/agent-common 0.1.18-rc.23 → 0.1.18-rc.25
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-common/SKILL.md +1 -1
- package/build/consts.d.ts +9 -0
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +9 -0
- package/build/consts.js.map +1 -1
- package/build/errors.d.ts +11 -0
- package/build/errors.d.ts.map +1 -1
- package/build/errors.js +15 -0
- package/build/errors.js.map +1 -1
- package/build/pipeline.d.ts +30 -1
- package/build/pipeline.d.ts.map +1 -1
- package/build/pipeline.js +8 -0
- package/build/pipeline.js.map +1 -1
- package/package.json +5 -5
- package/src/consts.ts +10 -0
- package/src/errors.ts +17 -0
- package/src/pipeline.ts +30 -0
- package/tests/pipeline.spec.ts +41 -1
package/README.md
CHANGED
|
@@ -46,7 +46,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
46
46
|
your project's skill store (`.agents/skills/`):
|
|
47
47
|
|
|
48
48
|
```sh
|
|
49
|
-
npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
49
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.21
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
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-common",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-09-
|
|
4
|
+
"version": "0.1.18-rc.25",
|
|
5
|
+
"generatedAt": "2026-09-15T12:21:31.885Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/agent-common
|
|
9
9
|
|
|
10
10
|
**Layer:** Cross-cutting domain
|
|
11
|
-
**Install:** `"@owlmeans/agent-common": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/agent-common": "^0.1.18-rc.25"` in `dependencies`
|
|
12
12
|
|
|
13
13
|
Serializable contracts for the agent family. No LangChain, no LangGraph, no storage driver — a
|
|
14
14
|
backend or a browser bundle imports these to read what an agent wrote without pulling the runtime.
|
package/build/consts.d.ts
CHANGED
|
@@ -33,6 +33,15 @@ export declare const AGENT_CHECKPOINT_STORE = "agent-checkpoint-store";
|
|
|
33
33
|
export declare const DEFAULT_MAX_STATE_CHARS = 256000;
|
|
34
34
|
export declare const DEFAULT_STEP_ATTEMPTS = 1;
|
|
35
35
|
export declare const DEFAULT_STEP_TIMEOUT = 1800000;
|
|
36
|
+
/**
|
|
37
|
+
* Where a pipeline's answers live in its state.
|
|
38
|
+
*
|
|
39
|
+
* One key, named here rather than per pipeline, because an answer has to survive every hop it can
|
|
40
|
+
* take: a resume merges answers into it, a composing step forwards it to its child, and a reader
|
|
41
|
+
* looks a question up by id. Scalars and keys, like everything else a state holds — the answer's
|
|
42
|
+
* decision travels here and its prose belongs wherever that pipeline keeps its documents.
|
|
43
|
+
*/
|
|
44
|
+
export declare const INQUIRY_ANSWERS_KEY = "answers";
|
|
36
45
|
/** The lifecycle flow every agent run is driven through. */
|
|
37
46
|
export declare const AGENT_RUN_FLOW = "agent-run";
|
|
38
47
|
/**
|
package/build/consts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,WAAW,CAAA;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,6BAA6B,CAAA;AAClE,eAAO,MAAM,wBAAwB,6BAA6B,CAAA;AAClE,eAAO,MAAM,yBAAyB,8BAA8B,CAAA;AACpE,eAAO,MAAM,wBAAwB,6BAA6B,CAAA;AAClE,eAAO,MAAM,sBAAsB,2BAA2B,CAAA;AAE9D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,SAAU,CAAA;AAC9C,eAAO,MAAM,qBAAqB,IAAI,CAAA;AACtC,eAAO,MAAM,oBAAoB,UAAY,CAAA;AAE7C,4DAA4D;AAC5D,eAAO,MAAM,cAAc,cAAc,CAAA;AAEzC;;;;;;;;;;;;GAYG;AACH,oBAAY,YAAY;IACtB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED,iDAAiD;AACjD,oBAAY,kBAAkB;IAC5B,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAED,2FAA2F;AAC3F,oBAAY,cAAc;IACxB,EAAE,OAAO;IACT,MAAM,WAAW;CAClB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,OAAO,CAAA;AACzC,eAAO,MAAM,oBAAoB,MAAM,CAAA;AACvC,eAAO,MAAM,oBAAoB,IAAI,CAAA;AACrC,eAAO,MAAM,yBAAyB,OAAO,CAAA;AAC7C,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAE7C,6EAA6E;AAC7E,eAAO,MAAM,SAAS,MAAM,CAAA"}
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,WAAW,CAAA;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,6BAA6B,CAAA;AAClE,eAAO,MAAM,wBAAwB,6BAA6B,CAAA;AAClE,eAAO,MAAM,yBAAyB,8BAA8B,CAAA;AACpE,eAAO,MAAM,wBAAwB,6BAA6B,CAAA;AAClE,eAAO,MAAM,sBAAsB,2BAA2B,CAAA;AAE9D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,SAAU,CAAA;AAC9C,eAAO,MAAM,qBAAqB,IAAI,CAAA;AACtC,eAAO,MAAM,oBAAoB,UAAY,CAAA;AAE7C;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,YAAY,CAAA;AAE5C,4DAA4D;AAC5D,eAAO,MAAM,cAAc,cAAc,CAAA;AAEzC;;;;;;;;;;;;GAYG;AACH,oBAAY,YAAY;IACtB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED,iDAAiD;AACjD,oBAAY,kBAAkB;IAC5B,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAED,2FAA2F;AAC3F,oBAAY,cAAc;IACxB,EAAE,OAAO;IACT,MAAM,WAAW;CAClB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,OAAO,CAAA;AACzC,eAAO,MAAM,oBAAoB,MAAM,CAAA;AACvC,eAAO,MAAM,oBAAoB,IAAI,CAAA;AACrC,eAAO,MAAM,yBAAyB,OAAO,CAAA;AAC7C,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAE7C,6EAA6E;AAC7E,eAAO,MAAM,SAAS,MAAM,CAAA"}
|
package/build/consts.js
CHANGED
|
@@ -33,6 +33,15 @@ export const AGENT_CHECKPOINT_STORE = 'agent-checkpoint-store';
|
|
|
33
33
|
export const DEFAULT_MAX_STATE_CHARS = 256_000;
|
|
34
34
|
export const DEFAULT_STEP_ATTEMPTS = 1;
|
|
35
35
|
export const DEFAULT_STEP_TIMEOUT = 1_800_000;
|
|
36
|
+
/**
|
|
37
|
+
* Where a pipeline's answers live in its state.
|
|
38
|
+
*
|
|
39
|
+
* One key, named here rather than per pipeline, because an answer has to survive every hop it can
|
|
40
|
+
* take: a resume merges answers into it, a composing step forwards it to its child, and a reader
|
|
41
|
+
* looks a question up by id. Scalars and keys, like everything else a state holds — the answer's
|
|
42
|
+
* decision travels here and its prose belongs wherever that pipeline keeps its documents.
|
|
43
|
+
*/
|
|
44
|
+
export const INQUIRY_ANSWERS_KEY = 'answers';
|
|
36
45
|
/** The lifecycle flow every agent run is driven through. */
|
|
37
46
|
export const AGENT_RUN_FLOW = 'agent-run';
|
|
38
47
|
/**
|
package/build/consts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAA;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAClE,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAClE,MAAM,CAAC,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;AACpE,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AAE9D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAA;AAC9C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAA;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAA;AAE7C,4DAA4D;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAA;AAEzC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,qCAAqB,CAAA;IACrB,qCAAqB,CAAA;IACrB,mCAAmB,CAAA;IACnB,yCAAyB,CAAA;IACzB,qCAAqB,CAAA;IACrB,iCAAiB,CAAA;AACnB,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB;AAED,iDAAiD;AACjD,MAAM,CAAN,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,yCAAmB,CAAA;IACnB,mCAAa,CAAA;IACb,2CAAqB,CAAA;IACrB,uCAAiB,CAAA;IACjB,mCAAa,CAAA;AACf,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,QAM7B;AAED,2FAA2F;AAC3F,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,2BAAS,CAAA;IACT,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAA;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAA;AACvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAA;AACrC,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAA;AAC7C,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAA;AAE7C,6EAA6E;AAC7E,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAA"}
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAA;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAClE,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAClE,MAAM,CAAC,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;AACpE,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AAE9D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAA;AAC9C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAA;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAA;AAE7C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAA;AAE5C,4DAA4D;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAA;AAEzC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,qCAAqB,CAAA;IACrB,qCAAqB,CAAA;IACrB,mCAAmB,CAAA;IACnB,yCAAyB,CAAA;IACzB,qCAAqB,CAAA;IACrB,iCAAiB,CAAA;AACnB,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB;AAED,iDAAiD;AACjD,MAAM,CAAN,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,yCAAmB,CAAA;IACnB,mCAAa,CAAA;IACb,2CAAqB,CAAA;IACrB,uCAAiB,CAAA;IACjB,mCAAa,CAAA;AACf,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,QAM7B;AAED,2FAA2F;AAC3F,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,2BAAS,CAAA;IACT,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAA;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAA;AACvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAA;AACrC,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAA;AAC7C,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAA;AAE7C,6EAA6E;AAC7E,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAA"}
|
package/build/errors.d.ts
CHANGED
|
@@ -57,4 +57,15 @@ export declare class PipelineStateTooLargeError extends AgentCommonError {
|
|
|
57
57
|
static typeName: string;
|
|
58
58
|
constructor(message?: string);
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* A run was asked to wait for an answer it has no way of being given.
|
|
62
|
+
*
|
|
63
|
+
* Thrown when a step asks a question, nobody is there to answer it, and the pipeline has no run
|
|
64
|
+
* store: parking would leave nothing behind to resume, so the step fails at once rather than
|
|
65
|
+
* stopping a run that could never be started again.
|
|
66
|
+
*/
|
|
67
|
+
export declare class PipelineNotResumableError extends AgentCommonError {
|
|
68
|
+
static typeName: string;
|
|
69
|
+
constructor(message?: string);
|
|
70
|
+
}
|
|
60
71
|
//# sourceMappingURL=errors.d.ts.map
|
package/build/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,OAAuB,QAAQ,EAAE,MAAM,CAAoC;IAE3E,YAAY,OAAO,GAAE,MAAgB,EAEpC;CACF;AAED,qFAAqF;AACrF,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,OAAuB,QAAQ,EAAE,MAAM,CAAyC;IAEhF,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF;AAED;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;IACrD,OAAuB,QAAQ,EAAE,MAAM,CAA6C;IAEpF,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF;AAED;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IACxD,OAAuB,QAAQ,EAAE,MAAM,CAAgD;IAEvF,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF;AAED,oFAAoF;AACpF,qBAAa,wBAAyB,SAAQ,gBAAgB;IAC5D,OAAuB,QAAQ,EAAE,MAAM,CAAoD;IAE3F,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF;AAED;;;;;GAKG;AACH,qBAAa,0BAA2B,SAAQ,gBAAgB;IAC9D,OAAuB,QAAQ,EAAE,MAAM,CAAsD;IAE7F,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF;AAED;;;;;;;GAOG;AACH,qBAAa,0BAA2B,SAAQ,gBAAgB;IAC9D,OAAuB,QAAQ,EAAE,MAAM,CAAsD;IAE7F,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,OAAuB,QAAQ,EAAE,MAAM,CAAoC;IAE3E,YAAY,OAAO,GAAE,MAAgB,EAEpC;CACF;AAED,qFAAqF;AACrF,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,OAAuB,QAAQ,EAAE,MAAM,CAAyC;IAEhF,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF;AAED;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;IACrD,OAAuB,QAAQ,EAAE,MAAM,CAA6C;IAEpF,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF;AAED;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IACxD,OAAuB,QAAQ,EAAE,MAAM,CAAgD;IAEvF,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF;AAED,oFAAoF;AACpF,qBAAa,wBAAyB,SAAQ,gBAAgB;IAC5D,OAAuB,QAAQ,EAAE,MAAM,CAAoD;IAE3F,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF;AAED;;;;;GAKG;AACH,qBAAa,0BAA2B,SAAQ,gBAAgB;IAC9D,OAAuB,QAAQ,EAAE,MAAM,CAAsD;IAE7F,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF;AAED;;;;;;;GAOG;AACH,qBAAa,0BAA2B,SAAQ,gBAAgB;IAC9D,OAAuB,QAAQ,EAAE,MAAM,CAAsD;IAE7F,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF;AAED;;;;;;GAMG;AACH,qBAAa,yBAA0B,SAAQ,gBAAgB;IAC7D,OAAuB,QAAQ,EAAE,MAAM,CAAqD;IAE5F,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF"}
|
package/build/errors.js
CHANGED
|
@@ -77,6 +77,20 @@ export class PipelineStateTooLargeError extends AgentCommonError {
|
|
|
77
77
|
this.type = PipelineStateTooLargeError.typeName;
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* A run was asked to wait for an answer it has no way of being given.
|
|
82
|
+
*
|
|
83
|
+
* Thrown when a step asks a question, nobody is there to answer it, and the pipeline has no run
|
|
84
|
+
* store: parking would leave nothing behind to resume, so the step fails at once rather than
|
|
85
|
+
* stopping a run that could never be started again.
|
|
86
|
+
*/
|
|
87
|
+
export class PipelineNotResumableError extends AgentCommonError {
|
|
88
|
+
static typeName = `PipelineNotResumable${AgentCommonError.typeName}`;
|
|
89
|
+
constructor(message = 'error') {
|
|
90
|
+
super(`pipeline-not-resumable:${message}`);
|
|
91
|
+
this.type = PipelineNotResumableError.typeName;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
80
94
|
ResilientError.registerErrorClass(AgentCommonError);
|
|
81
95
|
ResilientError.registerErrorClass(AgentRunStateError);
|
|
82
96
|
ResilientError.registerErrorClass(PipelineSpecError);
|
|
@@ -84,4 +98,5 @@ ResilientError.registerErrorClass(PipelineVersionError);
|
|
|
84
98
|
ResilientError.registerErrorClass(PipelineUnknownStepError);
|
|
85
99
|
ResilientError.registerErrorClass(PipelineNotIdempotentError);
|
|
86
100
|
ResilientError.registerErrorClass(PipelineStateTooLargeError);
|
|
101
|
+
ResilientError.registerErrorClass(PipelineNotResumableError);
|
|
87
102
|
//# sourceMappingURL=errors.js.map
|
package/build/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAC3C,MAAM,CAAU,QAAQ,GAAW,QAAQ,cAAc,CAAC,QAAQ,EAAE,CAAA;IAE3E,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC,CAAA;IACtD,CAAC;CACF;AAED,qFAAqF;AACrF,MAAM,OAAO,kBAAmB,SAAQ,gBAAgB;IAC/C,MAAM,CAAU,QAAQ,GAAW,WAAW,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAEhF,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,aAAa,OAAO,EAAE,CAAC,CAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAA;IACzC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;IAC9C,MAAM,CAAU,QAAQ,GAAW,eAAe,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAEpF,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAA;IACxC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,oBAAqB,SAAQ,gBAAgB;IACjD,MAAM,CAAU,QAAQ,GAAW,kBAAkB,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAEvF,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC,QAAQ,CAAA;IAC3C,CAAC;CACF;AAED,oFAAoF;AACpF,MAAM,OAAO,wBAAyB,SAAQ,gBAAgB;IACrD,MAAM,CAAU,QAAQ,GAAW,sBAAsB,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAE3F,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC,QAAQ,CAAA;IAC/C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,0BAA2B,SAAQ,gBAAgB;IACvD,MAAM,CAAU,QAAQ,GAAW,wBAAwB,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAE7F,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC,QAAQ,CAAA;IACjD,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,0BAA2B,SAAQ,gBAAgB;IACvD,MAAM,CAAU,QAAQ,GAAW,wBAAwB,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAE7F,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAA;QAClC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC,QAAQ,CAAA;IACjD,CAAC;CACF;AAED,cAAc,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;AACnD,cAAc,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAA;AACrD,cAAc,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAA;AACpD,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAA;AACvD,cAAc,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,CAAA;AAC3D,cAAc,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,CAAA;AAC7D,cAAc,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAC3C,MAAM,CAAU,QAAQ,GAAW,QAAQ,cAAc,CAAC,QAAQ,EAAE,CAAA;IAE3E,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC,CAAA;IACtD,CAAC;CACF;AAED,qFAAqF;AACrF,MAAM,OAAO,kBAAmB,SAAQ,gBAAgB;IAC/C,MAAM,CAAU,QAAQ,GAAW,WAAW,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAEhF,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,aAAa,OAAO,EAAE,CAAC,CAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAA;IACzC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;IAC9C,MAAM,CAAU,QAAQ,GAAW,eAAe,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAEpF,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAA;IACxC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,oBAAqB,SAAQ,gBAAgB;IACjD,MAAM,CAAU,QAAQ,GAAW,kBAAkB,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAEvF,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC,QAAQ,CAAA;IAC3C,CAAC;CACF;AAED,oFAAoF;AACpF,MAAM,OAAO,wBAAyB,SAAQ,gBAAgB;IACrD,MAAM,CAAU,QAAQ,GAAW,sBAAsB,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAE3F,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC,QAAQ,CAAA;IAC/C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,0BAA2B,SAAQ,gBAAgB;IACvD,MAAM,CAAU,QAAQ,GAAW,wBAAwB,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAE7F,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC,QAAQ,CAAA;IACjD,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,0BAA2B,SAAQ,gBAAgB;IACvD,MAAM,CAAU,QAAQ,GAAW,wBAAwB,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAE7F,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAA;QAClC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC,QAAQ,CAAA;IACjD,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,yBAA0B,SAAQ,gBAAgB;IACtD,MAAM,CAAU,QAAQ,GAAW,uBAAuB,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAE5F,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAA;QAC1C,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC,QAAQ,CAAA;IAChD,CAAC;CACF;AAED,cAAc,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;AACnD,cAAc,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAA;AACrD,cAAc,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAA;AACpD,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAA;AACvD,cAAc,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,CAAA;AAC3D,cAAc,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,CAAA;AAC7D,cAAc,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,CAAA;AAC7D,cAAc,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,CAAA"}
|
package/build/pipeline.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Inquiry } from '@owlmeans/llm-common';
|
|
1
2
|
import type { ResourceRecord } from '@owlmeans/resource';
|
|
2
3
|
/**
|
|
3
4
|
* What a pipeline carries between its steps.
|
|
@@ -62,7 +63,28 @@ export declare enum PipelineRunStatus {
|
|
|
62
63
|
Done = "done",
|
|
63
64
|
Failed = "failed",
|
|
64
65
|
/** Stopped on purpose with work left — a budget expired, or the caller asked. Resumable. */
|
|
65
|
-
Aborted = "aborted"
|
|
66
|
+
Aborted = "aborted",
|
|
67
|
+
/**
|
|
68
|
+
* Stopped on purpose, waiting for an answer to {@link PipelineRun.inquiry}.
|
|
69
|
+
*
|
|
70
|
+
* Resumable, and NOT stale: a waiting run has no process behind it and its `heartbeatAt` will not
|
|
71
|
+
* move again until somebody answers. A reconciler that reads staleness alone would take this for
|
|
72
|
+
* a crashed run and repair what is merely waiting.
|
|
73
|
+
*/
|
|
74
|
+
Waiting = "waiting"
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* What a `Waiting` run is waiting for.
|
|
78
|
+
*
|
|
79
|
+
* Written by the runner when a step asks a question nobody could answer while it ran, and read by
|
|
80
|
+
* everything that reports a run — a resume delivers the answer under {@link Inquiry.id}, which is
|
|
81
|
+
* the only thing that routes it back.
|
|
82
|
+
*/
|
|
83
|
+
export interface PipelineRunInquiry {
|
|
84
|
+
/** The step that asked. A resume re-enters exactly this one. */
|
|
85
|
+
step: string;
|
|
86
|
+
askedAt: string;
|
|
87
|
+
inquiry: Inquiry;
|
|
66
88
|
}
|
|
67
89
|
/**
|
|
68
90
|
* The data plane of a pipeline run, and the ONE authority on where it stands.
|
|
@@ -98,6 +120,13 @@ export interface PipelineRun extends ResourceRecord {
|
|
|
98
120
|
error?: string;
|
|
99
121
|
/** The last thing a step said about itself. Progress, not state. */
|
|
100
122
|
note?: string;
|
|
123
|
+
/**
|
|
124
|
+
* The question this run stopped on.
|
|
125
|
+
*
|
|
126
|
+
* Present only while `status === Waiting`, and cleared on every entry of the run — a row that
|
|
127
|
+
* kept advertising a question it has already been given would have every reader offer it again.
|
|
128
|
+
*/
|
|
129
|
+
inquiry?: PipelineRunInquiry;
|
|
101
130
|
/** Whatever lock the run held, so a resume can re-take the same one. */
|
|
102
131
|
lockTask?: string;
|
|
103
132
|
/** How many times this run has been RESUMED. Reset only by a `Done` outcome. */
|
package/build/pipeline.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAIxD;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAC1B;AAED,2CAA2C;AAC3C,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,4FAA4F;IAC5F,OAAO,YAAY;CACpB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,uFAAuF;IACvF,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,yFAAyF;IACzF,KAAK,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,iBAAiB,CAAA;IACzB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,oGAAoG;IACpG,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gFAAgF;IAChF,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,qEAAqE;AACrE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAMD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,SAAU,YAAY,KAAG,IA6DzD,CAAA;AAgCD;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,SAAU,YAAY,KAAG,MAAM,EA0C7D,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,SAAU,YAAY,QAAQ,MAAM,KAAG,MAAM,EAmB5E,CAAA;AAED,sFAAsF;AACtF,eAAO,MAAM,YAAY,SAAU,YAAY,QAAQ,MAAM,KAAG,gBAAgB,GAAG,IAC5B,CAAA"}
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
package/build/pipeline.js
CHANGED
|
@@ -8,6 +8,14 @@ export var PipelineRunStatus;
|
|
|
8
8
|
PipelineRunStatus["Failed"] = "failed";
|
|
9
9
|
/** Stopped on purpose with work left — a budget expired, or the caller asked. Resumable. */
|
|
10
10
|
PipelineRunStatus["Aborted"] = "aborted";
|
|
11
|
+
/**
|
|
12
|
+
* Stopped on purpose, waiting for an answer to {@link PipelineRun.inquiry}.
|
|
13
|
+
*
|
|
14
|
+
* Resumable, and NOT stale: a waiting run has no process behind it and its `heartbeatAt` will not
|
|
15
|
+
* move again until somebody answers. A reconciler that reads staleness alone would take this for
|
|
16
|
+
* a crashed run and repair what is merely waiting.
|
|
17
|
+
*/
|
|
18
|
+
PipelineRunStatus["Waiting"] = "waiting";
|
|
11
19
|
})(PipelineRunStatus || (PipelineRunStatus = {}));
|
|
12
20
|
const fault = (faults, message) => {
|
|
13
21
|
faults.push(message);
|
package/build/pipeline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/agent-common",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.25",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
"typescript": "^7.0.2"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@owlmeans/error": "^0.1.18-rc.
|
|
33
|
-
"@owlmeans/flow": "^0.1.18-rc.
|
|
34
|
-
"@owlmeans/llm-common": "^0.1.18-rc.
|
|
35
|
-
"@owlmeans/resource": "^0.1.18-rc.
|
|
32
|
+
"@owlmeans/error": "^0.1.18-rc.17",
|
|
33
|
+
"@owlmeans/flow": "^0.1.18-rc.23",
|
|
34
|
+
"@owlmeans/llm-common": "^0.1.18-rc.21",
|
|
35
|
+
"@owlmeans/resource": "^0.1.18-rc.18"
|
|
36
36
|
},
|
|
37
37
|
"publishConfig": {
|
|
38
38
|
"access": "public"
|
package/src/consts.ts
CHANGED
|
@@ -36,6 +36,16 @@ export const DEFAULT_MAX_STATE_CHARS = 256_000
|
|
|
36
36
|
export const DEFAULT_STEP_ATTEMPTS = 1
|
|
37
37
|
export const DEFAULT_STEP_TIMEOUT = 1_800_000
|
|
38
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Where a pipeline's answers live in its state.
|
|
41
|
+
*
|
|
42
|
+
* One key, named here rather than per pipeline, because an answer has to survive every hop it can
|
|
43
|
+
* take: a resume merges answers into it, a composing step forwards it to its child, and a reader
|
|
44
|
+
* looks a question up by id. Scalars and keys, like everything else a state holds — the answer's
|
|
45
|
+
* decision travels here and its prose belongs wherever that pipeline keeps its documents.
|
|
46
|
+
*/
|
|
47
|
+
export const INQUIRY_ANSWERS_KEY = 'answers'
|
|
48
|
+
|
|
39
49
|
/** The lifecycle flow every agent run is driven through. */
|
|
40
50
|
export const AGENT_RUN_FLOW = 'agent-run'
|
|
41
51
|
|
package/src/errors.ts
CHANGED
|
@@ -92,6 +92,22 @@ export class PipelineStateTooLargeError extends AgentCommonError {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
+
/**
|
|
96
|
+
* A run was asked to wait for an answer it has no way of being given.
|
|
97
|
+
*
|
|
98
|
+
* Thrown when a step asks a question, nobody is there to answer it, and the pipeline has no run
|
|
99
|
+
* store: parking would leave nothing behind to resume, so the step fails at once rather than
|
|
100
|
+
* stopping a run that could never be started again.
|
|
101
|
+
*/
|
|
102
|
+
export class PipelineNotResumableError extends AgentCommonError {
|
|
103
|
+
public static override typeName: string = `PipelineNotResumable${AgentCommonError.typeName}`
|
|
104
|
+
|
|
105
|
+
constructor(message: string = 'error') {
|
|
106
|
+
super(`pipeline-not-resumable:${message}`)
|
|
107
|
+
this.type = PipelineNotResumableError.typeName
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
95
111
|
ResilientError.registerErrorClass(AgentCommonError)
|
|
96
112
|
ResilientError.registerErrorClass(AgentRunStateError)
|
|
97
113
|
ResilientError.registerErrorClass(PipelineSpecError)
|
|
@@ -99,3 +115,4 @@ ResilientError.registerErrorClass(PipelineVersionError)
|
|
|
99
115
|
ResilientError.registerErrorClass(PipelineUnknownStepError)
|
|
100
116
|
ResilientError.registerErrorClass(PipelineNotIdempotentError)
|
|
101
117
|
ResilientError.registerErrorClass(PipelineStateTooLargeError)
|
|
118
|
+
ResilientError.registerErrorClass(PipelineNotResumableError)
|
package/src/pipeline.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Inquiry } from '@owlmeans/llm-common'
|
|
1
2
|
import type { ResourceRecord } from '@owlmeans/resource'
|
|
2
3
|
import { DEFAULT_STEP_ATTEMPTS } from './consts.js'
|
|
3
4
|
import { PipelineSpecError, PipelineUnknownStepError } from './errors.js'
|
|
@@ -69,6 +70,28 @@ export enum PipelineRunStatus {
|
|
|
69
70
|
Failed = 'failed',
|
|
70
71
|
/** Stopped on purpose with work left — a budget expired, or the caller asked. Resumable. */
|
|
71
72
|
Aborted = 'aborted',
|
|
73
|
+
/**
|
|
74
|
+
* Stopped on purpose, waiting for an answer to {@link PipelineRun.inquiry}.
|
|
75
|
+
*
|
|
76
|
+
* Resumable, and NOT stale: a waiting run has no process behind it and its `heartbeatAt` will not
|
|
77
|
+
* move again until somebody answers. A reconciler that reads staleness alone would take this for
|
|
78
|
+
* a crashed run and repair what is merely waiting.
|
|
79
|
+
*/
|
|
80
|
+
Waiting = 'waiting',
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* What a `Waiting` run is waiting for.
|
|
85
|
+
*
|
|
86
|
+
* Written by the runner when a step asks a question nobody could answer while it ran, and read by
|
|
87
|
+
* everything that reports a run — a resume delivers the answer under {@link Inquiry.id}, which is
|
|
88
|
+
* the only thing that routes it back.
|
|
89
|
+
*/
|
|
90
|
+
export interface PipelineRunInquiry {
|
|
91
|
+
/** The step that asked. A resume re-enters exactly this one. */
|
|
92
|
+
step: string
|
|
93
|
+
askedAt: string
|
|
94
|
+
inquiry: Inquiry
|
|
72
95
|
}
|
|
73
96
|
|
|
74
97
|
/**
|
|
@@ -105,6 +128,13 @@ export interface PipelineRun extends ResourceRecord {
|
|
|
105
128
|
error?: string
|
|
106
129
|
/** The last thing a step said about itself. Progress, not state. */
|
|
107
130
|
note?: string
|
|
131
|
+
/**
|
|
132
|
+
* The question this run stopped on.
|
|
133
|
+
*
|
|
134
|
+
* Present only while `status === Waiting`, and cleared on every entry of the run — a row that
|
|
135
|
+
* kept advertising a question it has already been given would have every reader offer it again.
|
|
136
|
+
*/
|
|
137
|
+
inquiry?: PipelineRunInquiry
|
|
108
138
|
/** Whatever lock the run held, so a resume can re-take the same one. */
|
|
109
139
|
lockTask?: string
|
|
110
140
|
/** How many times this run has been RESUMED. Reset only by a `Done` outcome. */
|
package/tests/pipeline.spec.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test'
|
|
2
|
+
import { InquiryKind } from '@owlmeans/llm-common'
|
|
2
3
|
import {
|
|
4
|
+
INQUIRY_ANSWERS_KEY, PipelineRunStatus,
|
|
3
5
|
orderPipelineSteps, pipelineDescendants, pipelineStep, validatePipelineSpec,
|
|
4
6
|
} from '../src/index.js'
|
|
5
|
-
import type { PipelineSpec } from '../src/index.js'
|
|
7
|
+
import type { PipelineRun, PipelineSpec } from '../src/index.js'
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
10
|
* The spec is the one thing in this family that is checked without a model, a slot or a network, so
|
|
@@ -125,3 +127,41 @@ describe('agent-common — descendants', () => {
|
|
|
125
127
|
expect(pipelineStep(graph, 'a')?.step).toBe('a')
|
|
126
128
|
})
|
|
127
129
|
})
|
|
130
|
+
|
|
131
|
+
describe('agent-common — a run that is waiting for an answer', () => {
|
|
132
|
+
const waiting = (): PipelineRun => ({
|
|
133
|
+
runId: 'r', pipeline: 'test', version: 1, scope: 'p1',
|
|
134
|
+
status: PipelineRunStatus.Waiting,
|
|
135
|
+
completed: ['a'], pending: ['b'], state: `{"${INQUIRY_ANSWERS_KEY}":{}}`, stateChars: 15,
|
|
136
|
+
warnings: [], attempts: 0,
|
|
137
|
+
inquiry: {
|
|
138
|
+
step: 'b',
|
|
139
|
+
askedAt: '2026-01-01T00:00:00.000Z',
|
|
140
|
+
inquiry: {
|
|
141
|
+
id: 'q1', kind: InquiryKind.Choice, question: 'Which product is this?',
|
|
142
|
+
options: [{ value: 'a', label: 'A' }, { value: 'b', label: 'B' }],
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
startedAt: '2026-01-01T00:00:00.000Z',
|
|
146
|
+
heartbeatAt: '2026-01-01T00:00:00.000Z',
|
|
147
|
+
updatedAt: '2026-01-01T00:00:00.000Z',
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
test('`Waiting` is its own status, distinct from the two that mean the run stopped badly', () => {
|
|
151
|
+
// A reconciler branches on this string. Aborted means nobody asked anything and a resume may
|
|
152
|
+
// simply carry on; Waiting means a resume without an answer would park on the same question.
|
|
153
|
+
expect(PipelineRunStatus.Waiting).toBe('waiting')
|
|
154
|
+
expect(PipelineRunStatus.Waiting).not.toBe(PipelineRunStatus.Aborted)
|
|
155
|
+
expect(PipelineRunStatus.Waiting).not.toBe(PipelineRunStatus.Failed)
|
|
156
|
+
})
|
|
157
|
+
|
|
158
|
+
test('a row carrying its inquiry survives the wire unchanged', () => {
|
|
159
|
+
// These records cross process boundaries and storage backends; the question's id is the ONLY
|
|
160
|
+
// thing that routes an answer back, so it has to arrive spelled exactly as it was written.
|
|
161
|
+
const restored = JSON.parse(JSON.stringify(waiting())) as PipelineRun
|
|
162
|
+
|
|
163
|
+
expect(restored).toEqual(waiting())
|
|
164
|
+
expect(restored.inquiry?.inquiry.id).toBe('q1')
|
|
165
|
+
expect(restored.inquiry?.step).toBe('b')
|
|
166
|
+
})
|
|
167
|
+
})
|