@zimtsui/iterflow 0.0.8 → 0.0.9

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 CHANGED
@@ -9,33 +9,31 @@ Iterflow is an AI workflow orchestrator specifically designed for Optimizer-Eval
9
9
  ### Optimizer
10
10
 
11
11
  ```ts
12
- import { Opposition, Optimization, Rejection } from '@zimtsui/iterflow';
12
+ import { Optimization, Draft, Opposition } from '@zimtsui/iterflow';
13
13
  import OpenAI from 'openai';
14
14
  declare const openai: OpenAI;
15
15
 
16
- export async function *optimize(problem: string): Optimization.Raw<string> {
16
+ export async function *optimize(problem: string): Optimization.Generator<string, string, string> {
17
17
  const messages: OpenAI.ChatCompletionMessageParam[] = [
18
18
  {
19
19
  role: 'system',
20
20
  content: [
21
21
  'Please solve math problems.',
22
- 'Your answer will be evaluated and the feedback will be provided if the answer is rejected.'
22
+ 'Your answer will be evaluated and the feedback will be provided if the answer is rejected.',
23
+ 'Output "OPPOSE" to insist your answer.'
23
24
  ].join(' ')
24
25
  },
25
26
  { role: 'user', content: problem },
26
27
  ];
27
- for (;;) try {
28
+ for (;;) {
28
29
  const completion = await openai.chat.completions.create({ model: 'gpt-4o', messages });
29
30
  messages.push(completion.choices[0]!.message);
30
- if (completion.choices[0]!.message.content! === 'OPPOSE')
31
- return yield new Opposition('My answer is correct.');
32
- else
33
- return yield completion.choices[0]!.message.content!;
34
- } catch (e) {
35
- if (e instanceof Rejection) {} else throw e;
31
+ const rejection = completion.choices[0]!.message.content! === 'OPPOSE'
32
+ ? yield new Opposition('My answer is correct.')
33
+ : yield new Draft(completion.choices[0]!.message.content!);
36
34
  messages.push({
37
35
  role: 'user',
38
- content: `Your answer is rejected: ${e.message}. Please revise your answer.`,
36
+ content: `Your answer is rejected: ${rejection.extract()}. Please revise your answer.`,
39
37
  });
40
38
  }
41
39
  }
@@ -44,12 +42,14 @@ export async function *optimize(problem: string): Optimization.Raw<string> {
44
42
  ### Evaluator
45
43
 
46
44
  ```ts
47
- import { Evaluation, Rejection, Opposition } from '@zimtsui/iterflow';
45
+ import { Evaluation, Draft, Rejection, Opposition } from '@zimtsui/iterflow';
48
46
  import OpenAI from 'openai';
49
47
  declare const openai: OpenAI;
50
48
 
51
- export async function *evaluate(problem: string): Evaluation.Raw<string> {
52
- let draft = yield new Evaluation.FirstYield();
49
+ export async function *evaluate(problem: string): Evaluation.Generator<string, string, string> {
50
+ let input = yield;
51
+ if (input instanceof Draft) {} else throw new Error();
52
+ let draft = input;
53
53
  const messages: OpenAI.ChatCompletionMessageParam[] = [
54
54
  {
55
55
  role: 'system',
@@ -58,23 +58,29 @@ export async function *evaluate(problem: string): Evaluation.Raw<string> {
58
58
  'Print only `ACCEPT` if it is correct.',
59
59
  ].join(' '),
60
60
  },
61
- { role: 'user', content: `Problem: ${problem}\n\nAnswer: ${draft}` },
61
+ { role: 'user', content: `Problem: ${problem}\n\nAnswer: ${draft.extract()}` },
62
62
  ];
63
- for (;;) try {
63
+ for (;;) {
64
64
  const completion = await openai.chat.completions.create({ model: 'gpt-4o', messages });
65
65
  messages.push(completion.choices[0]!.message);
66
- if (completion.choices[0]!.message.content === 'ACCEPT') draft = yield draft;
67
- else draft = yield new Rejection(completion.choices[0]!.message.content!);
68
- messages.push({
69
- role: 'user',
70
- content: `The answer is updated: ${draft}\n\nPlease examine it again.`,
71
- });
72
- } catch (e) {
73
- if (e instanceof Opposition) {} else throw e;
74
- messages.push({
75
- role: 'user',
76
- content: `Your rejection is opposed: ${e.message}\n\nPlease examine it again.`,
77
- });
66
+ const input = completion.choices[0]!.message.content === 'ACCEPT'
67
+ ? yield
68
+ : yield new Rejection(completion.choices[0]!.message.content!);
69
+
70
+ if (input instanceof Draft) {
71
+ const draft = input;
72
+ messages.push({
73
+ role: 'user',
74
+ content: `The answer is updated: ${draft.extract()}\n\nPlease examine it again.`,
75
+ });
76
+ } else if (input instanceof Opposition) {
77
+ const opposition = input;
78
+ messages.push({
79
+ role: 'user',
80
+ content: `Your rejection is opposed: ${opposition.extract()}\n\nPlease examine it again.`,
81
+ });
82
+ }
83
+ else throw new Error();
78
84
  }
79
85
  }
80
86
  ```
@@ -83,38 +89,24 @@ export async function *evaluate(problem: string): Evaluation.Raw<string> {
83
89
 
84
90
  ```ts
85
91
  import { Optimization, Evaluation, opteva, Rejection } from '@zimtsui/iterflow';
86
- import { optimize } from './optimize.ts';
87
- import { evaluate } from './evaluate.ts';
88
- const evaluate1: (problem: string) => Evaluation.Raw<string, string> = evaluate;
89
- declare const evaluate2: (problem: string) => Evaluation.Raw<string, number>;
90
- declare const evaluate3: (problem: string) => Evaluation.Raw<number, number>;
91
-
92
- export async function workflow(problem: string): Promise<number> {
93
- await using optimization = Optimization.Cache.from(optimize(problem));
94
- await using evaluation1 = await Evaluation.Initialized.from(evaluate1(problem));
95
- await using evaluation2 = await Evaluation.Initialized.from(evaluate2(problem));
96
- await using evaluation3 = await Evaluation.Initialized.from(evaluate3(problem));
92
+ declare function optimize(problem: string): Optimization.Generator<number, string, string>;
93
+ declare function evaluateNumber(problem: string): Evaluation.Generator<number, string, string>;
94
+ declare function stringifySolution(solution: number): Promise<string>;
95
+ declare function evaluateString(problem: string): Evaluation.Generator<string, string, string>;
96
+
97
+ export async function workflow(problem: string): Promise<string> {
98
+ await using optimization = Optimization.from(optimize(problem));
99
+ await using numberEvaluation = await Evaluation.from(evaluateNumber(problem));
100
+ await using stringEvaluation = await Evaluation.from(evaluateString(problem));
97
101
  for (;;) try {
98
- let snapshotString = Optimization.Snapshot.from(optimization);
99
- snapshotString = await opteva(snapshotString, evaluation1);
100
- let snapshotNumber = await opteva(snapshotString, evaluation2);
101
- snapshotNumber = await opteva(snapshotNumber, evaluation3);
102
- return await snapshotNumber.next().then(r => r.value);
102
+ const numberView = optimization;
103
+ await opteva(numberView, numberEvaluation);
104
+ const stringView = Optimization.map(numberView, stringifySolution);
105
+ await opteva(stringView, stringEvaluation);
106
+ const finalDraft = await stringView.repeat();
107
+ return finalDraft.extract();
103
108
  } catch (e) {
104
109
  if (e instanceof Rejection) {} else throw e;
105
110
  }
106
111
  };
107
112
  ```
108
-
109
- ## Subtypes
110
-
111
- ```mermaid
112
- classDiagram
113
-
114
- Optimization <|.. Optimization.Cache
115
- Optimization.Raw <|.. Optimization
116
- class Optimization.Snapshot
117
-
118
- Evaluation.Raw <|.. Evaluation
119
- class Evaluation.Initialized
120
- ```
@@ -0,0 +1,15 @@
1
+ import { Rejection, Opposition, Draft } from './types.ts';
2
+ export interface Evaluation<in out draft, in out rejection, in out opposition> extends AsyncDisposable {
3
+ submit(draft: Draft<draft>): Promise<Rejection<rejection> | void>;
4
+ oppose(opposition: Opposition<opposition>): Promise<Rejection<rejection> | void>;
5
+ }
6
+ export declare namespace Evaluation {
7
+ /**
8
+ * @param evagen Ownership transferred.
9
+ */
10
+ function from<draft, rejection, opposition>(evagen: Evaluation.Generator<draft, rejection, opposition>): Promise<Evaluation<draft, rejection, opposition>>;
11
+ /**
12
+ * First yield must be void.
13
+ */
14
+ type Generator<draft, rejection, opposition> = AsyncGenerator<Rejection<rejection> | void, never, Draft<draft> | Opposition<opposition>>;
15
+ }
@@ -0,0 +1,25 @@
1
+ import { Rejection, Opposition, Draft } from "./types.js";
2
+ export var Evaluation;
3
+ (function (Evaluation) {
4
+ /**
5
+ * @param evagen Ownership transferred.
6
+ */
7
+ async function from(evagen) {
8
+ const first = await evagen.next().then(r => r.value);
9
+ if (first instanceof Rejection)
10
+ throw new Error();
11
+ return {
12
+ async submit(draft) {
13
+ return await evagen.next(draft).then(r => r.value);
14
+ },
15
+ async oppose(opposition) {
16
+ return await evagen.next(opposition).then(r => r.value);
17
+ },
18
+ async [Symbol.asyncDispose]() {
19
+ await evagen[Symbol.asyncDispose]?.();
20
+ }
21
+ };
22
+ }
23
+ Evaluation.from = from;
24
+ })(Evaluation || (Evaluation = {}));
25
+ //# sourceMappingURL=evaluation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluation.js","sourceRoot":"","sources":["../src/evaluation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAU1D,MAAM,KAAW,UAAU,CAgC1B;AAhCD,WAAiB,UAAU;IAEvB;;OAEG;IACI,KAAK,UAAU,IAAI,CACtB,MAA0D;QAE1D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,KAAK,YAAY,SAAS;YAAE,MAAM,IAAI,KAAK,EAAE,CAAC;QAClD,OAAO;YACH,KAAK,CAAC,MAAM,CAAC,KAAmB;gBAC5B,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvD,CAAC;YAED,KAAK,CAAC,MAAM,CAAC,UAAkC;gBAC3C,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC5D,CAAC;YAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;gBACvB,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;YAC1C,CAAC;SAC+C,CAAC;IACzD,CAAC;IAlBqB,eAAI,OAkBzB,CAAA;AASL,CAAC,EAhCgB,UAAU,KAAV,UAAU,QAgC1B"}
@@ -1,2 +1,4 @@
1
+ export * from './optimization.ts';
2
+ export * from './evaluation.ts';
1
3
  export * from './opteva.ts';
2
- export * from './exceptions.ts';
4
+ export * from './types.ts';
package/build/exports.js CHANGED
@@ -1,3 +1,5 @@
1
+ export * from "./optimization.js";
2
+ export * from "./evaluation.js";
1
3
  export * from "./opteva.js";
2
- export * from "./exceptions.js";
4
+ export * from "./types.js";
3
5
  //# sourceMappingURL=exports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
package/build/opteva.d.ts CHANGED
@@ -1,75 +1,6 @@
1
- import { Rejection, Opposition } from './exceptions.ts';
2
- export interface Optimization<draft> extends AsyncGenerator<Awaited<draft> | Opposition, never, never> {
3
- next(...values: [] | [never]): Promise<IteratorYieldResult<Awaited<draft>>>;
4
- throw(e: Rejection): Promise<IteratorYieldResult<Awaited<draft> | Opposition>>;
5
- }
6
- export declare namespace Optimization {
7
- interface Raw<draft> extends AsyncGenerator<Awaited<draft> | Opposition, never, never> {
8
- }
9
- /**
10
- * @param raw0 Ownership transferred.
11
- */
12
- function ensure<draft>(raw0: Optimization.Raw<draft>): Optimization<draft>;
13
- interface Cache<draft> extends AsyncGenerator<Awaited<draft> | Opposition, never, void> {
14
- next(...values: [] | [void]): Promise<IteratorYieldResult<Awaited<draft>>>;
15
- throw(e: Rejection): Promise<IteratorYieldResult<Awaited<draft> | Opposition>>;
16
- }
17
- namespace Cache {
18
- interface Raw<draft> extends AsyncGenerator<Awaited<draft> | Opposition, never, void> {
19
- }
20
- /**
21
- * @param raw0 Ownership transferred.
22
- */
23
- function ensure<draft>(raw0: Optimization.Cache.Raw<draft>): Optimization.Cache<draft>;
24
- /**
25
- * @param raw0 Ownership transferred.
26
- */
27
- function from<draft>(raw0: Optimization.Raw<draft>): Optimization.Cache<draft>;
28
- }
29
- interface Snapshot<draft> extends AsyncGenerator<Awaited<draft> | Opposition, never, void> {
30
- next(...values: [] | [void]): Promise<IteratorYieldResult<Awaited<draft>>>;
31
- /**
32
- * @throws {@link Rejection}
33
- */
34
- throw(e: Rejection): Promise<IteratorYieldResult<Opposition>>;
35
- }
36
- namespace Snapshot {
37
- /**
38
- * @param opt Ownership NOT transferred.
39
- */
40
- function from<draft>(opt: Optimization.Cache<draft>): Optimization.Snapshot<draft>;
41
- /**
42
- * @param opt Ownership NOT transferred.
43
- */
44
- function recover<input, output>(opt: Optimization.Snapshot<input>, draft: Awaited<output>): Optimization.Snapshot<output>;
45
- }
46
- }
47
- export interface Evaluation<input, output = input> extends AsyncGenerator<Awaited<output> | Rejection, never, input> {
48
- next(...values: []): Promise<IteratorYieldResult<Evaluation.FirstYield>>;
49
- next(...values: [input]): Promise<IteratorYieldResult<Awaited<output> | Rejection>>;
50
- throw(e: Opposition): Promise<IteratorYieldResult<Awaited<output> | Rejection>>;
51
- }
52
- export declare namespace Evaluation {
53
- interface Raw<input, output = input> extends AsyncGenerator<Awaited<output> | Rejection | FirstYield, never, input> {
54
- }
55
- /**
56
- * @param raw0 Ownership transferred.
57
- */
58
- function ensure<input, output = input>(raw0: Evaluation.Raw<input, output>): Evaluation<input, output>;
59
- class FirstYield {
60
- }
61
- interface Initialized<input, output = input> extends AsyncGenerator<Awaited<output> | Rejection, never, input> {
62
- next(...values: [input]): Promise<IteratorResult<Awaited<output> | Rejection, never>>;
63
- throw(e: Opposition): Promise<IteratorResult<Awaited<output> | Rejection, never>>;
64
- }
65
- namespace Initialized {
66
- /**
67
- * @param raw0 Ownership transferred.
68
- */
69
- function from<input, output = input>(raw0: Evaluation.Raw<input, output>): Promise<Evaluation.Initialized<input, output>>;
70
- }
71
- }
1
+ import { Optimization } from './optimization.ts';
2
+ import { Evaluation } from './evaluation.ts';
72
3
  /**
73
4
  * @throws {@link Rejection}
74
5
  */
75
- export declare function opteva<input, output>(opt: Optimization.Snapshot<input>, eva: Evaluation.Initialized<input, output>): Promise<Optimization.Snapshot<output>>;
6
+ export declare function opteva<draft, rejection, opposition>(opt: Optimization.View<draft, rejection, opposition>, eva: Evaluation<draft, rejection, opposition>): Promise<void>;
package/build/opteva.js CHANGED
@@ -1,298 +1,20 @@
1
- var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
- if (value !== null && value !== void 0) {
3
- if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
- var dispose, inner;
5
- if (async) {
6
- if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
- dispose = value[Symbol.asyncDispose];
8
- }
9
- if (dispose === void 0) {
10
- if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
- dispose = value[Symbol.dispose];
12
- if (async) inner = dispose;
13
- }
14
- if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
- if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
- env.stack.push({ value: value, dispose: dispose, async: async });
17
- }
18
- else if (async) {
19
- env.stack.push({ async: true });
20
- }
21
- return value;
22
- };
23
- var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
- return function (env) {
25
- function fail(e) {
26
- env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
- env.hasError = true;
28
- }
29
- var r, s = 0;
30
- function next() {
31
- while (r = env.stack.pop()) {
32
- try {
33
- if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
- if (r.dispose) {
35
- var result = r.dispose.call(r.value);
36
- if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
- }
38
- else s |= 1;
39
- }
40
- catch (e) {
41
- fail(e);
42
- }
43
- }
44
- if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
- if (env.hasError) throw env.error;
46
- }
47
- return next();
48
- };
49
- })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
- var e = new Error(message);
51
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
- });
53
- import { Rejection, Opposition } from "./exceptions.js";
54
- export var Optimization;
55
- (function (Optimization) {
56
- /**
57
- * @param raw0 Ownership transferred.
58
- */
59
- function ensure(raw0) {
60
- return {
61
- async next(...values) {
62
- const result = await raw0.next(...values);
63
- if (result.done)
64
- throw new Error(undefined, { cause: result });
65
- const output = result.value;
66
- if (output instanceof Opposition)
67
- throw new Error(undefined, { cause: output });
68
- return { value: output, done: false };
69
- },
70
- async throw(e) {
71
- const result = await raw0.throw(e);
72
- if (result.done)
73
- throw new Error();
74
- return { value: result.value, done: false };
75
- },
76
- return(value) {
77
- return raw0.return(value);
78
- },
79
- [Symbol.asyncIterator]() {
80
- return this;
81
- },
82
- [Symbol.asyncDispose]() {
83
- return raw0[Symbol.asyncDispose]?.();
84
- },
85
- };
86
- }
87
- Optimization.ensure = ensure;
88
- let Cache;
89
- (function (Cache) {
90
- /**
91
- * @param raw0 Ownership transferred.
92
- */
93
- function ensure(raw0) {
94
- return {
95
- async next(...values) {
96
- const result = await raw0.next(...values);
97
- if (result.done)
98
- throw new Error(undefined, { cause: result });
99
- const output = result.value;
100
- if (output instanceof Opposition)
101
- throw new Error(undefined, { cause: output });
102
- return { value: output, done: false };
103
- },
104
- async throw(e) {
105
- const result = await raw0.throw(e);
106
- if (result.done)
107
- throw new Error(undefined, { cause: result });
108
- return { value: result.value, done: false };
109
- },
110
- return(value) {
111
- return raw0.return(value);
112
- },
113
- [Symbol.asyncIterator]() {
114
- return this;
115
- },
116
- [Symbol.asyncDispose]() {
117
- return raw0[Symbol.asyncDispose]?.();
118
- },
119
- };
120
- }
121
- Cache.ensure = ensure;
122
- /**
123
- * @param raw0 Ownership transferred.
124
- */
125
- function from(raw0) {
126
- /**
127
- * @param raw0 Ownership transferred.
128
- */
129
- async function* from(raw0) {
130
- const env_1 = { stack: [], error: void 0, hasError: false };
131
- try {
132
- const raw = __addDisposableResource(env_1, Optimization.ensure(raw0), true);
133
- let draft = await raw.next().then(r => r.value);
134
- let output = draft;
135
- for (;;)
136
- try {
137
- yield output;
138
- output = draft;
139
- }
140
- catch (e) {
141
- if (e instanceof Rejection) { }
142
- else
143
- throw e;
144
- output = await raw.throw(e).then(r => r.value);
145
- if (output instanceof Opposition) { }
146
- else
147
- draft = output;
148
- }
149
- }
150
- catch (e_1) {
151
- env_1.error = e_1;
152
- env_1.hasError = true;
153
- }
154
- finally {
155
- const result_1 = __disposeResources(env_1);
156
- if (result_1)
157
- await result_1;
158
- }
159
- }
160
- return Optimization.Cache.ensure(from(Optimization.ensure(raw0)));
161
- }
162
- Cache.from = from;
163
- })(Cache = Optimization.Cache || (Optimization.Cache = {}));
164
- let Snapshot;
165
- (function (Snapshot) {
166
- /**
167
- * @param opt Ownership NOT transferred.
168
- */
169
- function from(opt) {
170
- return {
171
- next(...values) {
172
- return opt.next(...values);
173
- },
174
- async throw(e) {
175
- const output = await opt.throw(e).then(r => r.value);
176
- if (output instanceof Opposition)
177
- return { value: output, done: false };
178
- throw e;
179
- },
180
- return(value) {
181
- return opt.return(value);
182
- },
183
- [Symbol.asyncIterator]() {
184
- return this;
185
- },
186
- async [Symbol.asyncDispose]() { },
187
- };
188
- }
189
- Snapshot.from = from;
190
- /**
191
- * @param opt Ownership NOT transferred.
192
- */
193
- function recover(opt, draft) {
194
- return {
195
- async next(...values) {
196
- return { value: draft, done: false };
197
- },
198
- throw(e) {
199
- return opt.throw(e);
200
- },
201
- async return(value) {
202
- await opt.return(undefined);
203
- return { value: await value, done: true };
204
- },
205
- [Symbol.asyncIterator]() {
206
- return this;
207
- },
208
- async [Symbol.asyncDispose]() { },
209
- };
210
- }
211
- Snapshot.recover = recover;
212
- })(Snapshot = Optimization.Snapshot || (Optimization.Snapshot = {}));
213
- })(Optimization || (Optimization = {}));
214
- export var Evaluation;
215
- (function (Evaluation) {
216
- /**
217
- * @param raw0 Ownership transferred.
218
- */
219
- function ensure(raw0) {
220
- async function next(...values) {
221
- if (values.length) {
222
- const result = await raw0.next(...values);
223
- if (result.done)
224
- throw new Error(undefined, { cause: result });
225
- const output = result.value;
226
- if (output instanceof Evaluation.FirstYield)
227
- throw new Error(undefined, { cause: output });
228
- return { value: result.value, done: false };
229
- }
230
- else {
231
- const result = await raw0.next();
232
- if (result.done)
233
- throw new Error(undefined, { cause: result });
234
- const output = result.value;
235
- if (output instanceof Evaluation.FirstYield)
236
- return { value: output, done: false };
237
- throw new Error(undefined, { cause: output });
238
- }
239
- }
240
- return {
241
- next,
242
- async throw(e) {
243
- const result = await raw0.throw(e);
244
- if (result.done)
245
- throw new Error(undefined, { cause: result });
246
- const output = result.value;
247
- if (output instanceof Evaluation.FirstYield)
248
- throw new Error(undefined, { cause: output });
249
- return { value: output, done: false };
250
- },
251
- async return(value) {
252
- const result = await raw0.return(value);
253
- if (result.done)
254
- return { value: await value, done: true };
255
- const output = result.value;
256
- if (output instanceof Evaluation.FirstYield)
257
- throw new Error(undefined, { cause: output });
258
- return { value: output, done: false };
259
- },
260
- [Symbol.asyncIterator]() {
261
- return this;
262
- },
263
- [Symbol.asyncDispose]() {
264
- return raw0[Symbol.asyncDispose]?.();
265
- },
266
- };
267
- }
268
- Evaluation.ensure = ensure;
269
- class FirstYield {
270
- }
271
- Evaluation.FirstYield = FirstYield;
272
- let Initialized;
273
- (function (Initialized) {
274
- /**
275
- * @param raw0 Ownership transferred.
276
- */
277
- async function from(raw0) {
278
- const eva = Evaluation.ensure(raw0);
279
- await eva.next().then(r => r.value);
280
- return eva;
281
- }
282
- Initialized.from = from;
283
- })(Initialized = Evaluation.Initialized || (Evaluation.Initialized = {}));
284
- })(Evaluation || (Evaluation = {}));
1
+ import { Draft, Rejection, Opposition } from "./types.js";
2
+ import { Optimization } from "./optimization.js";
3
+ import { Evaluation } from "./evaluation.js";
285
4
  /**
286
5
  * @throws {@link Rejection}
287
6
  */
288
7
  export async function opteva(opt, eva) {
289
- const draft = await opt.next().then(r => r.value);
290
- for (let output = await eva.next(draft).then(r => r.value);;) {
291
- if (output instanceof Rejection) { }
292
- else
293
- return Optimization.Snapshot.recover(opt, output);
294
- const input = await opt.throw(output).then(r => r.value);
295
- output = await eva.throw(input).then(r => r.value);
8
+ let draft = await opt.repeat();
9
+ for (let evaoutput = await eva.submit(draft); evaoutput instanceof Rejection;) {
10
+ const rejection = evaoutput;
11
+ const optoutput = await opt.reject(rejection);
12
+ if (optoutput instanceof Opposition) {
13
+ evaoutput = await eva.oppose(optoutput);
14
+ }
15
+ else if (optoutput instanceof Draft) {
16
+ throw rejection;
17
+ }
296
18
  }
297
19
  }
298
20
  //# sourceMappingURL=opteva.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"opteva.js","sourceRoot":"","sources":["../src/opteva.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opteva.js","sourceRoot":"","sources":["../src/opteva.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK7C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CACxB,GAAoD,EACpD,GAA6C;IAE7C,IAAI,KAAK,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;IAC/B,KAAK,IAAI,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,YAAY,SAAS,GAAG,CAAC;QAC5E,MAAM,SAAS,GAAG,SAAS,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,SAAS,YAAY,UAAU,EAAE,CAAC;YAClC,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,SAAS,YAAY,KAAK,EAAE,CAAC;YACpC,MAAM,SAAS,CAAC;QACpB,CAAC;IACL,CAAC;AACL,CAAC"}