@t4h.framework/core 0.6.1 → 0.8.0
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/.ai/skills/framework-core/SKILL.md +103 -287
- package/.ai/skills/framework-workflow-creation/SKILL.md +108 -60
- package/.ai/skills/framework-workflow-testing/SKILL.md +165 -111
- package/README.md +123 -37
- package/dist/models/AsyncActivity.d.ts +1 -0
- package/dist/models/AsyncActivity.d.ts.map +1 -1
- package/dist/models/AsyncActivity.js +1 -0
- package/dist/models/AsyncActivity.js.map +1 -1
- package/dist/models/History.d.ts +1 -0
- package/dist/models/History.d.ts.map +1 -1
- package/dist/models/History.js +3 -0
- package/dist/models/History.js.map +1 -1
- package/dist/models/SyncActivity.d.ts +1 -0
- package/dist/models/SyncActivity.d.ts.map +1 -1
- package/dist/models/SyncActivity.js +1 -0
- package/dist/models/SyncActivity.js.map +1 -1
- package/dist/testing/ActivityTesting.d.ts +1 -1
- package/dist/testing/ActivityTesting.d.ts.map +1 -1
- package/dist/testing/ActivityTesting.js.map +1 -1
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +1 -2
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestWorkflowEnvironment.d.ts +6 -18
- package/dist/testing/TestWorkflowEnvironment.d.ts.map +1 -1
- package/dist/testing/TestWorkflowEnvironment.js +35 -93
- package/dist/testing/TestWorkflowEnvironment.js.map +1 -1
- package/dist/testing/WorkflowTesting.d.ts +1 -1
- package/dist/testing/async-activity-results.d.ts +12 -0
- package/dist/testing/async-activity-results.d.ts.map +1 -0
- package/dist/testing/async-activity-results.js +10 -0
- package/dist/testing/async-activity-results.js.map +1 -0
- package/dist/testing/create-mock-claim.d.ts +11 -5
- package/dist/testing/create-mock-claims.d.ts +12 -8
- package/dist/testing/create-test-env.d.ts +10 -4
- package/dist/testing/exceptions/NonDeterministicWorkflowError.d.ts +4 -0
- package/dist/testing/exceptions/NonDeterministicWorkflowError.d.ts.map +1 -0
- package/dist/testing/exceptions/NonDeterministicWorkflowError.js +7 -0
- package/dist/testing/exceptions/NonDeterministicWorkflowError.js.map +1 -0
- package/dist/testing/index.d.ts +8 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +8 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/mock-async.d.ts +48 -0
- package/dist/testing/mock-async.d.ts.map +1 -0
- package/dist/testing/mock-async.js +58 -0
- package/dist/testing/mock-async.js.map +1 -0
- package/dist/testing/outcomes.d.ts +12 -0
- package/dist/testing/outcomes.d.ts.map +1 -0
- package/dist/testing/outcomes.js +10 -0
- package/dist/testing/outcomes.js.map +1 -0
- package/dist/testing/run-workflow.d.ts +22 -21
- package/dist/testing/run-workflow.d.ts.map +1 -1
- package/dist/testing/run-workflow.js +91 -33
- package/dist/testing/run-workflow.js.map +1 -1
- package/dist/testing/tools/create-mock-claim.d.ts +5 -0
- package/dist/testing/tools/create-mock-claim.d.ts.map +1 -0
- package/dist/testing/tools/create-mock-claim.js +26 -0
- package/dist/testing/tools/create-mock-claim.js.map +1 -0
- package/dist/testing/tools/create-mock-claims.d.ts +8 -0
- package/dist/testing/tools/create-mock-claims.d.ts.map +1 -0
- package/dist/testing/tools/create-mock-claims.js +5 -0
- package/dist/testing/tools/create-mock-claims.js.map +1 -0
- package/dist/testing/tools/create-test-env.d.ts +4 -0
- package/dist/testing/tools/create-test-env.d.ts.map +1 -0
- package/dist/testing/tools/create-test-env.js +7 -0
- package/dist/testing/tools/create-test-env.js.map +1 -0
- package/dist/testing/tools/mock-async.d.ts +20 -0
- package/dist/testing/tools/mock-async.d.ts.map +1 -0
- package/dist/testing/tools/mock-async.js +57 -0
- package/dist/testing/tools/mock-async.js.map +1 -0
- package/dist/testing/tools/resolve-activity.d.ts +11 -0
- package/dist/testing/tools/resolve-activity.d.ts.map +1 -0
- package/dist/testing/tools/resolve-activity.js +23 -0
- package/dist/testing/tools/resolve-activity.js.map +1 -0
- package/dist/testing/tools/resolve-async-activity.d.ts +15 -0
- package/dist/testing/tools/resolve-async-activity.d.ts.map +1 -0
- package/dist/testing/tools/resolve-async-activity.js +69 -0
- package/dist/testing/tools/resolve-async-activity.js.map +1 -0
- package/dist/testing/tools/run-with-clock.d.ts +3 -0
- package/dist/testing/tools/run-with-clock.d.ts.map +1 -0
- package/dist/testing/tools/run-with-clock.js +7 -0
- package/dist/testing/tools/run-with-clock.js.map +1 -0
- package/dist/testing/tools/run-workflow-ticks.d.ts +8 -0
- package/dist/testing/tools/run-workflow-ticks.d.ts.map +1 -0
- package/dist/testing/tools/run-workflow-ticks.js +26 -0
- package/dist/testing/tools/run-workflow-ticks.js.map +1 -0
- package/dist/testing/tools/run-workflow.d.ts +25 -0
- package/dist/testing/tools/run-workflow.d.ts.map +1 -0
- package/dist/testing/tools/run-workflow.js +25 -0
- package/dist/testing/tools/run-workflow.js.map +1 -0
- package/dist/testing/types.d.ts +1 -1
- package/dist/testing/types.d.ts.map +1 -1
- package/dist/testing/typings/AsyncActivityResult.d.ts +10 -0
- package/dist/testing/typings/AsyncActivityResult.d.ts.map +1 -0
- package/dist/testing/typings/AsyncActivityResult.js +2 -0
- package/dist/testing/typings/AsyncActivityResult.js.map +1 -0
- package/dist/testing/typings/ClaimConstructor.d.ts +2 -0
- package/dist/testing/typings/ClaimConstructor.d.ts.map +1 -0
- package/dist/testing/typings/ClaimConstructor.js +2 -0
- package/dist/testing/typings/ClaimConstructor.js.map +1 -0
- package/dist/testing/typings/MockAsyncActivity.d.ts +10 -0
- package/dist/testing/typings/MockAsyncActivity.d.ts.map +1 -0
- package/dist/testing/typings/MockAsyncActivity.js +2 -0
- package/dist/testing/typings/MockAsyncActivity.js.map +1 -0
- package/dist/tools/Internals.d.ts +1 -0
- package/dist/tools/Internals.d.ts.map +1 -1
- package/dist/tools/Internals.js +1 -0
- package/dist/tools/Internals.js.map +1 -1
- package/package.json +3 -2
- package/dist/testing/auto-resolve-timeouts.d.ts +0 -3
- package/dist/testing/auto-resolve-timeouts.d.ts.map +0 -1
- package/dist/testing/auto-resolve-timeouts.js +0 -16
- package/dist/testing/auto-resolve-timeouts.js.map +0 -1
- package/dist/testing/mock-async-by-activity.d.ts +0 -10
- package/dist/testing/mock-async-by-activity.d.ts.map +0 -1
- package/dist/testing/mock-async-by-activity.js +0 -15
- package/dist/testing/mock-async-by-activity.js.map +0 -1
- package/dist/testing/resolve-async-activities-in-order.d.ts +0 -3
- package/dist/testing/resolve-async-activities-in-order.d.ts.map +0 -1
- package/dist/testing/resolve-async-activities-in-order.js +0 -10
- package/dist/testing/resolve-async-activities-in-order.js.map +0 -1
- package/dist/tools/runWorkflowToCompletion.d.ts +0 -15
- package/dist/tools/runWorkflowToCompletion.d.ts.map +0 -1
- package/dist/tools/runWorkflowToCompletion.js +0 -61
- package/dist/tools/runWorkflowToCompletion.js.map +0 -1
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export function mockAsyncByActivity(entries, fallback) {
|
|
2
|
-
return async (activity, context) => {
|
|
3
|
-
for (const [ActivityClass, handler] of entries) {
|
|
4
|
-
if (!(activity instanceof ActivityClass))
|
|
5
|
-
continue;
|
|
6
|
-
if (typeof handler === 'function')
|
|
7
|
-
return handler(activity, context);
|
|
8
|
-
return handler;
|
|
9
|
-
}
|
|
10
|
-
if (fallback)
|
|
11
|
-
return fallback(activity, context);
|
|
12
|
-
throw new Error(`No mockAsyncByActivity handler for "${activity.constructor.name}" (index: ${context.index})`);
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=mock-async-by-activity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-async-by-activity.js","sourceRoot":"","sources":["../../src/testing/mock-async-by-activity.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,mBAAmB,CACjC,OAAwC,EACxC,QAA4B;IAE5B,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QACjC,KAAK,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;YAC/C,IAAI,CAAC,CAAC,QAAQ,YAAY,aAAa,CAAC;gBAAE,SAAQ;YAElD,IAAI,OAAO,OAAO,KAAK,UAAU;gBAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAEpE,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAEhD,MAAM,IAAI,KAAK,CACb,uCAAuC,QAAQ,CAAC,WAAW,CAAC,IAAI,aAAa,OAAO,CAAC,KAAK,GAAG,CAC9F,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-async-activities-in-order.d.ts","sourceRoot":"","sources":["../../src/testing/resolve-async-activities-in-order.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEzE,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,SAAS,oBAAoB,EAAE,GACxC,iBAAiB,CAanB"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export function resolveAsyncActivitiesInOrder(outcomes) {
|
|
2
|
-
const queue = [...outcomes];
|
|
3
|
-
return (activity, context) => {
|
|
4
|
-
const next = queue.shift();
|
|
5
|
-
if (!next)
|
|
6
|
-
throw new Error(`No more async outcomes (activity: "${activity.constructor.name}", index: ${context.index}, input: ${JSON.stringify(context.input)})`);
|
|
7
|
-
return next;
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=resolve-async-activities-in-order.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-async-activities-in-order.js","sourceRoot":"","sources":["../../src/testing/resolve-async-activities-in-order.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,6BAA6B,CAC3C,QAAyC;IAEzC,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;IAE3B,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAE1B,IAAI,CAAC,IAAI;YACP,MAAM,IAAI,KAAK,CACb,sCAAsC,QAAQ,CAAC,WAAW,CAAC,IAAI,aAAa,OAAO,CAAC,KAAK,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CACtI,CAAA;QAEH,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { AsyncActivity } from '../models/AsyncActivity.js';
|
|
2
|
-
import type { ClaimProvider } from '../models/Claim.js';
|
|
3
|
-
import { Env } from '../models/Env.js';
|
|
4
|
-
import type { Log } from '../models/Logger.js';
|
|
5
|
-
import type { Workflow, WorkflowInput } from '../models/Workflow.js';
|
|
6
|
-
export type AsyncActivityResolver = (activity: AsyncActivity<any, any, any, any, any, any>, input: unknown) => unknown | Promise<unknown>;
|
|
7
|
-
export interface RunWorkflowToCompletionOptions {
|
|
8
|
-
claims?: readonly ClaimProvider<any>[];
|
|
9
|
-
env?: Env.Entries;
|
|
10
|
-
resolveAsyncActivity?: AsyncActivityResolver;
|
|
11
|
-
maxTicks?: number;
|
|
12
|
-
logs?: Log[];
|
|
13
|
-
}
|
|
14
|
-
export declare function runWorkflowToCompletion<T extends Workflow<any, any>>(workflow: T, input: WorkflowInput<T>, options?: RunWorkflowToCompletionOptions): Promise<any>;
|
|
15
|
-
//# sourceMappingURL=runWorkflowToCompletion.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runWorkflowToCompletion.d.ts","sourceRoot":"","sources":["../../src/tools/runWorkflowToCompletion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAM1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAEtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAG9C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAGpE,MAAM,MAAM,qBAAqB,GAAG,CAClC,QAAQ,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACrD,KAAK,EAAE,OAAO,KACX,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE/B,MAAM,WAAW,8BAA8B;IAC7C,MAAM,CAAC,EAAE,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAA;IACtC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACjB,oBAAoB,CAAC,EAAE,qBAAqB,CAAA;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;CACb;AAED,wBAAsB,uBAAuB,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EACxE,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,OAAO,GAAE,8BAAmC,gBAgC7C"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { AsyncActivity } from '../models/AsyncActivity.js';
|
|
2
|
-
import { AsyncActivityResultFulfilled, AsyncActivityResultPending, AsyncActivityResultRejected, } from '../models/AsyncActivityAdvanceResult.js';
|
|
3
|
-
import { Env } from '../models/Env.js';
|
|
4
|
-
import { PushActivity } from '../models/PushActivity.js';
|
|
5
|
-
import { SyncActivity } from '../models/SyncActivity.js';
|
|
6
|
-
import { Internals } from './Internals.js';
|
|
7
|
-
export async function runWorkflowToCompletion(workflow, input, options = {}) {
|
|
8
|
-
const claims = options.claims ?? [];
|
|
9
|
-
const env = options.env ?? {};
|
|
10
|
-
const maxTicks = options.maxTicks ?? 10_000;
|
|
11
|
-
const history = [];
|
|
12
|
-
const logs = options.logs ?? [];
|
|
13
|
-
for (let tick = 0; tick < maxTicks; tick++) {
|
|
14
|
-
try {
|
|
15
|
-
return await Internals.runWorkflow(workflow, {
|
|
16
|
-
input,
|
|
17
|
-
claims,
|
|
18
|
-
env,
|
|
19
|
-
history,
|
|
20
|
-
logs,
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
catch (pushOrError) {
|
|
24
|
-
if (!(pushOrError instanceof PushActivity))
|
|
25
|
-
throw pushOrError;
|
|
26
|
-
const item = await resolveActivity(pushOrError, { claims, env }, options.resolveAsyncActivity);
|
|
27
|
-
history.push(item);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
throw new Error(`Workflow did not settle within ${maxTicks} ticks`);
|
|
31
|
-
}
|
|
32
|
-
async function resolveActivity(push, context, resolver) {
|
|
33
|
-
const activity = push.activity;
|
|
34
|
-
if (activity instanceof SyncActivity) {
|
|
35
|
-
const output = await Internals.runActivity(activity, context, instance => instance.run(push.input));
|
|
36
|
-
return { type: 'sync', output };
|
|
37
|
-
}
|
|
38
|
-
if (activity instanceof AsyncActivity) {
|
|
39
|
-
const bootstrap = await Internals.runActivity(activity, context, instance => instance.bootstrap(push.input));
|
|
40
|
-
const settled = await settleAsyncActivity(activity, bootstrap, context, push.input, resolver);
|
|
41
|
-
return settled;
|
|
42
|
-
}
|
|
43
|
-
throw new Error('Unknown activity type');
|
|
44
|
-
}
|
|
45
|
-
async function settleAsyncActivity(activity, result, context, input, resolver) {
|
|
46
|
-
if (result instanceof AsyncActivityResultFulfilled)
|
|
47
|
-
return { type: 'async', status: 'fulfilled', output: result.payload };
|
|
48
|
-
if (result instanceof AsyncActivityResultRejected)
|
|
49
|
-
return { type: 'async', status: 'rejected', output: result.payload };
|
|
50
|
-
if (!(result instanceof AsyncActivityResultPending))
|
|
51
|
-
throw new Error('Unknown async activity result');
|
|
52
|
-
const name = activity.constructor.name;
|
|
53
|
-
if (!resolver)
|
|
54
|
-
throw new Error(`Async activity "${name}" is pending and no resolveAsyncActivity was provided`);
|
|
55
|
-
const payload = await resolver(activity, input);
|
|
56
|
-
const advanced = await Internals.runActivity(activity, context, instance => instance.advance(payload, result));
|
|
57
|
-
if (advanced instanceof AsyncActivityResultPending)
|
|
58
|
-
throw new Error(`Async activity "${name}" stayed pending after advance`);
|
|
59
|
-
return settleAsyncActivity(activity, advanced, context, input, resolver);
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=runWorkflowToCompletion.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runWorkflowToCompletion.js","sourceRoot":"","sources":["../../src/tools/runWorkflowToCompletion.ts"],"names":[],"mappings":"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"}
|