@sixb/core 0.1.2 → 0.1.3
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/dist/actions/index.js +16 -13
- package/dist/actions/index.js.map +1 -1
- package/dist/agents/adapters.d.ts +11 -1
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/context.js +1 -1
- package/dist/agents/errors.d.ts +1 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/execution.d.ts +3 -0
- package/dist/agents/execution.d.ts.map +1 -1
- package/dist/agents/index.d.ts +6 -3
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +33 -22
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/prompt.d.ts +8 -2
- package/dist/agents/prompt.d.ts.map +1 -1
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/streams.js +2 -2
- package/dist/agents/thread-context-projection.d.ts +19 -0
- package/dist/agents/thread-context-projection.d.ts.map +1 -0
- package/dist/agents/tool-definition.d.ts.map +1 -1
- package/dist/agents/tool-result.d.ts +6 -0
- package/dist/agents/tool-result.d.ts.map +1 -0
- package/dist/agents/types.d.ts +37 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts +1 -1
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/auth/index.js +7 -5
- package/dist/auth/index.js.map +1 -1
- package/dist/authorization/index.js +1 -1
- package/dist/bootstrap/index.js +27 -24
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/{chunk-0mbx247x.js → chunk-177ed2mp.js} +241 -45
- package/dist/chunk-177ed2mp.js.map +46 -0
- package/dist/{chunk-sa4340y1.js → chunk-1ywq4hzk.js} +7 -7
- package/dist/{chunk-zg9yryhz.js → chunk-261ag4t4.js} +3 -3
- package/dist/{chunk-k9pts48t.js → chunk-3rsf30p4.js} +5 -5
- package/dist/{chunk-8ryen3p3.js → chunk-4aw0jwk0.js} +1 -1
- package/dist/{chunk-bh6k3nc6.js → chunk-4p9rh7jj.js} +1 -1
- package/dist/{chunk-34bqh420.js → chunk-4z3n1dzt.js} +59 -21
- package/dist/{chunk-34bqh420.js.map → chunk-4z3n1dzt.js.map} +4 -4
- package/dist/chunk-96swp2wd.js +47 -0
- package/dist/chunk-96swp2wd.js.map +10 -0
- package/dist/{chunk-n8herkry.js → chunk-bv41fmjn.js} +11 -11
- package/dist/{chunk-7pc8b818.js → chunk-c6cfqydk.js} +1 -1
- package/dist/{chunk-0k4avqr2.js → chunk-c8bw2b6c.js} +2 -2
- package/dist/{chunk-jaj13078.js → chunk-d2adj15j.js} +3 -33
- package/dist/{chunk-jaj13078.js.map → chunk-d2adj15j.js.map} +3 -4
- package/dist/{chunk-c6qd89g5.js → chunk-d6y2wsfg.js} +3 -3
- package/dist/chunk-dysw7nsm.js.map +1 -1
- package/dist/{chunk-st4xgxey.js → chunk-ettb0cy4.js} +150 -23
- package/dist/chunk-ettb0cy4.js.map +45 -0
- package/dist/{chunk-nnyp53zt.js → chunk-f1cyvnrk.js} +1 -1
- package/dist/chunk-fmx1sz2h.js.map +2 -2
- package/dist/{chunk-bct7hmfc.js → chunk-km4rkj4t.js} +3 -3
- package/dist/chunk-kqxgf6kv.js +898 -0
- package/dist/chunk-kqxgf6kv.js.map +15 -0
- package/dist/{chunk-qvybnnpe.js → chunk-n5x5y80a.js} +2 -2
- package/dist/{chunk-4x43bkbp.js → chunk-pxtrxm3p.js} +1 -1
- package/dist/chunk-qer6am8w.js +133 -0
- package/dist/chunk-qer6am8w.js.map +11 -0
- package/dist/{chunk-85j5ybfj.js → chunk-rdeagz6b.js} +2 -2
- package/dist/{chunk-85j5ybfj.js.map → chunk-rdeagz6b.js.map} +3 -3
- package/dist/chunk-rhrbz7d4.js +36 -0
- package/dist/chunk-rhrbz7d4.js.map +10 -0
- package/dist/{chunk-663csy96.js → chunk-t0jjkep3.js} +2 -1
- package/dist/chunk-t0jjkep3.js.map +10 -0
- package/dist/{chunk-5egfka8j.js → chunk-ttba8x6z.js} +2 -2
- package/dist/{chunk-nten49ta.js → chunk-wb4051cx.js} +3 -3
- package/dist/{chunk-nten49ta.js.map → chunk-wb4051cx.js.map} +1 -1
- package/dist/{chunk-57r1cpxx.js → chunk-xc7hq65b.js} +3 -2
- package/dist/{chunk-57r1cpxx.js.map → chunk-xc7hq65b.js.map} +3 -3
- package/dist/{chunk-ys1nse2v.js → chunk-xmggaxg4.js} +256 -231
- package/dist/{chunk-ys1nse2v.js.map → chunk-xmggaxg4.js.map} +8 -10
- package/dist/{chunk-g9t3kdtx.js → chunk-z8j83gzd.js} +1 -1
- package/dist/{chunk-57zpb99z.js → chunk-zpw39qhj.js} +1 -1
- package/dist/execution/agent.js +23 -20
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/primitive.js +23 -20
- package/dist/execution/primitive.js.map +2 -2
- package/dist/execution/request.js +24 -21
- package/dist/execution/request.js.map +2 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -29
- package/dist/index.js.map +1 -1
- package/dist/materialization/model.d.ts +4 -0
- package/dist/materialization/model.d.ts.map +1 -1
- package/dist/materializer/edits/apply.d.ts +6 -1
- package/dist/materializer/edits/apply.d.ts.map +1 -1
- package/dist/materializer/edits/working-state.d.ts +2 -0
- package/dist/materializer/edits/working-state.d.ts.map +1 -1
- package/dist/materializer/effective/resolve.d.ts +3 -1
- package/dist/materializer/effective/resolve.d.ts.map +1 -1
- package/dist/materializer/execution/work-records.d.ts.map +1 -1
- package/dist/materializer/index.js +14 -11
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
- package/dist/materializer/shared/normalize.d.ts.map +1 -1
- package/dist/objects/index.js +17 -14
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/query/index.js +2 -2
- package/dist/pipelines/index.js +14 -12
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/builders.d.ts +19 -6
- package/dist/projections/builders.d.ts.map +1 -1
- package/dist/projections/index.d.ts +2 -1
- package/dist/projections/index.d.ts.map +1 -1
- package/dist/projections/internal.d.ts +4 -1
- package/dist/projections/internal.d.ts.map +1 -1
- package/dist/projections/internal.js +17 -11
- package/dist/projections/internal.js.map +1 -1
- package/dist/projections/timestamp.d.ts +3 -0
- package/dist/projections/timestamp.d.ts.map +1 -0
- package/dist/projections/types.d.ts +9 -0
- package/dist/projections/types.d.ts.map +1 -1
- package/dist/projections/validation.d.ts.map +1 -1
- package/dist/queues/index.d.ts +1 -1
- package/dist/queues/index.d.ts.map +1 -1
- package/dist/queues/types.d.ts +7 -0
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/runtime/ai-cost.d.ts +8 -0
- package/dist/runtime/ai-cost.d.ts.map +1 -0
- package/dist/storage/agents/in-memory.d.ts +18 -4
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/index.d.ts +1 -1
- package/dist/storage/agents/index.d.ts.map +1 -1
- package/dist/storage/agents/provider.d.ts +31 -0
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +18 -7
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +70 -4
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/analytics.d.ts +61 -0
- package/dist/storage/ai-cost/analytics.d.ts.map +1 -0
- package/dist/storage/ai-cost/codec.d.ts +14 -0
- package/dist/storage/ai-cost/codec.d.ts.map +1 -0
- package/dist/storage/ai-cost/errors.d.ts +7 -0
- package/dist/storage/ai-cost/errors.d.ts.map +1 -0
- package/dist/storage/ai-cost/in-memory.d.ts +32 -0
- package/dist/storage/ai-cost/in-memory.d.ts.map +1 -0
- package/dist/storage/ai-cost/index.d.ts +6 -0
- package/dist/storage/ai-cost/index.d.ts.map +1 -0
- package/dist/storage/ai-cost/provider.d.ts +7 -0
- package/dist/storage/ai-cost/provider.d.ts.map +1 -0
- package/dist/storage/ai-cost/provider.js +132 -0
- package/dist/storage/ai-cost/provider.js.map +10 -0
- package/dist/storage/ai-cost/types.d.ts +154 -0
- package/dist/storage/ai-cost/types.d.ts.map +1 -0
- package/dist/storage/ai-cost/validation.d.ts +7 -0
- package/dist/storage/ai-cost/validation.d.ts.map +1 -0
- package/dist/storage/in-memory/index.d.ts +5 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +3 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +22 -15
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/materializations.d.ts +3 -0
- package/dist/storage/ontology/materializations.d.ts.map +1 -1
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +1 -1
- package/dist/storage/types.d.ts +2 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +6 -5
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/syncs/index.js +14 -12
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/agent-storage-contract.d.ts +3 -2
- package/dist/testing/agent-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-cost-storage-contract.d.ts +12 -0
- package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -0
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +2098 -1468
- package/dist/testing/index.js.map +6 -5
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/webhooks/internal.js +12 -10
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +12 -2
- package/dist/workers/index.js.map +3 -3
- package/dist/workers/queue-worker.d.ts +2 -0
- package/dist/workers/queue-worker.d.ts.map +1 -1
- package/dist/workflows/execution.d.ts +3 -0
- package/dist/workflows/execution.d.ts.map +1 -1
- package/dist/workflows/index.js +24 -21
- package/dist/workflows/index.js.map +1 -1
- package/package.json +7 -1
- package/src/agents/adapters.ts +64 -23
- package/src/agents/errors.ts +2 -2
- package/src/agents/execution.ts +14 -2
- package/src/agents/index.ts +18 -1
- package/src/agents/prompt.ts +33 -5
- package/src/agents/request.ts +5 -0
- package/src/agents/thread-context-projection.ts +93 -0
- package/src/agents/tool-definition.ts +17 -2
- package/src/agents/tool-result.ts +61 -0
- package/src/agents/types.ts +47 -1
- package/src/agents/validation.ts +1 -1
- package/src/index.ts +13 -0
- package/src/materialization/model.ts +4 -0
- package/src/materializer/edits/apply.ts +55 -2
- package/src/materializer/edits/operations.ts +8 -1
- package/src/materializer/edits/working-state.ts +7 -0
- package/src/materializer/effective/resolve.ts +78 -9
- package/src/materializer/execution/work-records.ts +3 -1
- package/src/materializer/projections/entry-validator.ts +23 -1
- package/src/materializer/projections/replacement-plan.ts +2 -0
- package/src/materializer/shared/normalize.ts +16 -0
- package/src/projections/builders.ts +100 -35
- package/src/projections/index.ts +6 -0
- package/src/projections/internal.ts +4 -1
- package/src/projections/registry.ts +7 -0
- package/src/projections/revision.ts +4 -0
- package/src/projections/timestamp.ts +66 -0
- package/src/projections/types.ts +7 -0
- package/src/projections/validation.ts +24 -0
- package/src/queues/index.ts +1 -0
- package/src/queues/types.ts +8 -0
- package/src/runtime/ai-cost.ts +15 -0
- package/src/storage/agents/in-memory.ts +171 -4
- package/src/storage/agents/index.ts +5 -0
- package/src/storage/agents/provider.ts +225 -0
- package/src/storage/agents/types.ts +77 -3
- package/src/storage/ai-cost/analytics.ts +602 -0
- package/src/storage/ai-cost/codec.ts +136 -0
- package/src/storage/ai-cost/errors.ts +12 -0
- package/src/storage/ai-cost/in-memory.ts +164 -0
- package/src/storage/ai-cost/index.ts +35 -0
- package/src/storage/ai-cost/provider.ts +20 -0
- package/src/storage/ai-cost/types.ts +193 -0
- package/src/storage/ai-cost/validation.ts +337 -0
- package/src/storage/in-memory/index.ts +50 -0
- package/src/storage/index.ts +37 -0
- package/src/storage/ontology/in-memory/materializations.ts +1 -0
- package/src/storage/ontology/materializations.ts +3 -0
- package/src/storage/operation-scope.ts +1 -0
- package/src/storage/types.ts +2 -0
- package/src/testing/agent-storage-contract.ts +341 -2
- package/src/testing/ai-cost-storage-contract.ts +320 -0
- package/src/testing/index.ts +5 -0
- package/src/testing/materializer-storage-contract.ts +120 -2
- package/src/workers/queue-worker.ts +14 -1
- package/src/workflows/execution.ts +31 -10
- package/dist/chunk-0mbx247x.js.map +0 -43
- package/dist/chunk-663csy96.js.map +0 -10
- package/dist/chunk-st4xgxey.js.map +0 -45
- package/dist/chunk-vp1vc6ee.js +0 -35
- package/dist/chunk-vp1vc6ee.js.map +0 -11
- /package/dist/{chunk-sa4340y1.js.map → chunk-1ywq4hzk.js.map} +0 -0
- /package/dist/{chunk-zg9yryhz.js.map → chunk-261ag4t4.js.map} +0 -0
- /package/dist/{chunk-k9pts48t.js.map → chunk-3rsf30p4.js.map} +0 -0
- /package/dist/{chunk-8ryen3p3.js.map → chunk-4aw0jwk0.js.map} +0 -0
- /package/dist/{chunk-bh6k3nc6.js.map → chunk-4p9rh7jj.js.map} +0 -0
- /package/dist/{chunk-n8herkry.js.map → chunk-bv41fmjn.js.map} +0 -0
- /package/dist/{chunk-7pc8b818.js.map → chunk-c6cfqydk.js.map} +0 -0
- /package/dist/{chunk-0k4avqr2.js.map → chunk-c8bw2b6c.js.map} +0 -0
- /package/dist/{chunk-c6qd89g5.js.map → chunk-d6y2wsfg.js.map} +0 -0
- /package/dist/{chunk-nnyp53zt.js.map → chunk-f1cyvnrk.js.map} +0 -0
- /package/dist/{chunk-bct7hmfc.js.map → chunk-km4rkj4t.js.map} +0 -0
- /package/dist/{chunk-qvybnnpe.js.map → chunk-n5x5y80a.js.map} +0 -0
- /package/dist/{chunk-4x43bkbp.js.map → chunk-pxtrxm3p.js.map} +0 -0
- /package/dist/{chunk-5egfka8j.js.map → chunk-ttba8x6z.js.map} +0 -0
- /package/dist/{chunk-g9t3kdtx.js.map → chunk-z8j83gzd.js.map} +0 -0
- /package/dist/{chunk-57zpb99z.js.map → chunk-zpw39qhj.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materializer-storage-contract.d.ts","sourceRoot":"","sources":["../../src/testing/materializer-storage-contract.ts"],"names":[],"mappings":"AACA,OAAO,EASL,KAAK,OAAO,EACb,MAAM,IAAI,CAAA;AAeX,MAAM,WAAW,mCAAmC,CAAC,QAAQ,SAAS,OAAO;IAC3E,QAAQ,CAAC,aAAa,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/D;
|
|
1
|
+
{"version":3,"file":"materializer-storage-contract.d.ts","sourceRoot":"","sources":["../../src/testing/materializer-storage-contract.ts"],"names":[],"mappings":"AACA,OAAO,EASL,KAAK,OAAO,EACb,MAAM,IAAI,CAAA;AAeX,MAAM,WAAW,mCAAmC,CAAC,QAAQ,SAAS,OAAO;IAC3E,QAAQ,CAAC,aAAa,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/D;AAgFD,wBAAgB,mCAAmC,CAAC,QAAQ,SAAS,OAAO,EAC1E,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,mCAAmC,CAAC,QAAQ,CAAC,GACtD,IAAI,CAmcN"}
|
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
createPrimitiveExecutionRecord
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-4aw0jwk0.js";
|
|
5
5
|
import {
|
|
6
6
|
canRetryWebhookRun,
|
|
7
7
|
isStorageSerializationFailure
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-xmggaxg4.js";
|
|
9
9
|
import"../chunk-fmx1sz2h.js";
|
|
10
|
-
import"../chunk-
|
|
10
|
+
import"../chunk-xc7hq65b.js";
|
|
11
11
|
import"../chunk-cy0n5dms.js";
|
|
12
12
|
import"../chunk-dysw7nsm.js";
|
|
13
13
|
import"../chunk-62c7t4jc.js";
|
|
14
14
|
import {
|
|
15
15
|
WebhookRunError
|
|
16
16
|
} from "../chunk-ezake7g1.js";
|
|
17
|
-
import"../chunk-
|
|
17
|
+
import"../chunk-pxtrxm3p.js";
|
|
18
18
|
import"../chunk-htq0qh7z.js";
|
|
19
19
|
import"../chunk-xkthy56g.js";
|
|
20
|
-
import"../chunk-
|
|
21
|
-
import"../chunk-
|
|
20
|
+
import"../chunk-qer6am8w.js";
|
|
21
|
+
import"../chunk-n5x5y80a.js";
|
|
22
22
|
import"../chunk-t9xghkva.js";
|
|
23
|
+
import"../chunk-kqxgf6kv.js";
|
|
23
24
|
import"../chunk-5gd7tpv6.js";
|
|
24
25
|
import {
|
|
25
26
|
ExecutionStorageError
|
|
@@ -35,10 +36,11 @@ import"../chunk-rnshztfq.js";
|
|
|
35
36
|
import"../chunk-04b07a9q.js";
|
|
36
37
|
import"../chunk-dktq02ne.js";
|
|
37
38
|
import"../chunk-zqysyfjt.js";
|
|
38
|
-
import"../chunk-
|
|
39
|
-
import"../chunk-
|
|
39
|
+
import"../chunk-t0jjkep3.js";
|
|
40
|
+
import"../chunk-d2adj15j.js";
|
|
41
|
+
import"../chunk-rhrbz7d4.js";
|
|
40
42
|
import"../chunk-xwnf87e1.js";
|
|
41
|
-
import"../chunk-
|
|
43
|
+
import"../chunk-4z3n1dzt.js";
|
|
42
44
|
import"../chunk-0172wgm9.js";
|
|
43
45
|
import"../chunk-t8t39h7v.js";
|
|
44
46
|
import"../chunk-y64skrwp.js";
|
|
@@ -147,4 +149,4 @@ export {
|
|
|
147
149
|
admitWebhookRun
|
|
148
150
|
};
|
|
149
151
|
|
|
150
|
-
//# debugId=
|
|
152
|
+
//# debugId=A21F13420826A31E64756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { randomUUID } from \"node:crypto\"\nimport { createPrimitiveExecutionRecord } from \"../execution/durable\"\nimport type { ExecutionRecord, Storage, WebhookRunRecord } from \"../storage\"\nimport {\n canRetryWebhookRun,\n ExecutionStorageError,\n isStorageSerializationFailure,\n WebhookRunError,\n} from \"../storage\"\n\nconst MAX_ADMISSION_ATTEMPTS = 3\n\nexport interface AdmitWebhookRunInput {\n readonly projectId: string\n readonly storage: Storage\n readonly runId: string\n readonly connectorId: string\n readonly webhookId: string\n readonly method: string\n readonly route: string\n readonly requestBodyBytes: number\n readonly requestBodySha256: string\n readonly idempotencyKey?: string\n}\n\nexport type AdmitWebhookRunResult =\n | {\n readonly status: \"admitted\"\n readonly run: WebhookRunRecord\n readonly execution: ExecutionRecord\n readonly retried: boolean\n }\n | {\n readonly status: \"duplicate\" | \"in_progress\"\n readonly run: WebhookRunRecord\n }\n\n/** Persist or reclaim one verified Webhook delivery before its protected handler executes. */\nexport async function admitWebhookRun(input: AdmitWebhookRunInput): Promise<AdmitWebhookRunResult> {\n assertAdmissionInput(input)\n let attempt = 0\n\n // Concurrent deliveries may both observe no run before one transaction commits. Retry only\n // serialization and uniqueness races so the loser can reload the winning run; every other error\n // fails immediately, and repeated contention remains bounded by MAX_ADMISSION_ATTEMPTS.\n while (true) {\n attempt += 1\n try {\n return await input.storage.transaction((tx) => admitWebhookRunTransaction(tx, input), {\n isolation: \"serializable\",\n })\n } catch (error) {\n if (attempt >= MAX_ADMISSION_ATTEMPTS || !isConcurrentAdmissionConflict(error)) {\n throw error\n }\n }\n }\n}\n\nasync function admitWebhookRunTransaction(\n storage: Storage,\n input: AdmitWebhookRunInput\n): Promise<AdmitWebhookRunResult> {\n const runs = requireWebhookRunStorage(storage)\n const existing = input.idempotencyKey\n ? await runs.getByDelivery({\n projectId: input.projectId,\n connectorId: input.connectorId,\n webhookId: input.webhookId,\n idempotencyKey: input.idempotencyKey,\n })\n : null\n\n if (existing) {\n assertSameDelivery(existing, input)\n if (existing.status === \"running\") return { status: \"in_progress\", run: existing }\n if (!canRetryWebhookRun(existing)) return { status: \"duplicate\", run: existing }\n\n const execution = await requireWebhookExecution(storage, existing)\n const run = await runs.restart({\n projectId: input.projectId,\n id: existing.id,\n })\n return { status: \"admitted\", run, execution, retried: true }\n }\n\n const executionInput = createPrimitiveExecutionRecord({\n id: `exec_${randomUUID()}`,\n primitive: { kind: \"webhook\", id: input.route, runId: input.runId },\n origin: {\n type: \"automatic\",\n projectId: input.projectId,\n source: { type: \"webhook\", deliveryId: input.runId },\n correlationId: input.runId,\n },\n })\n const execution = await storage.executions.create(executionInput)\n const run = await runs.start({\n id: input.runId,\n projectId: input.projectId,\n executionId: execution.id,\n connectorId: input.connectorId,\n webhookId: input.webhookId,\n method: input.method,\n route: input.route,\n requestBodyBytes: input.requestBodyBytes,\n requestBodySha256: input.requestBodySha256,\n idempotencyKey: input.idempotencyKey,\n })\n return { status: \"admitted\", run, execution, retried: false }\n}\n\nfunction assertSameDelivery(existing: WebhookRunRecord, input: AdmitWebhookRunInput): void {\n if (\n existing.connectorId !== input.connectorId ||\n existing.webhookId !== input.webhookId ||\n existing.method !== input.method ||\n existing.route !== input.route ||\n existing.requestBodyBytes !== input.requestBodyBytes ||\n existing.requestBodySha256 !== input.requestBodySha256\n ) {\n throw new WebhookRunError(\n `[Sixb] Webhook delivery '${input.idempotencyKey}' conflicts with run '${existing.id}'.`,\n \"delivery_conflict\"\n )\n }\n}\n\nasync function requireWebhookExecution(\n storage: Storage,\n run: WebhookRunRecord\n): Promise<ExecutionRecord> {\n const execution = await storage.executions.getById({\n projectId: run.projectId,\n id: run.executionId,\n })\n if (!execution) {\n throw new WebhookRunError(\n `[Sixb] Execution '${run.executionId}' for Webhook run '${run.id}' was not found.`,\n \"invalid_execution\"\n )\n }\n return execution\n}\n\nfunction requireWebhookRunStorage(storage: Storage): NonNullable<Storage[\"webhookRuns\"]> {\n if (!storage.webhookRuns) {\n throw new WebhookRunError(\"[Sixb] Webhook run storage is not configured.\")\n }\n return storage.webhookRuns\n}\n\nfunction assertAdmissionInput(input: AdmitWebhookRunInput): void {\n if (input.idempotencyKey !== undefined && !input.idempotencyKey.trim()) {\n throw new WebhookRunError(\"[Sixb] Webhook idempotency key must not be empty.\")\n }\n if (!Number.isSafeInteger(input.requestBodyBytes) || input.requestBodyBytes < 0) {\n throw new WebhookRunError(\"[Sixb] Webhook request body bytes must be a non-negative integer.\")\n }\n if (!/^[a-f0-9]{64}$/.test(input.requestBodySha256)) {\n throw new WebhookRunError(\"[Sixb] Webhook request body SHA-256 must be lowercase hexadecimal.\")\n }\n}\n\nfunction isConcurrentAdmissionConflict(error: unknown): boolean {\n return (\n isStorageSerializationFailure(error) ||\n (error instanceof ExecutionStorageError && error.code === \"duplicate_execution\") ||\n (error instanceof WebhookRunError &&\n (error.code === \"duplicate_run\" || error.code === \"invalid_transition\"))\n )\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "A21F13420826A31E64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/workers/index.js
CHANGED
|
@@ -341,10 +341,13 @@ class QueueWorker extends Worker {
|
|
|
341
341
|
failureCodes: config.failureCodes,
|
|
342
342
|
workerId: config.workerId,
|
|
343
343
|
leaseMs: config.leaseMs ?? DEFAULT_LEASE_MS,
|
|
344
|
-
claimLimit: config.claimLimit
|
|
344
|
+
claimLimit: normalizeClaimLimit(config.claimLimit),
|
|
345
345
|
idlePollMs: config.idlePollMs ?? DEFAULT_IDLE_POLL_MS
|
|
346
346
|
};
|
|
347
347
|
}
|
|
348
|
+
get concurrency() {
|
|
349
|
+
return this.config.claimLimit;
|
|
350
|
+
}
|
|
348
351
|
async run(signal) {
|
|
349
352
|
const inFlight = new Set;
|
|
350
353
|
let runError = null;
|
|
@@ -463,6 +466,13 @@ class QueueWorker extends Worker {
|
|
|
463
466
|
await delivery.fail(failure);
|
|
464
467
|
}
|
|
465
468
|
}
|
|
469
|
+
function normalizeClaimLimit(value) {
|
|
470
|
+
const claimLimit = value ?? DEFAULT_CLAIM_LIMIT;
|
|
471
|
+
if (!Number.isSafeInteger(claimLimit) || claimLimit < 1) {
|
|
472
|
+
throw new Error("[SixbQueueWorker] Worker concurrency must be a positive safe integer.");
|
|
473
|
+
}
|
|
474
|
+
return claimLimit;
|
|
475
|
+
}
|
|
466
476
|
async function settleOrLog(delivery, operation, settle) {
|
|
467
477
|
try {
|
|
468
478
|
await settle();
|
|
@@ -502,4 +512,4 @@ export {
|
|
|
502
512
|
QueueDeliveryLeaseLostError
|
|
503
513
|
};
|
|
504
514
|
|
|
505
|
-
//# debugId=
|
|
515
|
+
//# debugId=3392AF504C53F2C564756E2164756E21
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
"/**\n * Thrown by worker primitives when an operation is interrupted by `stop()`.\n *\n * `name` is `\"AbortError\"` so it interoperates with the DOM `AbortSignal`\n * convention used across the codebase.\n */\nexport class WorkerAbortError extends Error {\n readonly name = \"AbortError\"\n}\n\n/** Raised after a worker exhausts its bounded restart budget. */\nexport class WorkerUnhealthyError extends Error {\n readonly name = \"WorkerUnhealthyError\"\n\n constructor(\n readonly workerName: string,\n readonly restartCount: number,\n options?: ErrorOptions\n ) {\n super(\n `[SixbWorker] ${workerName} is unhealthy after ${restartCount} restart attempt(s).`,\n options\n )\n }\n}\n",
|
|
6
6
|
"import type { SixbErrorCode } from \"../errors/types\"\nimport type { ClaimedQueueJob, Queue, QueueJob, QueueJobFailure } from \"../queues\"\nimport { WorkerAbortError } from \"./errors\"\n\nexport type QueueDeliveryState = \"active\" | \"lost\" | \"settled\"\n\n/**\n * Outcome of a settlement call. `\"lost\"` means the queue job was **not** acknowledged because\n * ownership was already gone — the job may be redelivered. Settlement never throws for a lost\n * lease; exceptions are reserved for queue calls that themselves fail (outcome then unknown).\n */\nexport type QueueSettlementResult = \"settled\" | \"lost\"\n\nexport interface QueueDelivery<\n TJob extends QueueJob,\n TFailureCode extends SixbErrorCode = SixbErrorCode,\n> {\n readonly claimed: ClaimedQueueJob<TJob>\n readonly signal: AbortSignal\n readonly state: QueueDeliveryState\n /** Expiration from the latest queue-confirmed claim or renewal. */\n readonly leaseExpiresAt: string\n\n /** Observe successful queue renewals. The listener is not called for failed renewals. */\n onLeaseRenewed(listener: (claimed: ClaimedQueueJob<TJob>) => void): () => void\n complete(): Promise<QueueSettlementResult>\n retry(input?: { readonly availableAt?: string }): Promise<QueueSettlementResult>\n fail(failure: QueueJobFailure<TFailureCode>): Promise<QueueSettlementResult>\n close(): Promise<void>\n}\n\nexport interface CreateQueueDeliveryOptions<\n TJob extends QueueJob,\n TFailureCode extends SixbErrorCode,\n> {\n readonly queue: Queue<TJob, TFailureCode>\n readonly claimed: ClaimedQueueJob<TJob>\n readonly leaseMs: number\n readonly signal: AbortSignal\n readonly onLeaseLost?: () => void\n readonly onRenewalError?: (error: unknown) => void\n}\n\nconst MIN_RENEWAL_INTERVAL_MS = 1\n\nexport class QueueDeliveryLeaseLostError extends WorkerAbortError {}\n\ntype RenewalAttempt<TJob extends QueueJob> =\n | { readonly kind: \"renewed\"; readonly claimed: ClaimedQueueJob<TJob> | null }\n | { readonly kind: \"failed\"; readonly error: unknown }\n | { readonly kind: \"expired\" }\n\n/** Owns lease renewal, loss detection, and settlement for one claimed queue job. */\nexport function createQueueDelivery<TJob extends QueueJob, TFailureCode extends SixbErrorCode>(\n options: CreateQueueDeliveryOptions<TJob, TFailureCode>\n): QueueDelivery<TJob, TFailureCode> {\n return new ManagedQueueDelivery(options)\n}\n\nclass ManagedQueueDelivery<TJob extends QueueJob, TFailureCode extends SixbErrorCode>\n implements QueueDelivery<TJob, TFailureCode>\n{\n readonly claimed: ClaimedQueueJob<TJob>\n readonly signal: AbortSignal\n\n private readonly queue: Queue<TJob, TFailureCode>\n private readonly leaseMs: number\n private readonly renewLease: Queue<TJob, TFailureCode>[\"renewLease\"]\n private readonly onLeaseLost: (() => void) | undefined\n private readonly onRenewalError: ((error: unknown) => void) | undefined\n private readonly lossController = new AbortController()\n private readonly stopController = new AbortController()\n private readonly renewalIntervalMs: number\n private readonly renewalLoop: Promise<void>\n private readonly leaseRenewedListeners = new Set<(claimed: ClaimedQueueJob<TJob>) => void>()\n private currentState: QueueDeliveryState = \"active\"\n private currentLeaseExpiresAt: string\n private leaseExpiresAtTimestamp: number\n private renewalErrorReported = false\n private closing: Promise<void> | null = null\n private settling = false\n\n constructor(options: CreateQueueDeliveryOptions<TJob, TFailureCode>) {\n this.queue = options.queue\n this.claimed = options.claimed\n this.leaseMs = options.leaseMs\n this.renewLease = options.queue.renewLease?.bind(options.queue)\n this.onLeaseLost = options.onLeaseLost\n this.onRenewalError = options.onRenewalError\n this.currentLeaseExpiresAt = options.claimed.leaseExpiresAt\n this.leaseExpiresAtTimestamp = parseLeaseExpiration(options.claimed.leaseExpiresAt)\n this.renewalIntervalMs = Math.max(MIN_RENEWAL_INTERVAL_MS, Math.floor(options.leaseMs / 3))\n this.signal = AbortSignal.any([options.signal, this.lossController.signal])\n this.renewalLoop = this.runRenewalLoop()\n }\n\n get state(): QueueDeliveryState {\n return this.currentState\n }\n\n get leaseExpiresAt(): string {\n return this.currentLeaseExpiresAt\n }\n\n onLeaseRenewed(listener: (claimed: ClaimedQueueJob<TJob>) => void): () => void {\n this.leaseRenewedListeners.add(listener)\n return () => this.leaseRenewedListeners.delete(listener)\n }\n\n complete(): Promise<QueueSettlementResult> {\n return this.settle(() =>\n this.queue.complete({\n projectId: this.claimed.job.projectId,\n jobId: this.claimed.job.id,\n leaseId: this.claimed.leaseId,\n })\n )\n }\n\n retry(input: { readonly availableAt?: string } = {}): Promise<QueueSettlementResult> {\n return this.settle(() =>\n this.queue.retry({\n projectId: this.claimed.job.projectId,\n jobId: this.claimed.job.id,\n leaseId: this.claimed.leaseId,\n availableAt: input.availableAt,\n })\n )\n }\n\n fail(failure: QueueJobFailure<TFailureCode>): Promise<QueueSettlementResult> {\n return this.settle(() =>\n this.queue.fail({\n projectId: this.claimed.job.projectId,\n jobId: this.claimed.job.id,\n leaseId: this.claimed.leaseId,\n failure,\n })\n )\n }\n\n close(): Promise<void> {\n if (this.closing) return this.closing\n this.closing = this.stopRenewal()\n return this.closing\n }\n\n private async settle(operation: () => Promise<void>): Promise<QueueSettlementResult> {\n if (this.currentState !== \"active\") {\n return this.currentState === \"settled\" ? \"settled\" : \"lost\"\n }\n if (this.settling) {\n throw new Error(`[SixbQueueWorker] Queue job '${this.claimed.job.id}' is already settling.`)\n }\n\n this.settling = true\n try {\n await this.stopRenewal()\n if (!(await this.confirmSettlementLease())) return \"lost\"\n await operation()\n this.currentState = \"settled\"\n return \"settled\"\n } finally {\n this.settling = false\n }\n }\n\n private async confirmSettlementLease(): Promise<boolean> {\n if (this.currentState !== \"active\") return false\n if (Date.now() >= this.leaseExpiresAtTimestamp) {\n this.markLost()\n return false\n }\n if (!this.renewLease) return true\n\n const attempt = await this.attemptRenewal()\n if (attempt.kind === \"renewed\") {\n if (!attempt.claimed) {\n this.markLost()\n return false\n }\n this.recordRenewal(attempt.claimed)\n return true\n }\n if (attempt.kind === \"failed\") {\n this.reportRenewalError(attempt.error)\n }\n if (attempt.kind === \"expired\" || Date.now() >= this.leaseExpiresAtTimestamp) {\n this.markLost()\n return false\n }\n return true\n }\n\n private async runRenewalLoop(): Promise<void> {\n while (this.currentState === \"active\" && !this.stopController.signal.aborted) {\n const remainingMs = this.leaseExpiresAtTimestamp - Date.now()\n if (remainingMs <= 0) {\n this.markLost()\n return\n }\n\n const delayMs = this.renewLease ? Math.min(this.renewalIntervalMs, remainingMs) : remainingMs\n await sleep(delayMs, this.stopController.signal).catch(() => {})\n if (this.stopController.signal.aborted || this.currentState !== \"active\") return\n if (Date.now() >= this.leaseExpiresAtTimestamp) {\n this.markLost()\n return\n }\n if (!this.renewLease) continue\n\n const attempt = await this.attemptRenewal()\n if (attempt.kind === \"expired\") {\n this.markLost()\n return\n }\n if (attempt.kind === \"failed\") {\n this.reportRenewalError(attempt.error)\n continue\n }\n if (!attempt.claimed) {\n this.markLost()\n return\n }\n this.recordRenewal(attempt.claimed)\n }\n }\n\n private attemptRenewal(): Promise<RenewalAttempt<TJob>> {\n if (!this.renewLease || Date.now() >= this.leaseExpiresAtTimestamp) {\n return Promise.resolve({ kind: \"expired\" })\n }\n\n const remainingMs = Math.max(1, this.leaseExpiresAtTimestamp - Date.now())\n return new Promise((resolve) => {\n let finished = false\n const finish = (attempt: RenewalAttempt<TJob>): void => {\n if (finished) return\n finished = true\n clearTimeout(timer)\n resolve(attempt)\n }\n const timer = setTimeout(() => finish({ kind: \"expired\" }), remainingMs)\n\n this.renewLease?.({\n projectId: this.claimed.job.projectId,\n jobId: this.claimed.job.id,\n leaseId: this.claimed.leaseId,\n leaseMs: this.leaseMs,\n }).then(\n (claimed) => finish({ kind: \"renewed\", claimed }),\n (error) => finish({ kind: \"failed\", error })\n )\n })\n }\n\n private recordRenewal(claimed: ClaimedQueueJob<TJob>): void {\n this.currentLeaseExpiresAt = claimed.leaseExpiresAt\n this.leaseExpiresAtTimestamp = parseLeaseExpiration(claimed.leaseExpiresAt)\n this.renewalErrorReported = false\n for (const listener of this.leaseRenewedListeners) {\n try {\n listener(claimed)\n } catch (error) {\n this.onRenewalError?.(error)\n }\n }\n }\n\n private reportRenewalError(error: unknown): void {\n if (this.renewalErrorReported) return\n this.renewalErrorReported = true\n this.onRenewalError?.(error)\n }\n\n private markLost(): void {\n if (this.currentState !== \"active\") return\n this.currentState = \"lost\"\n this.lossController.abort(\n new QueueDeliveryLeaseLostError(\n `[SixbQueueWorker] Queue job '${this.claimed.job.id}' lost its lease.`\n )\n )\n this.onLeaseLost?.()\n }\n\n private async stopRenewal(): Promise<void> {\n this.stopController.abort()\n await this.renewalLoop.catch(() => {})\n }\n}\n\nfunction parseLeaseExpiration(value: string): number {\n const timestamp = Date.parse(value)\n if (!Number.isFinite(timestamp)) {\n throw new Error(`[SixbQueueWorker] Invalid queue lease expiration '${value}'.`)\n }\n return timestamp\n}\n\nasync function sleep(ms: number, signal: AbortSignal): Promise<void> {\n if (signal.aborted) return\n await new Promise<void>((resolve) => {\n const timer = setTimeout(finish, ms)\n function finish(): void {\n clearTimeout(timer)\n signal.removeEventListener(\"abort\", finish)\n resolve()\n }\n signal.addEventListener(\"abort\", finish, { once: true })\n })\n}\n",
|
|
7
7
|
"import { WorkerUnhealthyError } from \"./errors\"\n\n// The budget rides out ~80s of continuous failure (0.1s -> 30s backoffs) before the worker is\n// declared unhealthy, so a transient infra outage does not kill an otherwise healthy process.\nconst MAX_RESTARTS = 10\nconst RESTART_BACKOFF_MS = 100\nconst MAX_RESTART_BACKOFF_MS = 30_000\nconst STABLE_RUN_MS = 60_000\n\n/** Base worker lifecycle with bounded restart supervision. */\nexport abstract class Worker {\n /** Base restart backoff. Overridable so budget-exhaustion tests do not wait out real backoffs. */\n protected readonly restartBackoffMs: number = RESTART_BACKOFF_MS\n private controller: AbortController | null = null\n private running: Promise<void> | null = null\n\n async start(): Promise<void> {\n if (this.controller) return\n\n this.controller = new AbortController()\n this.running = this.supervise(this.controller.signal)\n // `wait()` exposes terminal failure. Keep a handler attached for embedded callers that only use\n // start/stop, so an exhausted restart budget does not become an unhandled rejection.\n this.running.catch(() => {})\n }\n\n async stop(): Promise<void> {\n const controller = this.controller\n if (!controller) return\n\n controller.abort()\n await this.running?.catch(() => {})\n if (this.controller === controller) {\n this.controller = null\n this.running = null\n }\n }\n\n /** Resolves after stop and rejects if the bounded restart budget is exhausted. */\n wait(): Promise<void> {\n return this.running ?? Promise.resolve()\n }\n\n protected abstract run(signal: AbortSignal): Promise<void>\n\n private async supervise(signal: AbortSignal): Promise<void> {\n let restartCount = 0\n\n while (!signal.aborted) {\n const startedAt = Date.now()\n let failure: unknown\n\n try {\n await this.run(signal)\n if (signal.aborted) return\n failure = new Error(`[SixbWorker] ${this.constructor.name} stopped unexpectedly.`)\n } catch (error) {\n if (signal.aborted) return\n failure = error\n }\n\n if (Date.now() - startedAt >= STABLE_RUN_MS) {\n restartCount = 0\n }\n if (restartCount >= MAX_RESTARTS) {\n throw new WorkerUnhealthyError(this.constructor.name, restartCount, { cause: failure })\n }\n\n const delayMs = Math.min(this.restartBackoffMs * 2 ** restartCount, MAX_RESTART_BACKOFF_MS)\n restartCount += 1\n await waitForAbort(delayMs, signal)\n }\n }\n}\n\nasync function waitForAbort(ms: number, signal: AbortSignal): Promise<void> {\n if (signal.aborted) return\n await new Promise<void>((resolve) => {\n const timer = setTimeout(finish, ms)\n function finish(): void {\n clearTimeout(timer)\n signal.removeEventListener(\"abort\", finish)\n resolve()\n }\n signal.addEventListener(\"abort\", finish, { once: true })\n })\n}\n",
|
|
8
|
-
"import { captureSixbFailure } from \"../errors/internal\"\nimport type { SixbErrorCode, SixbFailure } from \"../errors/types\"\nimport type { ClaimedQueueJob, Queue, QueueJob } from \"../queues\"\nimport { WorkerAbortError } from \"./errors\"\nimport {\n createQueueDelivery,\n type QueueDelivery,\n type QueueSettlementResult,\n} from \"./queue-delivery\"\nimport { Worker } from \"./worker\"\n\ntype QueueWorkerFailureCodes = readonly [\n \"internal.unexpected\",\n \"runtime.cancelled\",\n ...SixbErrorCode[],\n]\n\nexport interface QueueWorkerConfig<\n TJob extends QueueJob,\n TFailureCodes extends QueueWorkerFailureCodes,\n> {\n readonly projectId: string\n readonly queue: Queue<TJob, TFailureCodes[number]>\n /** Runtime counterpart of this lane's precise terminal-failure union. */\n readonly failureCodes: TFailureCodes\n readonly workerId: string\n readonly leaseMs?: number\n readonly claimLimit?: number\n readonly idlePollMs?: number\n}\n\n/**\n * Queue settlement selected after execution stops.\n *\n * A worker must name its allowed failure-code union before it can supply an already-persisted\n * failure. Workers that only choose retry vs fail need no generic annotation.\n */\nexport type QueueWorkerFailureDecision<TFailureCode extends SixbErrorCode = never> =\n | {\n readonly kind: \"retry\"\n readonly availableAt?: string\n }\n | {\n readonly kind: \"fail\"\n /** Exact durable run failure, when execution already persisted one. */\n readonly failure?: SixbFailure<TFailureCode>\n }\n\nconst DEFAULT_LEASE_MS = 15 * 60_000\nconst DEFAULT_CLAIM_LIMIT = 1\nconst DEFAULT_IDLE_POLL_MS = 1_000\nconst MAX_CONSECUTIVE_CLAIM_FAILURES = 5\n\nexport abstract class QueueWorker<\n TJob extends QueueJob,\n TFailureCodes extends QueueWorkerFailureCodes,\n> extends Worker {\n protected readonly config: Required<QueueWorkerConfig<TJob, TFailureCodes>>\n private consecutiveClaimFailures = 0\n\n constructor(config: QueueWorkerConfig<TJob, TFailureCodes>) {\n super()\n this.config = {\n projectId: config.projectId,\n queue: config.queue,\n failureCodes: config.failureCodes,\n workerId: config.workerId,\n leaseMs: config.leaseMs ?? DEFAULT_LEASE_MS,\n claimLimit: config.claimLimit
|
|
8
|
+
"import { captureSixbFailure } from \"../errors/internal\"\nimport type { SixbErrorCode, SixbFailure } from \"../errors/types\"\nimport type { ClaimedQueueJob, Queue, QueueJob } from \"../queues\"\nimport { WorkerAbortError } from \"./errors\"\nimport {\n createQueueDelivery,\n type QueueDelivery,\n type QueueSettlementResult,\n} from \"./queue-delivery\"\nimport { Worker } from \"./worker\"\n\ntype QueueWorkerFailureCodes = readonly [\n \"internal.unexpected\",\n \"runtime.cancelled\",\n ...SixbErrorCode[],\n]\n\nexport interface QueueWorkerConfig<\n TJob extends QueueJob,\n TFailureCodes extends QueueWorkerFailureCodes,\n> {\n readonly projectId: string\n readonly queue: Queue<TJob, TFailureCodes[number]>\n /** Runtime counterpart of this lane's precise terminal-failure union. */\n readonly failureCodes: TFailureCodes\n readonly workerId: string\n readonly leaseMs?: number\n readonly claimLimit?: number\n readonly idlePollMs?: number\n}\n\n/**\n * Queue settlement selected after execution stops.\n *\n * A worker must name its allowed failure-code union before it can supply an already-persisted\n * failure. Workers that only choose retry vs fail need no generic annotation.\n */\nexport type QueueWorkerFailureDecision<TFailureCode extends SixbErrorCode = never> =\n | {\n readonly kind: \"retry\"\n readonly availableAt?: string\n }\n | {\n readonly kind: \"fail\"\n /** Exact durable run failure, when execution already persisted one. */\n readonly failure?: SixbFailure<TFailureCode>\n }\n\nconst DEFAULT_LEASE_MS = 15 * 60_000\nconst DEFAULT_CLAIM_LIMIT = 1\nconst DEFAULT_IDLE_POLL_MS = 1_000\nconst MAX_CONSECUTIVE_CLAIM_FAILURES = 5\n\nexport abstract class QueueWorker<\n TJob extends QueueJob,\n TFailureCodes extends QueueWorkerFailureCodes,\n> extends Worker {\n protected readonly config: Required<QueueWorkerConfig<TJob, TFailureCodes>>\n private consecutiveClaimFailures = 0\n\n constructor(config: QueueWorkerConfig<TJob, TFailureCodes>) {\n super()\n this.config = {\n projectId: config.projectId,\n queue: config.queue,\n failureCodes: config.failureCodes,\n workerId: config.workerId,\n leaseMs: config.leaseMs ?? DEFAULT_LEASE_MS,\n claimLimit: normalizeClaimLimit(config.claimLimit),\n idlePollMs: config.idlePollMs ?? DEFAULT_IDLE_POLL_MS,\n }\n }\n\n /** Maximum jobs this worker process claims and executes at once. */\n get concurrency(): number {\n return this.config.claimLimit\n }\n\n protected async run(signal: AbortSignal): Promise<void> {\n const inFlight = new Set<Promise<void>>()\n let runError: unknown = null\n\n try {\n while (!signal.aborted && !runError) {\n while (!signal.aborted && !runError && inFlight.size >= this.config.claimLimit) {\n await Promise.race(inFlight)\n }\n if (runError || signal.aborted) {\n continue\n }\n\n const capacity = this.config.claimLimit - inFlight.size\n const claimed = await this.claimOrIdle(signal, capacity)\n for (const claimedJob of claimed) {\n const promise = this.handle(claimedJob, signal)\n .catch((error) => {\n runError ??= error\n })\n .finally(() => {\n inFlight.delete(promise)\n })\n inFlight.add(promise)\n }\n }\n } finally {\n await Promise.allSettled(inFlight)\n }\n\n if (runError) {\n throw runError\n }\n }\n\n protected abstract execute(\n claimed: ClaimedQueueJob<TJob>,\n signal: AbortSignal,\n delivery: QueueDelivery<TJob, TFailureCodes[number]>\n ): Promise<void>\n\n protected onExecutionError(\n _claimed: ClaimedQueueJob<TJob>,\n _error: unknown\n ):\n | Promise<QueueWorkerFailureDecision<TFailureCodes[number]>>\n | QueueWorkerFailureDecision<TFailureCodes[number]> {\n return { kind: \"fail\" }\n }\n\n protected onAbortError(\n _claimed: ClaimedQueueJob<TJob>,\n _error: unknown\n ):\n | Promise<QueueWorkerFailureDecision<TFailureCodes[number]>>\n | QueueWorkerFailureDecision<TFailureCodes[number]> {\n // Shutdown should normally release work for another process. Workers with non-idempotent\n // partial commits can override this and fail the job instead.\n return { kind: \"retry\" }\n }\n\n private async claimOrIdle(\n signal: AbortSignal,\n limit: number\n ): Promise<readonly ClaimedQueueJob<TJob>[]> {\n const { projectId, queue, workerId, leaseMs, idlePollMs } = this.config\n\n try {\n const claimed = await queue.claim({\n projectId,\n workerId,\n limit,\n leaseMs,\n })\n this.consecutiveClaimFailures = 0\n if (claimed.length === 0) {\n await sleep(idlePollMs, signal).catch(() => {})\n }\n return claimed\n } catch (error) {\n if (signal.aborted) return []\n this.consecutiveClaimFailures += 1\n if (this.consecutiveClaimFailures >= MAX_CONSECUTIVE_CLAIM_FAILURES) {\n this.consecutiveClaimFailures = 0\n throw new Error(\n `[SixbQueueWorker] Queue claim failed ${MAX_CONSECUTIVE_CLAIM_FAILURES} consecutive times.`,\n { cause: error }\n )\n }\n await sleep(idlePollMs, signal).catch(() => {})\n return []\n }\n }\n\n private async handle(claimed: ClaimedQueueJob<TJob>, signal: AbortSignal): Promise<void> {\n const delivery = createQueueDelivery({\n queue: this.config.queue,\n claimed,\n leaseMs: this.config.leaseMs,\n signal,\n onLeaseLost: () => {\n console.error(\n `[SixbQueueWorker] Lost lease for queue job '${claimed.job.id}'; leaving it for redelivery.`\n )\n },\n onRenewalError: (error) => {\n console.error(\n `[SixbQueueWorker] Could not renew lease for queue job '${claimed.job.id}'; retrying.`,\n error\n )\n },\n })\n\n try {\n let outcome: { readonly ok: true } | { readonly ok: false; readonly error: unknown }\n try {\n await this.execute(claimed, delivery.signal, delivery)\n outcome = { ok: true }\n } catch (error) {\n outcome = { ok: false, error }\n }\n\n if (delivery.state === \"lost\") return\n\n if (outcome.ok) {\n await settleOrLog(delivery, \"complete\", () => delivery.complete())\n return\n }\n\n const error = outcome.error\n if (signal.aborted || isAbortError(error)) {\n try {\n const decision = await this.onAbortError(claimed, error)\n await this.applyFailureDecision(delivery, decision, error, \"runtime.cancelled\")\n } catch {\n // Shutdown is already in progress. The unacknowledged job becomes visible after its lease.\n }\n return\n }\n\n try {\n const decision = await this.onExecutionError(claimed, error)\n await this.applyFailureDecision(delivery, decision, error, \"internal.unexpected\")\n } catch (settlementError) {\n logQueueOperationError(\"apply failure decision to\", claimed, settlementError)\n }\n } finally {\n await delivery.close()\n }\n }\n\n private async applyFailureDecision(\n delivery: QueueDelivery<TJob, TFailureCodes[number]>,\n decision: QueueWorkerFailureDecision<TFailureCodes[number]>,\n error: unknown,\n defaultCode: \"internal.unexpected\" | \"runtime.cancelled\"\n ): Promise<void> {\n if (decision.kind === \"retry\") {\n await delivery.retry({ availableAt: decision.availableAt })\n return\n }\n\n const failure =\n decision.failure ??\n captureSixbFailure(error, {\n allowedCodes: this.config.failureCodes,\n defaultCode,\n })\n await delivery.fail(failure)\n }\n}\n\nfunction normalizeClaimLimit(value: number | undefined): number {\n const claimLimit = value ?? DEFAULT_CLAIM_LIMIT\n if (!Number.isSafeInteger(claimLimit) || claimLimit < 1) {\n throw new Error(\"[SixbQueueWorker] Worker concurrency must be a positive safe integer.\")\n }\n return claimLimit\n}\n\nasync function settleOrLog<TJob extends QueueJob, TFailureCode extends SixbErrorCode>(\n delivery: QueueDelivery<TJob, TFailureCode>,\n operation: string,\n settle: () => Promise<QueueSettlementResult>\n): Promise<void> {\n try {\n // A \"lost\" result needs no extra logging here: loss is already reported via onLeaseLost.\n await settle()\n } catch (error) {\n logQueueOperationError(operation, delivery.claimed, error)\n }\n}\n\nfunction logQueueOperationError(operation: string, claimed: ClaimedQueueJob, error: unknown): void {\n console.error(\n `[SixbQueueWorker] Could not ${operation} queue job '${claimed.job.id}'; it may be redelivered.`,\n error\n )\n}\n\n/** True for a standard abort (`AbortController`/`AbortSignal.timeout`) error. */\nexport function isAbortError(error: unknown): boolean {\n return error instanceof Error && error.name === \"AbortError\"\n}\n\nasync function sleep(ms: number, signal: AbortSignal): Promise<void> {\n if (signal.aborted) {\n throw new WorkerAbortError(\"Worker runtime aborted.\")\n }\n\n await new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n signal.removeEventListener(\"abort\", onAbort)\n resolve()\n }, ms)\n\n const onAbort = () => {\n clearTimeout(timer)\n signal.removeEventListener(\"abort\", onAbort)\n reject(new WorkerAbortError(\"Worker runtime aborted.\"))\n }\n\n signal.addEventListener(\"abort\", onAbort, { once: true })\n })\n}\n"
|
|
9
9
|
],
|
|
10
|
-
"mappings": ";;;;;;;;AAMO,MAAM,yBAAyB,MAAM;AAAA,EACjC,OAAO;AAClB;AAAA;AAGO,MAAM,6BAA6B,MAAM;AAAA,EAInC;AAAA,EACA;AAAA,EAJF,OAAO;AAAA,EAEhB,WAAW,CACA,YACA,cACT,SACA;AAAA,IACA,MACE,gBAAgB,iCAAiC,oCACjD,OACF;AAAA,IAPS;AAAA,IACA;AAAA;AAQb;;ACmBA,IAAM,0BAA0B;AAAA;AAEzB,MAAM,oCAAoC,iBAAiB;AAAC;AAQ5D,SAAS,mBAA8E,CAC5F,SACmC;AAAA,EACnC,OAAO,IAAI,qBAAqB,OAAO;AAAA;AAAA;AAGzC,MAAM,qBAEN;AAAA,EACW;AAAA,EACA;AAAA,EAEQ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB,IAAI;AAAA,EACrB,iBAAiB,IAAI;AAAA,EACrB;AAAA,EACA;AAAA,EACA,wBAAwB,IAAI;AAAA,EACrC,eAAmC;AAAA,EACnC;AAAA,EACA;AAAA,EACA,uBAAuB;AAAA,EACvB,UAAgC;AAAA,EAChC,WAAW;AAAA,EAEnB,WAAW,CAAC,SAAyD;AAAA,IACnE,KAAK,QAAQ,QAAQ;AAAA,IACrB,KAAK,UAAU,QAAQ;AAAA,IACvB,KAAK,UAAU,QAAQ;AAAA,IACvB,KAAK,aAAa,QAAQ,MAAM,YAAY,KAAK,QAAQ,KAAK;AAAA,IAC9D,KAAK,cAAc,QAAQ;AAAA,IAC3B,KAAK,iBAAiB,QAAQ;AAAA,IAC9B,KAAK,wBAAwB,QAAQ,QAAQ;AAAA,IAC7C,KAAK,0BAA0B,qBAAqB,QAAQ,QAAQ,cAAc;AAAA,IAClF,KAAK,oBAAoB,KAAK,IAAI,yBAAyB,KAAK,MAAM,QAAQ,UAAU,CAAC,CAAC;AAAA,IAC1F,KAAK,SAAS,YAAY,IAAI,CAAC,QAAQ,QAAQ,KAAK,eAAe,MAAM,CAAC;AAAA,IAC1E,KAAK,cAAc,KAAK,eAAe;AAAA;AAAA,MAGrC,KAAK,GAAuB;AAAA,IAC9B,OAAO,KAAK;AAAA;AAAA,MAGV,cAAc,GAAW;AAAA,IAC3B,OAAO,KAAK;AAAA;AAAA,EAGd,cAAc,CAAC,UAAgE;AAAA,IAC7E,KAAK,sBAAsB,IAAI,QAAQ;AAAA,IACvC,OAAO,MAAM,KAAK,sBAAsB,OAAO,QAAQ;AAAA;AAAA,EAGzD,QAAQ,GAAmC;AAAA,IACzC,OAAO,KAAK,OAAO,MACjB,KAAK,MAAM,SAAS;AAAA,MAClB,WAAW,KAAK,QAAQ,IAAI;AAAA,MAC5B,OAAO,KAAK,QAAQ,IAAI;AAAA,MACxB,SAAS,KAAK,QAAQ;AAAA,IACxB,CAAC,CACH;AAAA;AAAA,EAGF,KAAK,CAAC,QAA2C,CAAC,GAAmC;AAAA,IACnF,OAAO,KAAK,OAAO,MACjB,KAAK,MAAM,MAAM;AAAA,MACf,WAAW,KAAK,QAAQ,IAAI;AAAA,MAC5B,OAAO,KAAK,QAAQ,IAAI;AAAA,MACxB,SAAS,KAAK,QAAQ;AAAA,MACtB,aAAa,MAAM;AAAA,IACrB,CAAC,CACH;AAAA;AAAA,EAGF,IAAI,CAAC,SAAwE;AAAA,IAC3E,OAAO,KAAK,OAAO,MACjB,KAAK,MAAM,KAAK;AAAA,MACd,WAAW,KAAK,QAAQ,IAAI;AAAA,MAC5B,OAAO,KAAK,QAAQ,IAAI;AAAA,MACxB,SAAS,KAAK,QAAQ;AAAA,MACtB;AAAA,IACF,CAAC,CACH;AAAA;AAAA,EAGF,KAAK,GAAkB;AAAA,IACrB,IAAI,KAAK;AAAA,MAAS,OAAO,KAAK;AAAA,IAC9B,KAAK,UAAU,KAAK,YAAY;AAAA,IAChC,OAAO,KAAK;AAAA;AAAA,OAGA,OAAM,CAAC,WAAgE;AAAA,IACnF,IAAI,KAAK,iBAAiB,UAAU;AAAA,MAClC,OAAO,KAAK,iBAAiB,YAAY,YAAY;AAAA,IACvD;AAAA,IACA,IAAI,KAAK,UAAU;AAAA,MACjB,MAAM,IAAI,MAAM,gCAAgC,KAAK,QAAQ,IAAI,0BAA0B;AAAA,IAC7F;AAAA,IAEA,KAAK,WAAW;AAAA,IAChB,IAAI;AAAA,MACF,MAAM,KAAK,YAAY;AAAA,MACvB,IAAI,CAAE,MAAM,KAAK,uBAAuB;AAAA,QAAI,OAAO;AAAA,MACnD,MAAM,UAAU;AAAA,MAChB,KAAK,eAAe;AAAA,MACpB,OAAO;AAAA,cACP;AAAA,MACA,KAAK,WAAW;AAAA;AAAA;AAAA,OAIN,uBAAsB,GAAqB;AAAA,IACvD,IAAI,KAAK,iBAAiB;AAAA,MAAU,OAAO;AAAA,IAC3C,IAAI,KAAK,IAAI,KAAK,KAAK,yBAAyB;AAAA,MAC9C,KAAK,SAAS;AAAA,MACd,OAAO;AAAA,IACT;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MAAY,OAAO;AAAA,IAE7B,MAAM,UAAU,MAAM,KAAK,eAAe;AAAA,IAC1C,IAAI,QAAQ,SAAS,WAAW;AAAA,MAC9B,IAAI,CAAC,QAAQ,SAAS;AAAA,QACpB,KAAK,SAAS;AAAA,QACd,OAAO;AAAA,MACT;AAAA,MACA,KAAK,cAAc,QAAQ,OAAO;AAAA,MAClC,OAAO;AAAA,IACT;AAAA,IACA,IAAI,QAAQ,SAAS,UAAU;AAAA,MAC7B,KAAK,mBAAmB,QAAQ,KAAK;AAAA,IACvC;AAAA,IACA,IAAI,QAAQ,SAAS,aAAa,KAAK,IAAI,KAAK,KAAK,yBAAyB;AAAA,MAC5E,KAAK,SAAS;AAAA,MACd,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA;AAAA,OAGK,eAAc,GAAkB;AAAA,IAC5C,OAAO,KAAK,iBAAiB,YAAY,CAAC,KAAK,eAAe,OAAO,SAAS;AAAA,MAC5E,MAAM,cAAc,KAAK,0BAA0B,KAAK,IAAI;AAAA,MAC5D,IAAI,eAAe,GAAG;AAAA,QACpB,KAAK,SAAS;AAAA,QACd;AAAA,MACF;AAAA,MAEA,MAAM,UAAU,KAAK,aAAa,KAAK,IAAI,KAAK,mBAAmB,WAAW,IAAI;AAAA,MAClF,MAAM,MAAM,SAAS,KAAK,eAAe,MAAM,EAAE,MAAM,MAAM,EAAE;AAAA,MAC/D,IAAI,KAAK,eAAe,OAAO,WAAW,KAAK,iBAAiB;AAAA,QAAU;AAAA,MAC1E,IAAI,KAAK,IAAI,KAAK,KAAK,yBAAyB;AAAA,QAC9C,KAAK,SAAS;AAAA,QACd;AAAA,MACF;AAAA,MACA,IAAI,CAAC,KAAK;AAAA,QAAY;AAAA,MAEtB,MAAM,UAAU,MAAM,KAAK,eAAe;AAAA,MAC1C,IAAI,QAAQ,SAAS,WAAW;AAAA,QAC9B,KAAK,SAAS;AAAA,QACd;AAAA,MACF;AAAA,MACA,IAAI,QAAQ,SAAS,UAAU;AAAA,QAC7B,KAAK,mBAAmB,QAAQ,KAAK;AAAA,QACrC;AAAA,MACF;AAAA,MACA,IAAI,CAAC,QAAQ,SAAS;AAAA,QACpB,KAAK,SAAS;AAAA,QACd;AAAA,MACF;AAAA,MACA,KAAK,cAAc,QAAQ,OAAO;AAAA,IACpC;AAAA;AAAA,EAGM,cAAc,GAAkC;AAAA,IACtD,IAAI,CAAC,KAAK,cAAc,KAAK,IAAI,KAAK,KAAK,yBAAyB;AAAA,MAClE,OAAO,QAAQ,QAAQ,EAAE,MAAM,UAAU,CAAC;AAAA,IAC5C;AAAA,IAEA,MAAM,cAAc,KAAK,IAAI,GAAG,KAAK,0BAA0B,KAAK,IAAI,CAAC;AAAA,IACzE,OAAO,IAAI,QAAQ,CAAC,YAAY;AAAA,MAC9B,IAAI,WAAW;AAAA,MACf,MAAM,SAAS,CAAC,YAAwC;AAAA,QACtD,IAAI;AAAA,UAAU;AAAA,QACd,WAAW;AAAA,QACX,aAAa,KAAK;AAAA,QAClB,QAAQ,OAAO;AAAA;AAAA,MAEjB,MAAM,QAAQ,WAAW,MAAM,OAAO,EAAE,MAAM,UAAU,CAAC,GAAG,WAAW;AAAA,MAEvE,KAAK,aAAa;AAAA,QAChB,WAAW,KAAK,QAAQ,IAAI;AAAA,QAC5B,OAAO,KAAK,QAAQ,IAAI;AAAA,QACxB,SAAS,KAAK,QAAQ;AAAA,QACtB,SAAS,KAAK;AAAA,MAChB,CAAC,EAAE,KACD,CAAC,YAAY,OAAO,EAAE,MAAM,WAAW,QAAQ,CAAC,GAChD,CAAC,UAAU,OAAO,EAAE,MAAM,UAAU,MAAM,CAAC,CAC7C;AAAA,KACD;AAAA;AAAA,EAGK,aAAa,CAAC,SAAsC;AAAA,IAC1D,KAAK,wBAAwB,QAAQ;AAAA,IACrC,KAAK,0BAA0B,qBAAqB,QAAQ,cAAc;AAAA,IAC1E,KAAK,uBAAuB;AAAA,IAC5B,WAAW,YAAY,KAAK,uBAAuB;AAAA,MACjD,IAAI;AAAA,QACF,SAAS,OAAO;AAAA,QAChB,OAAO,OAAO;AAAA,QACd,KAAK,iBAAiB,KAAK;AAAA;AAAA,IAE/B;AAAA;AAAA,EAGM,kBAAkB,CAAC,OAAsB;AAAA,IAC/C,IAAI,KAAK;AAAA,MAAsB;AAAA,IAC/B,KAAK,uBAAuB;AAAA,IAC5B,KAAK,iBAAiB,KAAK;AAAA;AAAA,EAGrB,QAAQ,GAAS;AAAA,IACvB,IAAI,KAAK,iBAAiB;AAAA,MAAU;AAAA,IACpC,KAAK,eAAe;AAAA,IACpB,KAAK,eAAe,MAClB,IAAI,4BACF,gCAAgC,KAAK,QAAQ,IAAI,qBACnD,CACF;AAAA,IACA,KAAK,cAAc;AAAA;AAAA,OAGP,YAAW,GAAkB;AAAA,IACzC,KAAK,eAAe,MAAM;AAAA,IAC1B,MAAM,KAAK,YAAY,MAAM,MAAM,EAAE;AAAA;AAEzC;AAEA,SAAS,oBAAoB,CAAC,OAAuB;AAAA,EACnD,MAAM,YAAY,KAAK,MAAM,KAAK;AAAA,EAClC,IAAI,CAAC,OAAO,SAAS,SAAS,GAAG;AAAA,IAC/B,MAAM,IAAI,MAAM,qDAAqD,SAAS;AAAA,EAChF;AAAA,EACA,OAAO;AAAA;AAGT,eAAe,KAAK,CAAC,IAAY,QAAoC;AAAA,EACnE,IAAI,OAAO;AAAA,IAAS;AAAA,EACpB,MAAM,IAAI,QAAc,CAAC,YAAY;AAAA,IACnC,MAAM,QAAQ,WAAW,QAAQ,EAAE;AAAA,IACnC,SAAS,MAAM,GAAS;AAAA,MACtB,aAAa,KAAK;AAAA,MAClB,OAAO,oBAAoB,SAAS,MAAM;AAAA,MAC1C,QAAQ;AAAA;AAAA,IAEV,OAAO,iBAAiB,SAAS,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,GACxD;AAAA;;AClTH,IAAM,eAAe;AACrB,IAAM,qBAAqB;AAC3B,IAAM,yBAAyB;AAC/B,IAAM,gBAAgB;AAAA;AAGf,MAAe,OAAO;AAAA,EAER,mBAA2B;AAAA,EACtC,aAAqC;AAAA,EACrC,UAAgC;AAAA,OAElC,MAAK,GAAkB;AAAA,IAC3B,IAAI,KAAK;AAAA,MAAY;AAAA,IAErB,KAAK,aAAa,IAAI;AAAA,IACtB,KAAK,UAAU,KAAK,UAAU,KAAK,WAAW,MAAM;AAAA,IAGpD,KAAK,QAAQ,MAAM,MAAM,EAAE;AAAA;AAAA,OAGvB,KAAI,GAAkB;AAAA,IAC1B,MAAM,aAAa,KAAK;AAAA,IACxB,IAAI,CAAC;AAAA,MAAY;AAAA,IAEjB,WAAW,MAAM;AAAA,IACjB,MAAM,KAAK,SAAS,MAAM,MAAM,EAAE;AAAA,IAClC,IAAI,KAAK,eAAe,YAAY;AAAA,MAClC,KAAK,aAAa;AAAA,MAClB,KAAK,UAAU;AAAA,IACjB;AAAA;AAAA,EAIF,IAAI,GAAkB;AAAA,IACpB,OAAO,KAAK,WAAW,QAAQ,QAAQ;AAAA;AAAA,OAK3B,UAAS,CAAC,QAAoC;AAAA,IAC1D,IAAI,eAAe;AAAA,IAEnB,OAAO,CAAC,OAAO,SAAS;AAAA,MACtB,MAAM,YAAY,KAAK,IAAI;AAAA,MAC3B,IAAI;AAAA,MAEJ,IAAI;AAAA,QACF,MAAM,KAAK,IAAI,MAAM;AAAA,QACrB,IAAI,OAAO;AAAA,UAAS;AAAA,QACpB,UAAU,IAAI,MAAM,gBAAgB,KAAK,YAAY,4BAA4B;AAAA,QACjF,OAAO,OAAO;AAAA,QACd,IAAI,OAAO;AAAA,UAAS;AAAA,QACpB,UAAU;AAAA;AAAA,MAGZ,IAAI,KAAK,IAAI,IAAI,aAAa,eAAe;AAAA,QAC3C,eAAe;AAAA,MACjB;AAAA,MACA,IAAI,gBAAgB,cAAc;AAAA,QAChC,MAAM,IAAI,qBAAqB,KAAK,YAAY,MAAM,cAAc,EAAE,OAAO,QAAQ,CAAC;AAAA,MACxF;AAAA,MAEA,MAAM,UAAU,KAAK,IAAI,KAAK,mBAAmB,KAAK,cAAc,sBAAsB;AAAA,MAC1F,gBAAgB;AAAA,MAChB,MAAM,aAAa,SAAS,MAAM;AAAA,IACpC;AAAA;AAEJ;AAEA,eAAe,YAAY,CAAC,IAAY,QAAoC;AAAA,EAC1E,IAAI,OAAO;AAAA,IAAS;AAAA,EACpB,MAAM,IAAI,QAAc,CAAC,YAAY;AAAA,IACnC,MAAM,QAAQ,WAAW,QAAQ,EAAE;AAAA,IACnC,SAAS,MAAM,GAAS;AAAA,MACtB,aAAa,KAAK;AAAA,MAClB,OAAO,oBAAoB,SAAS,MAAM;AAAA,MAC1C,QAAQ;AAAA;AAAA,IAEV,OAAO,iBAAiB,SAAS,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,GACxD;AAAA;;;ACrCH,IAAM,mBAAmB,KAAK;AAC9B,IAAM,sBAAsB;AAC5B,IAAM,uBAAuB;AAC7B,IAAM,iCAAiC;AAAA;AAEhC,MAAe,oBAGZ,OAAO;AAAA,EACI;AAAA,EACX,2BAA2B;AAAA,EAEnC,WAAW,CAAC,QAAgD;AAAA,IAC1D,MAAM;AAAA,IACN,KAAK,SAAS;AAAA,MACZ,WAAW,OAAO;AAAA,MAClB,OAAO,OAAO;AAAA,MACd,cAAc,OAAO;AAAA,MACrB,UAAU,OAAO;AAAA,MACjB,SAAS,OAAO,WAAW;AAAA,MAC3B,YAAY,OAAO,cAAc;AAAA,MACjC,YAAY,OAAO,cAAc;AAAA,IACnC;AAAA;AAAA,OAGc,IAAG,CAAC,QAAoC;AAAA,IACtD,MAAM,WAAW,IAAI;AAAA,IACrB,IAAI,WAAoB;AAAA,IAExB,IAAI;AAAA,MACF,OAAO,CAAC,OAAO,WAAW,CAAC,UAAU;AAAA,QACnC,OAAO,CAAC,OAAO,WAAW,CAAC,YAAY,SAAS,QAAQ,KAAK,OAAO,YAAY;AAAA,UAC9E,MAAM,QAAQ,KAAK,QAAQ;AAAA,QAC7B;AAAA,QACA,IAAI,YAAY,OAAO,SAAS;AAAA,UAC9B;AAAA,QACF;AAAA,QAEA,MAAM,WAAW,KAAK,OAAO,aAAa,SAAS;AAAA,QACnD,MAAM,UAAU,MAAM,KAAK,YAAY,QAAQ,QAAQ;AAAA,QACvD,WAAW,cAAc,SAAS;AAAA,UAChC,MAAM,UAAU,KAAK,OAAO,YAAY,MAAM,EAC3C,MAAM,CAAC,UAAU;AAAA,YAChB,aAAa;AAAA,WACd,EACA,QAAQ,MAAM;AAAA,YACb,SAAS,OAAO,OAAO;AAAA,WACxB;AAAA,UACH,SAAS,IAAI,OAAO;AAAA,QACtB;AAAA,MACF;AAAA,cACA;AAAA,MACA,MAAM,QAAQ,WAAW,QAAQ;AAAA;AAAA,IAGnC,IAAI,UAAU;AAAA,MACZ,MAAM;AAAA,IACR;AAAA;AAAA,EASQ,gBAAgB,CACxB,UACA,QAGoD;AAAA,IACpD,OAAO,EAAE,MAAM,OAAO;AAAA;AAAA,EAGd,YAAY,CACpB,UACA,QAGoD;AAAA,IAGpD,OAAO,EAAE,MAAM,QAAQ;AAAA;AAAA,OAGX,YAAW,CACvB,QACA,OAC2C;AAAA,IAC3C,QAAQ,WAAW,OAAO,UAAU,SAAS,eAAe,KAAK;AAAA,IAEjE,IAAI;AAAA,MACF,MAAM,UAAU,MAAM,MAAM,MAAM;AAAA,QAChC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,MACD,KAAK,2BAA2B;AAAA,MAChC,IAAI,QAAQ,WAAW,GAAG;AAAA,QACxB,MAAM,OAAM,YAAY,MAAM,EAAE,MAAM,MAAM,EAAE;AAAA,MAChD;AAAA,MACA,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,IAAI,OAAO;AAAA,QAAS,OAAO,CAAC;AAAA,MAC5B,KAAK,4BAA4B;AAAA,MACjC,IAAI,KAAK,4BAA4B,gCAAgC;AAAA,QACnE,KAAK,2BAA2B;AAAA,QAChC,MAAM,IAAI,MACR,wCAAwC,qDACxC,EAAE,OAAO,MAAM,CACjB;AAAA,MACF;AAAA,MACA,MAAM,OAAM,YAAY,MAAM,EAAE,MAAM,MAAM,EAAE;AAAA,MAC9C,OAAO,CAAC;AAAA;AAAA;AAAA,OAIE,OAAM,CAAC,SAAgC,QAAoC;AAAA,IACvF,MAAM,WAAW,oBAAoB;AAAA,MACnC,OAAO,KAAK,OAAO;AAAA,MACnB;AAAA,MACA,SAAS,KAAK,OAAO;AAAA,MACrB;AAAA,MACA,aAAa,MAAM;AAAA,QACjB,QAAQ,MACN,+CAA+C,QAAQ,IAAI,iCAC7D;AAAA;AAAA,MAEF,gBAAgB,CAAC,UAAU;AAAA,QACzB,QAAQ,MACN,0DAA0D,QAAQ,IAAI,kBACtE,KACF;AAAA;AAAA,IAEJ,CAAC;AAAA,IAED,IAAI;AAAA,MACF,IAAI;AAAA,MACJ,IAAI;AAAA,QACF,MAAM,KAAK,QAAQ,SAAS,SAAS,QAAQ,QAAQ;AAAA,QACrD,UAAU,EAAE,IAAI,KAAK;AAAA,QACrB,OAAO,QAAO;AAAA,QACd,UAAU,EAAE,IAAI,OAAO,cAAM;AAAA;AAAA,MAG/B,IAAI,SAAS,UAAU;AAAA,QAAQ;AAAA,MAE/B,IAAI,QAAQ,IAAI;AAAA,QACd,MAAM,YAAY,UAAU,YAAY,MAAM,SAAS,SAAS,CAAC;AAAA,QACjE;AAAA,MACF;AAAA,MAEA,MAAM,QAAQ,QAAQ;AAAA,MACtB,IAAI,OAAO,WAAW,aAAa,KAAK,GAAG;AAAA,QACzC,IAAI;AAAA,UACF,MAAM,WAAW,MAAM,KAAK,aAAa,SAAS,KAAK;AAAA,UACvD,MAAM,KAAK,qBAAqB,UAAU,UAAU,OAAO,mBAAmB;AAAA,UAC9E,MAAM;AAAA,QAGR;AAAA,MACF;AAAA,MAEA,IAAI;AAAA,QACF,MAAM,WAAW,MAAM,KAAK,iBAAiB,SAAS,KAAK;AAAA,QAC3D,MAAM,KAAK,qBAAqB,UAAU,UAAU,OAAO,qBAAqB;AAAA,QAChF,OAAO,iBAAiB;AAAA,QACxB,uBAAuB,6BAA6B,SAAS,eAAe;AAAA;AAAA,cAE9E;AAAA,MACA,MAAM,SAAS,MAAM;AAAA;AAAA;AAAA,OAIX,qBAAoB,CAChC,UACA,UACA,OACA,aACe;AAAA,IACf,IAAI,SAAS,SAAS,SAAS;AAAA,MAC7B,MAAM,SAAS,MAAM,EAAE,aAAa,SAAS,YAAY,CAAC;AAAA,MAC1D;AAAA,IACF;AAAA,IAEA,MAAM,UACJ,SAAS,WACT,mBAAmB,OAAO;AAAA,MACxB,cAAc,KAAK,OAAO;AAAA,MAC1B;AAAA,IACF,CAAC;AAAA,IACH,MAAM,SAAS,KAAK,OAAO;AAAA;AAE/B;AAEA,eAAe,WAAsE,CACnF,UACA,WACA,QACe;AAAA,EACf,IAAI;AAAA,IAEF,MAAM,OAAO;AAAA,IACb,OAAO,OAAO;AAAA,IACd,uBAAuB,WAAW,SAAS,SAAS,KAAK;AAAA;AAAA;AAI7D,SAAS,sBAAsB,CAAC,WAAmB,SAA0B,OAAsB;AAAA,EACjG,QAAQ,MACN,+BAA+B,wBAAwB,QAAQ,IAAI,+BACnE,KACF;AAAA;AAIK,SAAS,YAAY,CAAC,OAAyB;AAAA,EACpD,OAAO,iBAAiB,SAAS,MAAM,SAAS;AAAA;AAGlD,eAAe,MAAK,CAAC,IAAY,QAAoC;AAAA,EACnE,IAAI,OAAO,SAAS;AAAA,IAClB,MAAM,IAAI,iBAAiB,yBAAyB;AAAA,EACtD;AAAA,EAEA,MAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AAAA,IAC3C,MAAM,QAAQ,WAAW,MAAM;AAAA,MAC7B,OAAO,oBAAoB,SAAS,OAAO;AAAA,MAC3C,QAAQ;AAAA,OACP,EAAE;AAAA,IAEL,MAAM,UAAU,MAAM;AAAA,MACpB,aAAa,KAAK;AAAA,MAClB,OAAO,oBAAoB,SAAS,OAAO;AAAA,MAC3C,OAAO,IAAI,iBAAiB,yBAAyB,CAAC;AAAA;AAAA,IAGxD,OAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,GACzD;AAAA;",
|
|
11
|
-
"debugId": "
|
|
10
|
+
"mappings": "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",
|
|
11
|
+
"debugId": "3392AF504C53F2C564756E2164756E21",
|
|
12
12
|
"names": []
|
|
13
13
|
}
|
|
@@ -35,6 +35,8 @@ export declare abstract class QueueWorker<TJob extends QueueJob, TFailureCodes e
|
|
|
35
35
|
protected readonly config: Required<QueueWorkerConfig<TJob, TFailureCodes>>;
|
|
36
36
|
private consecutiveClaimFailures;
|
|
37
37
|
constructor(config: QueueWorkerConfig<TJob, TFailureCodes>);
|
|
38
|
+
/** Maximum jobs this worker process claims and executes at once. */
|
|
39
|
+
get concurrency(): number;
|
|
38
40
|
protected run(signal: AbortSignal): Promise<void>;
|
|
39
41
|
protected abstract execute(claimed: ClaimedQueueJob<TJob>, signal: AbortSignal, delivery: QueueDelivery<TJob, TFailureCodes[number]>): Promise<void>;
|
|
40
42
|
protected onExecutionError(_claimed: ClaimedQueueJob<TJob>, _error: unknown): Promise<QueueWorkerFailureDecision<TFailureCodes[number]>> | QueueWorkerFailureDecision<TFailureCodes[number]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-worker.d.ts","sourceRoot":"","sources":["../../src/workers/queue-worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEjE,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,KAAK,uBAAuB,GAAG,SAAS;IACtC,qBAAqB;IACrB,mBAAmB;IACnB,GAAG,aAAa,EAAE;CACnB,CAAA;AAED,MAAM,WAAW,iBAAiB,CAChC,IAAI,SAAS,QAAQ,EACrB,aAAa,SAAS,uBAAuB;IAE7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;IAClD,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,CAAC,YAAY,SAAS,aAAa,GAAG,KAAK,IAC7E;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;CAC7C,CAAA;AAOL,8BAAsB,WAAW,CAC/B,IAAI,SAAS,QAAQ,EACrB,aAAa,SAAS,uBAAuB,CAC7C,SAAQ,MAAM;IACd,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAA;IAC3E,OAAO,CAAC,wBAAwB,CAAI;gBAExB,MAAM,EAAE,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"queue-worker.d.ts","sourceRoot":"","sources":["../../src/workers/queue-worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEjE,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,KAAK,uBAAuB,GAAG,SAAS;IACtC,qBAAqB;IACrB,mBAAmB;IACnB,GAAG,aAAa,EAAE;CACnB,CAAA;AAED,MAAM,WAAW,iBAAiB,CAChC,IAAI,SAAS,QAAQ,EACrB,aAAa,SAAS,uBAAuB;IAE7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;IAClD,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,CAAC,YAAY,SAAS,aAAa,GAAG,KAAK,IAC7E;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;CAC7C,CAAA;AAOL,8BAAsB,WAAW,CAC/B,IAAI,SAAS,QAAQ,EACrB,aAAa,SAAS,uBAAuB,CAC7C,SAAQ,MAAM;IACd,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAA;IAC3E,OAAO,CAAC,wBAAwB,CAAI;gBAExB,MAAM,EAAE,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC;IAa1D,oEAAoE;IACpE,IAAI,WAAW,IAAI,MAAM,CAExB;cAEe,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCvD,SAAS,CAAC,QAAQ,CAAC,OAAO,CACxB,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,EAC9B,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,GACnD,OAAO,CAAC,IAAI,CAAC;IAEhB,SAAS,CAAC,gBAAgB,CACxB,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,EAC/B,MAAM,EAAE,OAAO,GAEb,OAAO,CAAC,0BAA0B,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAC1D,0BAA0B,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAIrD,SAAS,CAAC,YAAY,CACpB,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,EAC/B,MAAM,EAAE,OAAO,GAEb,OAAO,CAAC,0BAA0B,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAC1D,0BAA0B,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAMvC,WAAW;YAiCX,MAAM;YAyDN,oBAAoB;CAmBnC;AA8BD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEpD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AuthorizablePrincipal, ExecutionContext } from "../execution";
|
|
2
2
|
import type { SixbRuntimeContext } from "../runtime/types";
|
|
3
|
+
import type { AiCostSummary } from "../storage/ai-cost";
|
|
3
4
|
import type { AiModelCallUsage } from "../storage/ai-usage";
|
|
4
5
|
import type { ListWorkflowInterventionsInput, ListWorkflowInterventionsResult, WorkflowInterventionRecord } from "../storage/workflow-interventions";
|
|
5
6
|
import type { ListLatestWorkflowRunsResult, ListWorkflowNodeRunsInput, ListWorkflowNodeRunsResult, ListWorkflowRunsInput, ListWorkflowRunsResult, WorkflowAgentNodeRunRecord, WorkflowNodeRunRecord, WorkflowRunRecord } from "../storage/workflow-runs";
|
|
@@ -25,6 +26,8 @@ export type ListWorkflowRunNodesInput = Omit<ListWorkflowNodeRunsInput, "project
|
|
|
25
26
|
/** Execution-facing Agent node view derived from its run row and model-call ledger. */
|
|
26
27
|
export interface WorkflowAgentNodeRunView extends Omit<WorkflowAgentNodeRunRecord, "execution"> {
|
|
27
28
|
readonly usage?: AiModelCallUsage;
|
|
29
|
+
/** Preferred valuation; omitted when there are no calls or cost storage is unavailable. */
|
|
30
|
+
readonly cost?: AiCostSummary;
|
|
28
31
|
}
|
|
29
32
|
/** Execution-facing workflow node view with optional Agent execution details. */
|
|
30
33
|
export interface WorkflowNodeRunView extends WorkflowNodeRunRecord {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/workflows/execution.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/workflows/execution.ts"],"names":[],"mappings":"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"}
|
package/dist/workflows/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
defineWorkflowStep,
|
|
8
8
|
interventionField,
|
|
9
9
|
unwrapWorkflowNodeFailure
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-c8bw2b6c.js";
|
|
11
11
|
import"../chunk-5sz8ta9r.js";
|
|
12
12
|
import"../chunk-979ww6b3.js";
|
|
13
13
|
import"../chunk-74drx9gd.js";
|
|
@@ -40,36 +40,38 @@ import {
|
|
|
40
40
|
validateWorkflowStepInput,
|
|
41
41
|
validateWorkflowStepOutput,
|
|
42
42
|
validateWorkflowsAtStartup
|
|
43
|
-
} from "../chunk-
|
|
44
|
-
import"../chunk-
|
|
45
|
-
import"../chunk-
|
|
46
|
-
import"../chunk-
|
|
43
|
+
} from "../chunk-177ed2mp.js";
|
|
44
|
+
import"../chunk-km4rkj4t.js";
|
|
45
|
+
import"../chunk-261ag4t4.js";
|
|
46
|
+
import"../chunk-3rsf30p4.js";
|
|
47
47
|
import"../chunk-gqdd7508.js";
|
|
48
48
|
import"../chunk-xhy826cz.js";
|
|
49
|
-
import"../chunk-
|
|
49
|
+
import"../chunk-f1cyvnrk.js";
|
|
50
50
|
import"../chunk-88ppkr54.js";
|
|
51
51
|
import"../chunk-63te770v.js";
|
|
52
52
|
import"../chunk-8b55ygje.js";
|
|
53
53
|
import"../chunk-51fjndv0.js";
|
|
54
54
|
import"../chunk-8m5ejdpn.js";
|
|
55
55
|
import"../chunk-nf4r78r4.js";
|
|
56
|
-
import"../chunk-
|
|
57
|
-
import"../chunk-
|
|
58
|
-
import"../chunk-
|
|
59
|
-
import"../chunk-
|
|
60
|
-
import"../chunk-
|
|
56
|
+
import"../chunk-ttba8x6z.js";
|
|
57
|
+
import"../chunk-d6y2wsfg.js";
|
|
58
|
+
import"../chunk-ettb0cy4.js";
|
|
59
|
+
import"../chunk-96swp2wd.js";
|
|
60
|
+
import"../chunk-4aw0jwk0.js";
|
|
61
|
+
import"../chunk-xmggaxg4.js";
|
|
61
62
|
import"../chunk-fmx1sz2h.js";
|
|
62
|
-
import"../chunk-
|
|
63
|
+
import"../chunk-xc7hq65b.js";
|
|
63
64
|
import"../chunk-cy0n5dms.js";
|
|
64
65
|
import"../chunk-dysw7nsm.js";
|
|
65
66
|
import"../chunk-62c7t4jc.js";
|
|
66
67
|
import"../chunk-ezake7g1.js";
|
|
67
|
-
import"../chunk-
|
|
68
|
+
import"../chunk-pxtrxm3p.js";
|
|
68
69
|
import"../chunk-htq0qh7z.js";
|
|
69
70
|
import"../chunk-xkthy56g.js";
|
|
70
|
-
import"../chunk-
|
|
71
|
-
import"../chunk-
|
|
71
|
+
import"../chunk-qer6am8w.js";
|
|
72
|
+
import"../chunk-n5x5y80a.js";
|
|
72
73
|
import"../chunk-t9xghkva.js";
|
|
74
|
+
import"../chunk-kqxgf6kv.js";
|
|
73
75
|
import"../chunk-5gd7tpv6.js";
|
|
74
76
|
import"../chunk-h9kxd41f.js";
|
|
75
77
|
import"../chunk-9dzba0f2.js";
|
|
@@ -87,12 +89,13 @@ import"../chunk-04b07a9q.js";
|
|
|
87
89
|
import"../chunk-dktq02ne.js";
|
|
88
90
|
import"../chunk-zqysyfjt.js";
|
|
89
91
|
import"../chunk-yt8wphsx.js";
|
|
90
|
-
import"../chunk-
|
|
91
|
-
import"../chunk-
|
|
92
|
-
import"../chunk-
|
|
93
|
-
import"../chunk-
|
|
92
|
+
import"../chunk-rdeagz6b.js";
|
|
93
|
+
import"../chunk-zpw39qhj.js";
|
|
94
|
+
import"../chunk-t0jjkep3.js";
|
|
95
|
+
import"../chunk-d2adj15j.js";
|
|
96
|
+
import"../chunk-rhrbz7d4.js";
|
|
94
97
|
import"../chunk-xwnf87e1.js";
|
|
95
|
-
import"../chunk-
|
|
98
|
+
import"../chunk-4z3n1dzt.js";
|
|
96
99
|
import"../chunk-0172wgm9.js";
|
|
97
100
|
import"../chunk-t8t39h7v.js";
|
|
98
101
|
import"../chunk-y64skrwp.js";
|
|
@@ -133,4 +136,4 @@ export {
|
|
|
133
136
|
WorkflowDefinitionError
|
|
134
137
|
};
|
|
135
138
|
|
|
136
|
-
//# debugId=
|
|
139
|
+
//# debugId=28B83A3228FF218964756E2164756E21
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sixb/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "The ontology-first runtime for Sixb — objects, links, telemetry, actions, and provider contracts",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sixb",
|
|
@@ -131,6 +131,12 @@
|
|
|
131
131
|
"import": "./dist/storage/agents/provider.js",
|
|
132
132
|
"default": "./dist/storage/agents/provider.js"
|
|
133
133
|
},
|
|
134
|
+
"./internal/ai-cost-storage-provider": {
|
|
135
|
+
"types": "./dist/storage/ai-cost/provider.d.ts",
|
|
136
|
+
"bun": "./src/storage/ai-cost/provider.ts",
|
|
137
|
+
"import": "./dist/storage/ai-cost/provider.js",
|
|
138
|
+
"default": "./dist/storage/ai-cost/provider.js"
|
|
139
|
+
},
|
|
134
140
|
"./internal/auth": {
|
|
135
141
|
"types": "./dist/auth/index.d.ts",
|
|
136
142
|
"bun": "./src/auth/index.ts",
|
package/src/agents/adapters.ts
CHANGED
|
@@ -8,7 +8,9 @@ import {
|
|
|
8
8
|
} from "./context"
|
|
9
9
|
import { serializeAgentContextForModel } from "./context-model"
|
|
10
10
|
import { AgentMessageAdapterError } from "./errors"
|
|
11
|
-
import type { AgentMessage, AgentMessagePart, AgentMessageRole } from "./message"
|
|
11
|
+
import type { AgentMessage, AgentMessagePart, AgentMessageRole, AgentToolCallPart } from "./message"
|
|
12
|
+
import { isAgentToolResult } from "./tool-result"
|
|
13
|
+
import type { AgentToolFileContent } from "./types"
|
|
12
14
|
|
|
13
15
|
// ── Inbound (write) — deliberately WIDE ────────────────────────────────────────────────────────
|
|
14
16
|
//
|
|
@@ -159,6 +161,14 @@ export interface AgentFileDataProjection {
|
|
|
159
161
|
readonly filename?: string
|
|
160
162
|
}
|
|
161
163
|
|
|
164
|
+
export interface AgentToolResultFileResolverInput<TMessage extends AgentMessage = AgentMessage> {
|
|
165
|
+
readonly message: TMessage
|
|
166
|
+
readonly part: AgentToolCallPart
|
|
167
|
+
readonly partIndex: number
|
|
168
|
+
readonly contentPart: AgentToolFileContent
|
|
169
|
+
readonly contentIndex: number
|
|
170
|
+
}
|
|
171
|
+
|
|
162
172
|
export interface ToModelMessagesOptions<TMessage extends AgentMessage = AgentMessage> {
|
|
163
173
|
/**
|
|
164
174
|
* Convert a stored file reference into model-readable data. When omitted, file parts are skipped
|
|
@@ -173,6 +183,10 @@ export interface ToModelMessagesOptions<TMessage extends AgentMessage = AgentMes
|
|
|
173
183
|
* models that cannot consume inline files.
|
|
174
184
|
*/
|
|
175
185
|
readonly fileText?: (input: AgentFileDataResolverInput<TMessage>) => string | undefined
|
|
186
|
+
/** Add current metadata, sandbox paths, and projection notes for a tool-result file. */
|
|
187
|
+
readonly toolResultFileText?: (
|
|
188
|
+
input: AgentToolResultFileResolverInput<TMessage>
|
|
189
|
+
) => string | undefined
|
|
176
190
|
}
|
|
177
191
|
|
|
178
192
|
// ── Helpers ─────────────────────────────────────────────────────────────────────────────────────
|
|
@@ -337,7 +351,7 @@ function fromUiContextPart(part: AgentInboundUiMessagePart): AgentMessagePart {
|
|
|
337
351
|
}
|
|
338
352
|
}
|
|
339
353
|
|
|
340
|
-
function fromAiSdkToolPart(part: AgentInboundUiMessagePart):
|
|
354
|
+
function fromAiSdkToolPart(part: AgentInboundUiMessagePart): AgentToolCallPart {
|
|
341
355
|
const dynamic = part.type === "dynamic-tool"
|
|
342
356
|
const toolName = toolNameFromInbound(part)
|
|
343
357
|
assertAdapter(
|
|
@@ -373,8 +387,6 @@ function fromAiSdkToolPart(part: AgentInboundUiMessagePart): AgentToolCallPartRe
|
|
|
373
387
|
return { ...base, state: "output-error", errorText: part.errorText }
|
|
374
388
|
}
|
|
375
389
|
|
|
376
|
-
type AgentToolCallPartResult = Extract<AgentMessagePart, { type: "tool-call" }>
|
|
377
|
-
|
|
378
390
|
// ── toUiMessage (read) ────────────────────────────────────────────────────────────────────────
|
|
379
391
|
|
|
380
392
|
/** Reconstruct an SDK-shaped UI message from a stored message. Exact inverse of {@link fromAiSdk}. */
|
|
@@ -410,7 +422,7 @@ function toUiPart(part: AgentMessagePart): AgentUiMessagePart {
|
|
|
410
422
|
}
|
|
411
423
|
}
|
|
412
424
|
|
|
413
|
-
function toUiToolPart(part:
|
|
425
|
+
function toUiToolPart(part: AgentToolCallPart): AgentUiToolPart {
|
|
414
426
|
const body = {
|
|
415
427
|
toolCallId: part.toolCallId,
|
|
416
428
|
...(part.providerExecuted === undefined ? {} : { providerExecuted: part.providerExecuted }),
|
|
@@ -570,17 +582,17 @@ function appendAssistantModelMessages<TMessage extends AgentMessage>(
|
|
|
570
582
|
} else if (part.type === "tool-call") {
|
|
571
583
|
content.push(toolCallModelPart(part))
|
|
572
584
|
if (part.providerExecuted === true) {
|
|
573
|
-
content.push(toolResultModelPart(part, "json"))
|
|
585
|
+
content.push(toolResultModelPart(message, part, partIndex, "json", options))
|
|
574
586
|
}
|
|
575
587
|
}
|
|
576
588
|
}
|
|
577
589
|
result.push({ role: "assistant", content })
|
|
578
590
|
|
|
579
|
-
const toolResults = current
|
|
580
|
-
.
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
591
|
+
const toolResults = current.flatMap(({ part, partIndex }) =>
|
|
592
|
+
part.type === "tool-call" && part.providerExecuted !== true
|
|
593
|
+
? [toolResultModelPart(message, part, partIndex, "text", options)]
|
|
594
|
+
: []
|
|
595
|
+
)
|
|
584
596
|
if (toolResults.length > 0) {
|
|
585
597
|
result.push({ role: "tool", content: toolResults })
|
|
586
598
|
}
|
|
@@ -596,7 +608,7 @@ function appendAssistantModelMessages<TMessage extends AgentMessage>(
|
|
|
596
608
|
flush()
|
|
597
609
|
}
|
|
598
610
|
|
|
599
|
-
function toolCallModelPart(part:
|
|
611
|
+
function toolCallModelPart(part: AgentToolCallPart): AgentModelToolCallPart {
|
|
600
612
|
return {
|
|
601
613
|
type: "tool-call",
|
|
602
614
|
toolCallId: part.toolCallId,
|
|
@@ -607,37 +619,66 @@ function toolCallModelPart(part: AgentToolCallPartResult): AgentModelToolCallPar
|
|
|
607
619
|
}
|
|
608
620
|
}
|
|
609
621
|
|
|
610
|
-
function toolResultModelPart(
|
|
611
|
-
|
|
612
|
-
|
|
622
|
+
function toolResultModelPart<TMessage extends AgentMessage>(
|
|
623
|
+
message: TMessage,
|
|
624
|
+
part: AgentToolCallPart,
|
|
625
|
+
partIndex: number,
|
|
626
|
+
errorMode: "text" | "json",
|
|
627
|
+
options: ToModelMessagesOptions<TMessage>
|
|
613
628
|
): AgentModelToolResultPart {
|
|
614
629
|
return {
|
|
615
630
|
type: "tool-result",
|
|
616
631
|
toolCallId: part.toolCallId,
|
|
617
632
|
toolName: part.toolName,
|
|
618
|
-
output: toolResultOutput(part, errorMode),
|
|
633
|
+
output: toolResultOutput(message, part, partIndex, errorMode, options),
|
|
619
634
|
...(part.providerMetadata === undefined ? {} : { providerOptions: part.providerMetadata }),
|
|
620
635
|
}
|
|
621
636
|
}
|
|
622
637
|
|
|
623
|
-
function toolResultOutput(
|
|
624
|
-
|
|
625
|
-
|
|
638
|
+
function toolResultOutput<TMessage extends AgentMessage>(
|
|
639
|
+
message: TMessage,
|
|
640
|
+
part: AgentToolCallPart,
|
|
641
|
+
partIndex: number,
|
|
642
|
+
errorMode: "text" | "json",
|
|
643
|
+
options: ToModelMessagesOptions<TMessage>
|
|
626
644
|
): AgentModelToolOutput {
|
|
627
645
|
if (part.state === "output-error") {
|
|
628
646
|
return errorMode === "json"
|
|
629
647
|
? { type: "error-json", value: part.errorText }
|
|
630
648
|
: { type: "error-text", value: part.errorText }
|
|
631
649
|
}
|
|
650
|
+
if (isAgentToolResult(part.output)) {
|
|
651
|
+
const value: string[] = []
|
|
652
|
+
part.output.content.forEach((contentPart, contentIndex) => {
|
|
653
|
+
if (contentPart.type === "text") {
|
|
654
|
+
value.push(contentPart.text)
|
|
655
|
+
return
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
const resolverInput = { message, part, partIndex, contentPart, contentIndex }
|
|
659
|
+
const fileContext = options.toolResultFileText?.(resolverInput)
|
|
660
|
+
if (fileContext) {
|
|
661
|
+
value.push(fileContext)
|
|
662
|
+
} else {
|
|
663
|
+
value.push(toolResultFileFallbackText(contentPart))
|
|
664
|
+
}
|
|
665
|
+
})
|
|
666
|
+
return { type: "text", value: value.join("\n") }
|
|
667
|
+
}
|
|
632
668
|
return typeof part.output === "string"
|
|
633
669
|
? { type: "text", value: part.output }
|
|
634
670
|
: { type: "json", value: part.output }
|
|
635
671
|
}
|
|
636
672
|
|
|
637
|
-
function
|
|
638
|
-
|
|
673
|
+
function toolResultFileFallbackText(part: AgentToolFileContent): string {
|
|
674
|
+
const attributes = [
|
|
675
|
+
part.fileRef.fileName ? `name=${JSON.stringify(part.fileRef.fileName)}` : undefined,
|
|
676
|
+
part.fileRef.mediaType ? `mediaType=${JSON.stringify(part.fileRef.mediaType)}` : undefined,
|
|
677
|
+
`sizeBytes=${part.fileRef.sizeBytes}`,
|
|
678
|
+
].filter((value): value is string => value !== undefined)
|
|
679
|
+
return `[Tool-created file: ${attributes.join(" ")}. Contents are not available inline.]`
|
|
639
680
|
}
|
|
640
681
|
|
|
641
|
-
function
|
|
642
|
-
return part.type === "
|
|
682
|
+
function isTextPart(part: AgentMessagePart): part is Extract<AgentMessagePart, { type: "text" }> {
|
|
683
|
+
return part.type === "text"
|
|
643
684
|
}
|