@makaio/framework 1.0.0-dev-1788811230746 → 1.0.0-dev-1788832451167

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.
Files changed (103) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/{artifact-Btbuib48.mjs → artifact-ClvHqL3w.mjs} +1 -1
  3. package/dist/bus/index.mjs +1 -1
  4. package/dist/{context-resolution-C2VBZhaR.d.mts → context-resolution-BrtoXnez.d.mts} +99 -20
  5. package/dist/contracts/adapter/index.d.mts +1 -1
  6. package/dist/contracts/artifact/index.d.mts +3 -3
  7. package/dist/contracts/artifact/index.mjs +1 -1
  8. package/dist/contracts/capabilities/index.d.mts +1 -1
  9. package/dist/contracts/client/index.d.mts +1 -1
  10. package/dist/contracts/extension/index.d.mts +2 -2
  11. package/dist/contracts/index.d.mts +64 -64
  12. package/dist/contracts/index.mjs +1 -1
  13. package/dist/contracts/materialization/index.d.mts +2 -2
  14. package/dist/contracts/materialization/index.mjs +1 -1
  15. package/dist/contracts/session/index.d.mts +2 -2
  16. package/dist/contracts/worker/index.d.mts +1 -1
  17. package/dist/contracts/worker/index.mjs +1 -1
  18. package/dist/contracts/workflow/index.d.mts +2 -2
  19. package/dist/contracts/workflow/index.mjs +1 -1
  20. package/dist/{execution-attempt-repository-OryBjQQI.d.mts → execution-attempt-repository-CgB7uiYD.d.mts} +12 -1
  21. package/dist/execution-attempt-repository-D0cCU7dI.mjs +1 -0
  22. package/dist/{index-CXH1Bk0W.d.mts → index-BADuMxcP.d.mts} +134 -134
  23. package/dist/{index-BhOMZWZa2.d.mts → index-BDAfOYSw2.d.mts} +24 -24
  24. package/dist/{index-CAYbui7g.d.mts → index-BakMNLkB.d.mts} +110 -22
  25. package/dist/{index-CnGHGFMC.d.mts → index-Bsr4rZl0.d.mts} +4 -4
  26. package/dist/{index-DEpAI8CY.d.mts → index-BvgLFm-U.d.mts} +1 -1
  27. package/dist/{index-9PUmCySn.d.mts → index-BxOFB25y.d.mts} +5 -4
  28. package/dist/{index-BTCodvXA.d.mts → index-C1PfDEIV.d.mts} +50 -50
  29. package/dist/{index-C-cnB1Te.d.mts → index-CGJgZGqN.d.mts} +8 -8
  30. package/dist/{index-B6Kr3cxD2.d.mts → index-CiKzWCW02.d.mts} +30 -6
  31. package/dist/{index-DsjUnKyr.d.mts → index-DZXpKlyB.d.mts} +19 -19
  32. package/dist/{index-DrO6QLwf2.d.mts → index-DZnb56vt2.d.mts} +1 -1
  33. package/dist/{index-BDDavX2S.d.mts → index-LOh6AEqx.d.mts} +9 -9
  34. package/dist/{index-BxTM9lY0.d.mts → index-LryUXslm.d.mts} +1 -1
  35. package/dist/{index-CgqEyk9R.d.mts → index-rygpcDBV.d.mts} +1 -1
  36. package/dist/{index-Df9L5wwp.d.mts → index-vXmPEZ5O.d.mts} +388 -88
  37. package/dist/kernel/extension/index.d.mts +1 -1
  38. package/dist/kernel/index.d.mts +2 -2
  39. package/dist/kernel/observability/index.d.mts +1 -1
  40. package/dist/{materialization-lVd9_-jr.mjs → materialization-B_LA9pfy.mjs} +1 -1
  41. package/dist/{namespace-BkOvOAU5.d.mts → namespace-BMG3RCdr.d.mts} +6 -6
  42. package/dist/{namespace-2qvc6E2Y.d.mts → namespace-BoyqQiW9.d.mts} +2 -2
  43. package/dist/{namespace-CirognbA.d.mts → namespace-BymM0nl_.d.mts} +27 -27
  44. package/dist/{namespace-DAINF1II.d.mts → namespace-DdqVQSyc.d.mts} +2 -2
  45. package/dist/{namespace-DokogwAZ.d.mts → namespace-DlrX8feY.d.mts} +45 -45
  46. package/dist/{namespace-CxXNlHpn.d.mts → namespace-Dw5H_KCF.d.mts} +4 -4
  47. package/dist/{package-DEYXB80d.mjs → package-CzKoZ1k0.mjs} +1 -1
  48. package/dist/{package-eOEt1w6u.d.mts → package-DkpF17X_.d.mts} +14 -6
  49. package/dist/package.json +1 -1
  50. package/dist/runtime-node/index.d.mts +1 -1
  51. package/dist/runtime-node/index.mjs +1 -1
  52. package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
  53. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  54. package/dist/{schema-zSyY22Ck.d.mts → schema-C9PauHXt.d.mts} +2 -2
  55. package/dist/{schemas-DuJs6Iqj.d.mts → schemas-B2UbGJpJ.d.mts} +10 -10
  56. package/dist/{schemas-Dn1JDTPw.d.mts → schemas-BDZFd3Wb.d.mts} +2 -2
  57. package/dist/{schemas-DqnA42bw.d.mts → schemas-CBpjAhut.d.mts} +4 -4
  58. package/dist/schemas-CNkUEbIr.mjs +1 -0
  59. package/dist/{schemas-D0_kfoDf.d.mts → schemas-Wqo3_F6-.d.mts} +1 -1
  60. package/dist/services/adapter-runtime/index.d.mts +3 -3
  61. package/dist/services/adapter-runtime/namespace.d.mts +1 -1
  62. package/dist/services/adapter-runtime/schemas.d.mts +1 -1
  63. package/dist/services/adapter-subsystem/index.d.mts +2 -2
  64. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  65. package/dist/services/context-rules/index.d.mts +3 -3
  66. package/dist/services/execution-target/index.d.mts +2 -2
  67. package/dist/services/execution-target/namespace.d.mts +1 -1
  68. package/dist/services/execution-target/schemas.d.mts +1 -1
  69. package/dist/services/filesystem/namespace.d.mts +6 -6
  70. package/dist/services/filesystem/schemas.d.mts +3 -3
  71. package/dist/services/index.d.mts +30 -30
  72. package/dist/services/index.mjs +1 -1
  73. package/dist/services/provider-context/index.d.mts +1 -1
  74. package/dist/services/session/handlers/index.d.mts +1 -1
  75. package/dist/services/session/index.d.mts +7 -7
  76. package/dist/services/session/messages/namespace.d.mts +1 -1
  77. package/dist/services/session/session-events/namespace.d.mts +1 -1
  78. package/dist/services/session/storage/namespace.d.mts +1 -1
  79. package/dist/services/session/storage/schema.d.mts +1 -1
  80. package/dist/services/settings/namespace.d.mts +10 -10
  81. package/dist/services/subagent-template/index.d.mts +1 -1
  82. package/dist/services/subagent-template/schemas.d.mts +1 -1
  83. package/dist/{transition-BB138WkK.d.mts → transition-DFA_ckdP.d.mts} +1 -1
  84. package/dist/{types-CR23FzmK.d.mts → types-DkfDRSTr.d.mts} +48 -48
  85. package/dist/{view-builder-qIGQrZfs.d.mts → view-builder-CYW_9n4A.d.mts} +1 -1
  86. package/dist/{worker-DPTYFyNP.mjs → worker-B4nD_Erm.mjs} +1 -1
  87. package/dist/{workflow-BomH9DBB.mjs → workflow-H8hsEikC.mjs} +1 -1
  88. package/dist/workflow-engine/execution-attempt-repository.d.mts +2 -2
  89. package/dist/workflow-engine/execution-attempt-repository.mjs +1 -1
  90. package/dist/workflow-engine/index.d.mts +4 -4
  91. package/dist/workflow-engine/index.mjs +1 -1
  92. package/dist/workflow-engine/package.d.mts +1 -1
  93. package/dist/workflow-engine/package.mjs +1 -1
  94. package/dist/workflow-engine/testing/conformance.d.mts +1 -1
  95. package/dist/workflow-engine/testing/conformance.mjs +1 -1
  96. package/dist/workflow-engine/testing/index.d.mts +1 -1
  97. package/dist/workflow-engine/testing/index.mjs +1 -1
  98. package/dist/workflow-engine/testing/sqlite.d.mts +1 -1
  99. package/dist/workflow-engine/testing/sqlite.mjs +32 -32
  100. package/dist/{workflow-worker-BW3CE0YG.mjs → workflow-worker-CmIkKnpF.mjs} +2 -2
  101. package/package.json +1 -1
  102. package/dist/execution-attempt-repository-Djg3qDRv.mjs +0 -1
  103. package/dist/schemas-C3kyQWGf.mjs +0 -1
@@ -1,4 +1,4 @@
1
- import{c as e,d as t,f as n,g as r,h as i,i as a,l as o,m as s,n as c,o as ee,p as l,r as u,s as d,t as f,u as te}from"../../execution-attempt-repository-Djg3qDRv.mjs";import{PROVIDER_OPERATION_OBLIGATIONS as p}from"../provider-operation.mjs";import{a as m,c as h,d as ne,f as re,i as g,l as _,m as v,o as y,r as ie,s as ae,t as oe,u as b}from"../../attempt-record-codec-B32Whx75.mjs";import{BoundedRecoveryEvidenceSchema as x,ExecutionAttemptOperationKindSchema as S,ProviderAllocationRefSchema as C,WorkerAllocationLifetimeSchema as w}from"@makaio/framework/contracts";import{getRawSqlExecutor as T,isSqliteUniqueViolationError as E,serializeByKey as D,serializeDatabaseOperation as se}from"@makaio/framework/storage/drizzle";import{sql as O}from"drizzle-orm";const ce=[`CREATE TABLE IF NOT EXISTS test_execution_attempt (
1
+ import{_ as e,c as t,d as n,f as r,g as i,h as a,i as o,l as s,m as c,n as l,o as ee,p as te,r as u,s as d,t as f,u as p}from"../../execution-attempt-repository-D0cCU7dI.mjs";import{PROVIDER_OPERATION_OBLIGATIONS as m}from"../provider-operation.mjs";import{a as h,c as ne,d as re,f as ie,i as g,l as _,m as v,o as y,r as b,s as ae,t as x,u as S}from"../../attempt-record-codec-B32Whx75.mjs";import{BoundedRecoveryEvidenceSchema as C,ExecutionAttemptOperationKindSchema as w,ProviderAllocationRefSchema as T,WorkerAllocationLifetimeSchema as E}from"@makaio/framework/contracts";import{getRawSqlExecutor as oe,isSqliteUniqueViolationError as se,serializeByKey as D,serializeDatabaseOperation as ce}from"@makaio/framework/storage/drizzle";import{sql as O}from"drizzle-orm";const k=[`CREATE TABLE IF NOT EXISTS test_execution_attempt (
2
2
  execution_attempt_id TEXT PRIMARY KEY,
3
3
  execution_id TEXT NOT NULL,
4
4
  instruction TEXT NOT NULL,
@@ -38,7 +38,7 @@ import{c as e,d as t,f as n,g as r,h as i,i as a,l as o,m as s,n as c,o as ee,p
38
38
  obligation TEXT NOT NULL,
39
39
  failure_count INTEGER NOT NULL DEFAULT 0,
40
40
  last_failure TEXT
41
- )`];function k(e,t,n){let r=e.find(e=>e===t);if(r===void 0)throw Error(`Stored '${n}' value '${t}' is not part of the port's vocabulary`);return r}function A(e,t){return e===null?null:t(JSON.parse(e))}function j(e){return{runtimeGeneration:e.runtime_generation,runtimeIncarnationId:e.runtime_incarnation_id,runtimeReadyAt:e.runtime_ready_at,operationStartGate:k(f,e.operation_start_gate,`operation_start_gate`),activeOperationId:e.active_operation_id,activeOperationKind:e.active_operation_kind===null?null:S.parse(e.active_operation_kind),activeOperationKey:e.active_operation_key,activeOperationGeneration:e.active_operation_generation,activeOperationAdmittedAt:e.active_operation_admitted_at,lastCompletedOperationId:e.last_completed_operation_id}}function M(e){return{...j(e),executionAttemptId:e.execution_attempt_id,executionId:e.execution_id,instruction:_(JSON.parse(e.instruction)),preparationReceipts:b(JSON.parse(e.preparation_receipts)),status:k(a,e.status,`status`),allocationRef:A(e.allocation_ref,e=>C.parse(e)),createdAt:e.created_at,bootstrapDeadlineAt:e.bootstrap_deadline_at,providerId:e.provider_id,allocationLifetime:e.allocation_lifetime===null?null:w.parse(e.allocation_lifetime),provisionerIncarnationId:e.provisioner_incarnation_id,settlementKind:e.settlement_kind===null?null:k(u,e.settlement_kind,`settlement_kind`),claimable:e.claimable!==0,claimExpiresAt:e.claim_expires_at}}function le(e){return{executionAttemptId:e.execution_attempt_id,generation:e.generation,ownerId:e.owner_id,token:e.token,leaseExpiresAt:e.lease_expires_at,obligation:k(p,e.obligation,`obligation`),failureCount:e.failure_count,lastFailure:A(e.last_failure,e=>x.parse(e))}}const N=new Map,P=new Map;function F(e){if(typeof e!=`object`||!e)return!1;let t=e,n=typeof t.message==`string`?t.message:``;return n.includes(`SQLITE_BUSY`)||n.startsWith(`Failed query: BEGIN IMMEDIATE`)||n.startsWith(`Failed query: COMMIT`)||F(t.cause)}function I(e){if(typeof e!=`object`||!e)return!1;let t=e;return(typeof t.message==`string`?t.message:``).includes(`no transaction is active`)||I(t.cause)}async function L(){await new Promise(e=>setImmediate(e))}async function R(e){for(let t=0;;t+=1)try{await e.run(O.raw(`COMMIT`));return}catch(e){if(!F(e)||t===100)throw e;await L()}}async function z(e,t){return D(N,e,t)}async function B(e,t){return D(P,e,t)}const V=new WeakMap;async function H(e,t){let n=(await t.all(O.raw(`PRAGMA database_list`))).find(e=>e.name===`main`)?.file??null;if(n!==null&&n!==``)return`file:${n}`;let r=V.get(e);if(r!==void 0)return r;let i=`connection:${crypto.randomUUID()}`;return V.set(e,i),i}async function U(e,t){let n=await e();if(typeof n!=`function`)return n;if((await n()).rowsAffected>0)return t;let r=await e();if(typeof r!=`function`)return r;throw Error(`A guarded transition affected no rows while durable state still permitted it`)}function W(e){return O`EXISTS (SELECT 1 FROM test_provider_operation
41
+ )`];function A(e,t,n){let r=e.find(e=>e===t);if(r===void 0)throw Error(`Stored '${n}' value '${t}' is not part of the port's vocabulary`);return r}function j(e,t){return e===null?null:t(JSON.parse(e))}function M(e){return{runtimeGeneration:e.runtime_generation,runtimeIncarnationId:e.runtime_incarnation_id,runtimeReadyAt:e.runtime_ready_at,operationStartGate:A(f,e.operation_start_gate,`operation_start_gate`),activeOperationId:e.active_operation_id,activeOperationKind:e.active_operation_kind===null?null:w.parse(e.active_operation_kind),activeOperationKey:e.active_operation_key,activeOperationGeneration:e.active_operation_generation,activeOperationAdmittedAt:e.active_operation_admitted_at,lastCompletedOperationId:e.last_completed_operation_id}}function N(e){return{...M(e),executionAttemptId:e.execution_attempt_id,executionId:e.execution_id,instruction:_(JSON.parse(e.instruction)),preparationReceipts:S(JSON.parse(e.preparation_receipts)),status:A(o,e.status,`status`),allocationRef:j(e.allocation_ref,e=>T.parse(e)),createdAt:e.created_at,bootstrapDeadlineAt:e.bootstrap_deadline_at,providerId:e.provider_id,allocationLifetime:e.allocation_lifetime===null?null:E.parse(e.allocation_lifetime),provisionerIncarnationId:e.provisioner_incarnation_id,settlementKind:e.settlement_kind===null?null:A(u,e.settlement_kind,`settlement_kind`),claimable:e.claimable!==0,claimExpiresAt:e.claim_expires_at}}function P(e){return{executionAttemptId:e.execution_attempt_id,generation:e.generation,ownerId:e.owner_id,token:e.token,leaseExpiresAt:e.lease_expires_at,obligation:A(m,e.obligation,`obligation`),failureCount:e.failure_count,lastFailure:j(e.last_failure,e=>C.parse(e))}}const F=new Map,I=new Map;function L(e){if(typeof e!=`object`||!e)return!1;let t=e,n=typeof t.message==`string`?t.message:``;return n.includes(`SQLITE_BUSY`)||n.startsWith(`Failed query: BEGIN IMMEDIATE`)||n.startsWith(`Failed query: COMMIT`)||L(t.cause)}function R(e){if(typeof e!=`object`||!e)return!1;let t=e;return(typeof t.message==`string`?t.message:``).includes(`no transaction is active`)||R(t.cause)}async function z(){await new Promise(e=>setImmediate(e))}async function B(e){for(let t=0;;t+=1)try{await e.run(O.raw(`COMMIT`));return}catch(e){if(!L(e)||t===100)throw e;await z()}}async function V(e,t){return D(F,e,t)}async function le(e,t){return D(I,e,t)}const H=new WeakMap;async function ue(e,t){let n=(await t.all(O.raw(`PRAGMA database_list`))).find(e=>e.name===`main`)?.file??null;if(n!==null&&n!==``)return`file:${n}`;let r=H.get(e);if(r!==void 0)return r;let i=`connection:${crypto.randomUUID()}`;return H.set(e,i),i}async function U(e,t){let n=await e();if(typeof n!=`function`)return n;if((await n()).rowsAffected>0)return t;let r=await e();if(typeof r!=`function`)return r;throw Error(`A guarded transition affected no rows while durable state still permitted it`)}function W(e){return O`EXISTS (SELECT 1 FROM test_provider_operation
42
42
  WHERE execution_attempt_id = ${e.executionAttemptId}
43
43
  AND generation = ${e.generation}
44
44
  AND owner_id = ${e.ownerId}
@@ -47,7 +47,7 @@ import{c as e,d as t,f as n,g as r,h as i,i as a,l as o,m as s,n as c,o as ee,p
47
47
  WHERE execution_attempt_id = ${e}
48
48
  AND obligation = ${`terminal-convergence`})`}function J(){return O`EXISTS (SELECT 1 FROM test_active_execution_attempt
49
49
  WHERE execution_id = test_execution_attempt.execution_id
50
- AND execution_attempt_id = test_execution_attempt.execution_attempt_id)`}async function Y(a,u){let S=T(a);await S.run(O.raw(`PRAGMA busy_timeout = 0`));let C=await H(a,S);await z(C,async()=>{for(let e of ce)await S.run(O.raw(e));(await S.all(O.raw(`PRAGMA table_info(test_execution_attempt)`))).some(e=>e.name===`bootstrap_deadline_at`)||await S.run(O.raw(`ALTER TABLE test_execution_attempt ADD COLUMN bootstrap_deadline_at TEXT`))});let w,D=async e=>se(a,()=>B(C,async()=>{if(w!==void 0)throw Error(`This repository was retired by a failed transaction rollback`,{cause:w});for(let t=0;;t+=1)try{return await S.withSession(async t=>{let n=!1;try{await t.run(O.raw(`BEGIN IMMEDIATE`)),n=!0;let r=await e(t);return await R(t),r}catch(e){try{await t.run(O.raw(`ROLLBACK`))}catch(t){throw!n&&I(t)?e:(w=AggregateError([e,t],`Transaction rollback failed`),w)}throw e}})}catch(e){if(!F(e)||t===100)throw e;await L()}})),A=async(e,t)=>(await e.all(O`SELECT * FROM test_execution_attempt WHERE execution_attempt_id = ${t}`))[0],N=async(e,t)=>(await e.all(O`SELECT * FROM test_provider_operation WHERE execution_attempt_id = ${t}`))[0],P=async(e,t)=>(await N(e,t))?.obligation===`terminal-convergence`,V=async(e,t)=>(await e.all(O`SELECT execution_attempt_id FROM test_active_execution_attempt WHERE execution_id = ${t}`))[0]?.execution_attempt_id??null,Y=async(e,n)=>{let r=n.settlement_kind!==null,i=!r&&await V(e,n.execution_id)===n.execution_attempt_id;return t({matchesExecution:!0,settled:r,active:i,allocated:i&&n.allocation_ref!==null&&!await P(e,n.execution_attempt_id)})},X=async(e,t)=>{let n=await A(e,t.executionAttemptId),r=await N(e,t.executionAttemptId);if(n===void 0||r===void 0)return{kind:`not-found`};let i=M(n);return i.settlementKind==null?r.token===null||r.token!==t.token||r.generation!==t.generation||r.owner_id!==t.ownerId?{kind:`stale`,attempt:i}:{kind:`authorized`,attempt:i,attemptRow:n,operation:r}:{kind:`resolved`,attempt:i}},Z=async(e,t)=>{let n=await X(e,t);return n.kind===`authorized`?void 0:{kind:n.kind}},Q=async(e,t,n,r,i)=>{let a=await e.run(O`UPDATE test_execution_attempt
50
+ AND execution_attempt_id = test_execution_attempt.execution_attempt_id)`}async function Y(o,u){let w=oe(o);await w.run(O.raw(`PRAGMA busy_timeout = 0`));let T=await ue(o,w);await V(T,async()=>{for(let e of k)await w.run(O.raw(e));(await w.all(O.raw(`PRAGMA table_info(test_execution_attempt)`))).some(e=>e.name===`bootstrap_deadline_at`)||await w.run(O.raw(`ALTER TABLE test_execution_attempt ADD COLUMN bootstrap_deadline_at TEXT`))});let E,D=async e=>ce(o,()=>le(T,async()=>{if(E!==void 0)throw Error(`This repository was retired by a failed transaction rollback`,{cause:E});for(let t=0;;t+=1)try{return await w.withSession(async t=>{let n=!1;try{await t.run(O.raw(`BEGIN IMMEDIATE`)),n=!0;let r=await e(t);return await B(t),r}catch(e){try{await t.run(O.raw(`ROLLBACK`))}catch(t){throw!n&&R(t)?e:(E=AggregateError([e,t],`Transaction rollback failed`),E)}throw e}})}catch(e){if(!L(e)||t===100)throw e;await z()}})),j=async(e,t)=>(await e.all(O`SELECT * FROM test_execution_attempt WHERE execution_attempt_id = ${t}`))[0],F=async(e,t)=>(await e.all(O`SELECT * FROM test_provider_operation WHERE execution_attempt_id = ${t}`))[0],I=async(e,t)=>(await F(e,t))?.obligation===`terminal-convergence`,H=async(e,t)=>(await e.all(O`SELECT execution_attempt_id FROM test_active_execution_attempt WHERE execution_id = ${t}`))[0]?.execution_attempt_id??null,Y=async(e,t)=>{let r=t.settlement_kind!==null,i=!r&&await H(e,t.execution_id)===t.execution_attempt_id;return n({matchesExecution:!0,settled:r,active:i,allocated:i&&t.allocation_ref!==null&&!await I(e,t.execution_attempt_id)})},X=async(e,t)=>{let n=await j(e,t.executionAttemptId),r=await F(e,t.executionAttemptId);if(n===void 0||r===void 0)return{kind:`not-found`};let i=N(n);return i.settlementKind==null?r.token===null||r.token!==t.token||r.generation!==t.generation||r.owner_id!==t.ownerId?{kind:`stale`,attempt:i}:{kind:`authorized`,attempt:i,attemptRow:n,operation:r}:{kind:`resolved`,attempt:i}},Z=async(e,t)=>{let n=await X(e,t);return n.kind===`authorized`?void 0:{kind:n.kind}},Q=async(e,t,n,r,i)=>{let a=await e.run(O`UPDATE test_execution_attempt
51
51
  SET status = ${`settled`}, settlement_kind = ${n}, claimable = ${0},
52
52
  operation_start_gate = ${`closed`}
53
53
  WHERE execution_attempt_id = ${t}
@@ -56,16 +56,16 @@ import{c as e,d as t,f as n,g as r,h as i,i as a,l as o,m as s,n as c,o as ee,p
56
56
  SET owner_id = NULL, token = NULL, lease_expires_at = NULL
57
57
  WHERE execution_attempt_id = ${t}`:O`UPDATE test_provider_operation
58
58
  SET owner_id = NULL, token = NULL, lease_expires_at = NULL, last_failure = ${JSON.stringify(i)}
59
- WHERE execution_attempt_id = ${t}`),a},$=(e,t)=>{let n=ae(e.allocationRef),r=t?O`CASE WHEN ${J()} THEN 1 ELSE 0 END`:O`${0}`;return D(t=>U(async()=>{let i=await X(t,e.claim);if(i.kind!==`not-found`&&re(i.attempt,n),i.kind===`resolved`)return{kind:`resolved`,allocationRef:i.attempt.allocationRef};if(i.kind!==`authorized`)return{kind:i.kind};let{attempt:a}=i;return a.allocationRef===null?async()=>{let i=await t.run(O`UPDATE test_execution_attempt
59
+ WHERE execution_attempt_id = ${t}`),a},$=(e,t)=>{let n=ae(e.allocationRef),r=t?O`CASE WHEN ${J()} THEN 1 ELSE 0 END`:O`${0}`;return D(t=>U(async()=>{let i=await X(t,e.claim);if(i.kind!==`not-found`&&ie(i.attempt,n),i.kind===`resolved`)return{kind:`resolved`,allocationRef:i.attempt.allocationRef};if(i.kind!==`authorized`)return{kind:i.kind};let{attempt:a}=i;return a.allocationRef===null?async()=>{let i=await t.run(O`UPDATE test_execution_attempt
60
60
  SET status = ${`allocated`},
61
61
  allocation_ref = ${JSON.stringify(n)},
62
62
  claimable = ${r}
63
63
  WHERE execution_attempt_id = ${a.executionAttemptId}
64
64
  AND allocation_ref IS NULL
65
65
  AND ${K(e.claim)}`);return i.rowsAffected===0||await t.run(O`UPDATE test_provider_operation SET obligation = ${`allocation-control`}
66
- WHERE execution_attempt_id = ${a.executionAttemptId}`),i}:o(a.allocationRef,n)?{kind:`duplicate`,allocationRef:a.allocationRef}:{kind:`conflict`,allocationRef:a.allocationRef}},{kind:`recorded`}))};return{async createAttempt(e){let t=_(e.instruction),{createdAt:n,bootstrapDeadlineAt:r}=ie(e.bootstrapTimeoutMs);return D(async i=>{try{await i.run(O`INSERT INTO test_execution_attempt
66
+ WHERE execution_attempt_id = ${a.executionAttemptId}`),i}:s(a.allocationRef,n)?{kind:`duplicate`,allocationRef:a.allocationRef}:{kind:`conflict`,allocationRef:a.allocationRef}},{kind:`recorded`}))};return{async createAttempt(e){let t=_(e.instruction),{createdAt:n,bootstrapDeadlineAt:r}=b(e.bootstrapTimeoutMs);return D(async i=>{try{await i.run(O`INSERT INTO test_execution_attempt
67
67
  (execution_attempt_id, execution_id, instruction, status, claimable, created_at, bootstrap_deadline_at)
68
- VALUES (${e.executionAttemptId}, ${e.executionId}, ${JSON.stringify(t)}, ${`pending`}, ${0}, ${n}, ${r})`)}catch(t){throw E(t)?new c(e.executionAttemptId,{cause:t}):t}return await i.run(O`UPDATE test_execution_attempt
68
+ VALUES (${e.executionAttemptId}, ${e.executionId}, ${JSON.stringify(t)}, ${`pending`}, ${0}, ${n}, ${r})`)}catch(t){throw se(t)?new l(e.executionAttemptId,{cause:t}):t}return await i.run(O`UPDATE test_execution_attempt
69
69
  SET claimable = ${0}
70
70
  WHERE execution_attempt_id = (
71
71
  SELECT execution_attempt_id
@@ -81,7 +81,7 @@ import{c as e,d as t,f as n,g as r,h as i,i as a,l as o,m as s,n as c,o as ee,p
81
81
  )`),await i.run(O`INSERT INTO test_active_execution_attempt (execution_id, execution_attempt_id)
82
82
  VALUES (${e.executionId}, ${e.executionAttemptId})
83
83
  ON CONFLICT(execution_id)
84
- DO UPDATE SET execution_attempt_id = excluded.execution_attempt_id`),{...oe,executionAttemptId:e.executionAttemptId,executionId:e.executionId,instruction:t,preparationReceipts:Object.freeze([]),status:`pending`,allocationRef:null,createdAt:n,bootstrapDeadlineAt:r,providerId:null,allocationLifetime:null,provisionerIncarnationId:null,settlementKind:null,claimable:!1,claimExpiresAt:null}})},async readBootstrapStartState(e){return D(async t=>{let n=await A(t,e.executionAttemptId);return n===void 0||n.execution_id!==e.executionId?null:{settled:n.settlement_kind!==null,active:await V(t,e.executionId)===e.executionAttemptId,allocated:n.allocation_ref!==null,allocationTerminated:await P(t,e.executionAttemptId),operationStartGate:k(f,n.operation_start_gate,`operation_start_gate`),bootstrapDeadlineAt:n.bootstrap_deadline_at}})},async beginProvisioning(e){let t=y(e.allocationLifetime),n={executionAttemptId:e.executionAttemptId,generation:1,ownerId:e.ownerId,token:crypto.randomUUID(),leaseExpiresAt:m(e.leaseExpiresAt)};return D(r=>U(async()=>{let i=await A(r,e.executionAttemptId);if(i===void 0||i.execution_id!==e.executionId)return{kind:`not-found`};let a=M(i);return await V(r,e.executionId)===e.executionAttemptId?a.settlementKind==null?a.allocationRef===null?a.status===`pending`?async()=>{let i=await r.run(O`UPDATE test_execution_attempt
84
+ DO UPDATE SET execution_attempt_id = excluded.execution_attempt_id`),{...x,executionAttemptId:e.executionAttemptId,executionId:e.executionId,instruction:t,preparationReceipts:Object.freeze([]),status:`pending`,allocationRef:null,createdAt:n,bootstrapDeadlineAt:r,providerId:null,allocationLifetime:null,provisionerIncarnationId:null,settlementKind:null,claimable:!1,claimExpiresAt:null}})},async readBootstrapStartState(e){return D(async t=>{let n=await j(t,e.executionAttemptId);return n===void 0||n.execution_id!==e.executionId?null:{settled:n.settlement_kind!==null,active:await H(t,e.executionId)===e.executionAttemptId,allocated:n.allocation_ref!==null,allocationTerminated:await I(t,e.executionAttemptId),operationStartGate:A(f,n.operation_start_gate,`operation_start_gate`),bootstrapDeadlineAt:n.bootstrap_deadline_at}})},async beginProvisioning(e){let t=y(e.allocationLifetime),n={executionAttemptId:e.executionAttemptId,generation:1,ownerId:e.ownerId,token:crypto.randomUUID(),leaseExpiresAt:h(e.leaseExpiresAt)};return D(r=>U(async()=>{let i=await j(r,e.executionAttemptId);if(i===void 0||i.execution_id!==e.executionId)return{kind:`not-found`};let a=N(i);return await H(r,e.executionId)===e.executionAttemptId?a.settlementKind==null?a.allocationRef===null?a.status===`pending`?async()=>{let i=await r.run(O`UPDATE test_execution_attempt
85
85
  SET status = ${`provisioning`},
86
86
  provider_id = ${e.providerId},
87
87
  allocation_lifetime = ${t},
@@ -94,60 +94,60 @@ import{c as e,d as t,f as n,g as r,h as i,i as a,l as o,m as s,n as c,o as ee,p
94
94
  AND ${J()}`);return i.rowsAffected===0||await r.run(O`INSERT INTO test_provider_operation
95
95
  (execution_attempt_id, generation, owner_id, token, lease_expires_at, obligation, failure_count)
96
96
  VALUES (${e.executionAttemptId}, ${n.generation}, ${n.ownerId}, ${n.token},
97
- ${n.leaseExpiresAt}, ${`provisioning-resolution`}, ${0})`),i}:{kind:`already-provisioning`}:{kind:`allocated`,allocationRef:a.allocationRef}:{kind:`resolved`,allocationRef:a.allocationRef}:{kind:`fenced`}},{kind:`started`,claim:n}))},async getProviderOperation(e){return D(async t=>{let n=await N(t,e);return n===void 0?null:le(n)})},async renewProviderOperationClaim(e){let t=m(e.leaseExpiresAt);return D(n=>U(async()=>await Z(n,e.claim)??(()=>n.run(O`UPDATE test_provider_operation SET lease_expires_at = ${t}
97
+ ${n.leaseExpiresAt}, ${`provisioning-resolution`}, ${0})`),i}:{kind:`already-provisioning`}:{kind:`allocated`,allocationRef:a.allocationRef}:{kind:`resolved`,allocationRef:a.allocationRef}:{kind:`fenced`}},{kind:`started`,claim:n}))},async getProviderOperation(e){return D(async t=>{let n=await F(t,e);return n===void 0?null:P(n)})},async renewProviderOperationClaim(e){let t=h(e.leaseExpiresAt);return D(n=>U(async()=>await Z(n,e.claim)??(()=>n.run(O`UPDATE test_provider_operation SET lease_expires_at = ${t}
98
98
  WHERE execution_attempt_id = ${e.claim.executionAttemptId}
99
- AND ${K(e.claim)}`)),{kind:`claimed`,claim:{...e.claim,leaseExpiresAt:t}}))},async takeOverProviderOperation(e){return D(async t=>{let n=await A(t,e.executionAttemptId),r=await N(t,e.executionAttemptId);if(n===void 0||r===void 0)return{kind:`not-found`};if(n.settlement_kind!==null)return{kind:`resolved`};if(r.owner_id!==null&&r.lease_expires_at!==null&&g(r.lease_expires_at)>g(e.observedAt))return{kind:`stale`};let i={executionAttemptId:e.executionAttemptId,generation:r.generation+1,ownerId:e.ownerId,token:crypto.randomUUID(),leaseExpiresAt:m(e.leaseExpiresAt)},{rowsAffected:a}=await t.run(O`UPDATE test_provider_operation
99
+ AND ${K(e.claim)}`)),{kind:`claimed`,claim:{...e.claim,leaseExpiresAt:t}}))},async takeOverProviderOperation(e){return D(async t=>{let n=await j(t,e.executionAttemptId),r=await F(t,e.executionAttemptId);if(n===void 0||r===void 0)return{kind:`not-found`};if(n.settlement_kind!==null)return{kind:`resolved`};if(r.owner_id!==null&&r.lease_expires_at!==null&&g(r.lease_expires_at)>g(e.observedAt))return{kind:`stale`};let i={executionAttemptId:e.executionAttemptId,generation:r.generation+1,ownerId:e.ownerId,token:crypto.randomUUID(),leaseExpiresAt:h(e.leaseExpiresAt)},{rowsAffected:a}=await t.run(O`UPDATE test_provider_operation
100
100
  SET generation = ${i.generation}, owner_id = ${i.ownerId}, token = ${i.token},
101
101
  lease_expires_at = ${i.leaseExpiresAt}
102
102
  WHERE execution_attempt_id = ${e.executionAttemptId}
103
103
  AND generation = ${r.generation}
104
- AND ${G(e.executionAttemptId)}`);return a===0?{kind:`stale`}:{kind:`claimed`,claim:i}})},async handoffProviderOperation(e){let t=e.evidence===void 0?null:x.parse(e.evidence);return D(n=>U(async()=>await Z(n,e.claim)??(()=>n.run(t===null?O`UPDATE test_provider_operation
104
+ AND ${G(e.executionAttemptId)}`);return a===0?{kind:`stale`}:{kind:`claimed`,claim:i}})},async handoffProviderOperation(e){let t=e.evidence===void 0?null:C.parse(e.evidence);return D(n=>U(async()=>await Z(n,e.claim)??(()=>n.run(t===null?O`UPDATE test_provider_operation
105
105
  SET owner_id = NULL, token = NULL, lease_expires_at = NULL
106
106
  WHERE execution_attempt_id = ${e.claim.executionAttemptId}
107
107
  AND ${K(e.claim)}`:O`UPDATE test_provider_operation
108
108
  SET owner_id = NULL, token = NULL, lease_expires_at = NULL,
109
109
  last_failure = ${JSON.stringify(t)}
110
110
  WHERE execution_attempt_id = ${e.claim.executionAttemptId}
111
- AND ${K(e.claim)}`)),{kind:`recorded`}))},async recordProviderOperationUncertainty(e){let t=x.parse(e.evidence);return D(n=>U(async()=>await Z(n,e.claim)??(()=>n.run(O`UPDATE test_provider_operation
111
+ AND ${K(e.claim)}`)),{kind:`recorded`}))},async recordProviderOperationUncertainty(e){let t=C.parse(e.evidence);return D(n=>U(async()=>await Z(n,e.claim)??(()=>n.run(O`UPDATE test_provider_operation
112
112
  SET failure_count = failure_count + 1, last_failure = ${JSON.stringify(t)}
113
113
  WHERE execution_attempt_id = ${e.claim.executionAttemptId}
114
- AND ${K(e.claim)}`)),{kind:`recorded`}))},async recordAllocation(e){return $(e,!0)},async recordProvisioningAbsent(e){let t=x.parse(e.evidence);return D(n=>U(async()=>{let r=await X(n,e.claim);if(r.kind!==`authorized`)return{kind:r.kind};let{attempt:i}=r;return i.executionId===e.executionId?i.allocationRef===null?()=>Q(n,i.executionAttemptId,`abandoned`,O`execution_id = ${e.executionId}
114
+ AND ${K(e.claim)}`)),{kind:`recorded`}))},async recordAllocation(e){return $(e,!0)},async recordProvisioningAbsent(e){let t=C.parse(e.evidence);return D(n=>U(async()=>{let r=await X(n,e.claim);if(r.kind!==`authorized`)return{kind:r.kind};let{attempt:i}=r;return i.executionId===e.executionId?i.allocationRef===null?()=>Q(n,i.executionAttemptId,`abandoned`,O`execution_id = ${e.executionId}
115
115
  AND allocation_ref IS NULL
116
- AND ${W(e.claim)}`,t):{kind:`allocated`,allocationRef:i.allocationRef}:{kind:`not-found`}},{kind:`recorded`}))},async recordProvisionerIncarnationLost(e){let t=x.parse(e.proof.evidence);return D(n=>U(async()=>{let r=await X(n,e.claim);if(r.kind!==`authorized`)return{kind:r.kind};let{attempt:i}=r;return i.executionId===e.executionId?i.allocationLifetime===`provisioner-process-bound`?i.provisionerIncarnationId===null||i.provisionerIncarnationId!==e.proof.provisionerIncarnationId?{kind:`incarnation-mismatch`,provisionerIncarnationId:i.provisionerIncarnationId}:i.allocationRef===null?()=>Q(n,i.executionAttemptId,`abandoned`,O`execution_id = ${e.executionId}
116
+ AND ${W(e.claim)}`,t):{kind:`allocated`,allocationRef:i.allocationRef}:{kind:`not-found`}},{kind:`recorded`}))},async recordProvisionerIncarnationLost(e){let t=C.parse(e.proof.evidence);return D(n=>U(async()=>{let r=await X(n,e.claim);if(r.kind!==`authorized`)return{kind:r.kind};let{attempt:i}=r,o=a(i,e);return o===null?()=>Q(n,i.executionAttemptId,`abandoned`,O`execution_id = ${e.executionId}
117
117
  AND allocation_ref IS NULL
118
118
  AND allocation_lifetime = ${`provisioner-process-bound`}
119
119
  AND provisioner_incarnation_id = ${e.proof.provisionerIncarnationId}
120
- AND ${W(e.claim)}`,t):{kind:`allocated`,allocationRef:i.allocationRef}:{kind:`not-process-bound`,allocationLifetime:i.allocationLifetime}:{kind:`not-found`}},{kind:`recorded`}))},async recordAllocationTerminated(e){let t=x.parse(e.evidence);return D(n=>U(async()=>{let r=await X(n,e.claim);if(r.kind!==`authorized`)return{kind:r.kind};let{attempt:i}=r;return i.allocationRef===null?{kind:`not-allocated`}:()=>n.run(O`UPDATE test_provider_operation
120
+ AND ${W(e.claim)}`,t):o},{kind:`recorded`}))},async recordAllocationTerminated(e){let t=C.parse(e.evidence);return D(n=>U(async()=>{let r=await X(n,e.claim);if(r.kind!==`authorized`)return{kind:r.kind};let{attempt:i}=r;return i.allocationRef===null?{kind:`not-allocated`}:()=>n.run(O`UPDATE test_provider_operation
121
121
  SET obligation = ${`terminal-convergence`}, last_failure = ${JSON.stringify(t)}
122
122
  WHERE execution_attempt_id = ${i.executionAttemptId}
123
123
  AND ${K(e.claim)}
124
124
  AND EXISTS (SELECT 1 FROM test_execution_attempt
125
125
  WHERE execution_attempt_id = ${i.executionAttemptId}
126
- AND allocation_ref IS NOT NULL)`)},{kind:`recorded`}))},async recordInfrastructureFailure(e){return D(t=>U(async()=>{let n=await X(t,e.claim);if(n.kind!==`authorized`)return{kind:n.kind};let{attempt:r,operation:i}=n;return r.executionId===e.executionId?r.allocationRef===null?{kind:`not-allocated`}:k(p,i.obligation,`obligation`)===`terminal-convergence`?()=>Q(t,r.executionAttemptId,`infrastructure-failure`,O`execution_id = ${e.executionId}
126
+ AND allocation_ref IS NOT NULL)`)},{kind:`recorded`}))},async recordInfrastructureFailure(e){return D(t=>U(async()=>{let n=await X(t,e.claim);if(n.kind!==`authorized`)return{kind:n.kind};let{attempt:r,operation:i}=n;return r.executionId===e.executionId?r.allocationRef===null?{kind:`not-allocated`}:A(m,i.obligation,`obligation`)===`terminal-convergence`?()=>Q(t,r.executionAttemptId,`infrastructure-failure`,O`execution_id = ${e.executionId}
127
127
  AND allocation_ref IS NOT NULL
128
128
  AND ${q(r.executionAttemptId)}
129
- AND ${W(e.claim)}`):{kind:`not-terminated`}:{kind:`not-found`}},{kind:`recorded`}))},async registerRuntime(e){return D(async t=>{let n=0,i=await U(async()=>{let i=await A(t,e.executionAttemptId);if(i===void 0||i.execution_id!==e.executionId)return{kind:`not-found`};let a=await Y(t,i);if(a!==null)return a;let o=j(i),s=r(o,e);return s===null?(n=o.runtimeGeneration+1,()=>t.run(O`UPDATE test_execution_attempt
130
- SET runtime_generation = ${n},
131
- runtime_incarnation_id = ${e.runtimeIncarnationId},
129
+ AND ${W(e.claim)}`):{kind:`not-terminated`}:{kind:`not-found`}},{kind:`recorded`}))},async registerRuntime(t){return D(async n=>{let r=0,i=await U(async()=>{let i=await j(n,t.executionAttemptId);if(i===void 0||i.execution_id!==t.executionId)return{kind:`not-found`};let a=await Y(n,i);if(a!==null)return a;let o=M(i),s=e(o,t);return s===null?(r=o.runtimeGeneration+1,()=>n.run(O`UPDATE test_execution_attempt
130
+ SET runtime_generation = ${r},
131
+ runtime_incarnation_id = ${t.runtimeIncarnationId},
132
132
  runtime_ready_at = NULL,
133
133
  active_operation_id = NULL,
134
134
  active_operation_kind = NULL,
135
135
  active_operation_key = NULL,
136
136
  active_operation_generation = NULL,
137
137
  active_operation_admitted_at = NULL
138
- WHERE execution_attempt_id = ${e.executionAttemptId}
139
- AND execution_id = ${e.executionId}
138
+ WHERE execution_attempt_id = ${t.executionAttemptId}
139
+ AND execution_id = ${t.executionId}
140
140
  AND runtime_generation = ${o.runtimeGeneration}
141
141
  AND settlement_kind IS NULL
142
142
  AND (active_operation_id IS NULL OR active_operation_kind = ${`runtime-probe`})
143
143
  AND allocation_ref IS NOT NULL
144
- AND NOT ${q(e.executionAttemptId)}
145
- AND ${J()}`)):s},{kind:`applied`});return i.kind===`applied`?{kind:`registered`,runtimeGeneration:n}:i})},async admitOperation(e){let t=crypto.randomUUID(),r=m(new Date().toISOString()),i=e.operationKind===`runtime-probe`?O`1 = 1`:O`runtime_ready_at IS NOT NULL`;return D(a=>U(async()=>{let o=await A(a,e.executionAttemptId);if(o===void 0||o.execution_id!==e.executionId)return{kind:`not-found`};let s=await Y(a,o);if(s!==null)return s;let c=n(j(o),e,r,M(o));return c===null?()=>a.run(O`UPDATE test_execution_attempt
144
+ AND NOT ${q(t.executionAttemptId)}
145
+ AND ${J()}`)):s},{kind:`applied`});return i.kind===`applied`?{kind:`registered`,runtimeGeneration:r}:i})},async admitOperation(e){let t=crypto.randomUUID(),n=h(new Date().toISOString()),i=e.operationKind===`runtime-probe`?O`1 = 1`:O`runtime_ready_at IS NOT NULL`;return D(a=>U(async()=>{let o=await j(a,e.executionAttemptId);if(o===void 0||o.execution_id!==e.executionId)return{kind:`not-found`};let s=await Y(a,o);if(s!==null)return s;let c=r(M(o),e,n,N(o));return c===null?()=>a.run(O`UPDATE test_execution_attempt
146
146
  SET active_operation_id = ${t},
147
147
  active_operation_kind = ${e.operationKind},
148
148
  active_operation_key = ${e.admissionKey},
149
149
  active_operation_generation = ${e.runtimeGeneration},
150
- active_operation_admitted_at = ${r}
150
+ active_operation_admitted_at = ${n}
151
151
  WHERE execution_attempt_id = ${e.executionAttemptId}
152
152
  AND execution_id = ${e.executionId}
153
153
  AND active_operation_id IS NULL
@@ -159,7 +159,7 @@ import{c as e,d as t,f as n,g as r,h as i,i as a,l as o,m as s,n as c,o as ee,p
159
159
  AND allocation_ref IS NOT NULL
160
160
  AND NOT ${q(e.executionAttemptId)}
161
161
  AND ${i}
162
- AND ${J()}`):c},{kind:`admitted`,operationId:t,runtimeGeneration:e.runtimeGeneration,admittedAt:r}))},async getInstruction(e){return D(async t=>{let n=await A(t,e.executionAttemptId);return n?.execution_id===e.executionId?_(JSON.parse(n.instruction)):null})},async reportOperation(e){let t=ne(e.result);return D(n=>U(async()=>{let r=await A(n,e.executionAttemptId);if(r===void 0||r.execution_id!==e.executionId)return{kind:`not-found`};let i=M(r),a=s({matchesExecution:!0,settled:r.settlement_kind!==null,active:await V(n,e.executionId)===e.executionAttemptId,allocated:r.allocation_ref!==null&&!await P(n,e.executionAttemptId)},i,i,{...e,result:t});if(a!==null)return a;let o=b([...i.preparationReceipts,{operationId:e.operationId,runtimeGeneration:e.runtimeGeneration,result:t}]);return()=>n.run(O`UPDATE test_execution_attempt
162
+ AND ${J()}`):c},{kind:`admitted`,operationId:t,runtimeGeneration:e.runtimeGeneration,admittedAt:n}))},async getInstruction(e){return D(async t=>{let n=await j(t,e.executionAttemptId);return n?.execution_id===e.executionId?_(JSON.parse(n.instruction)):null})},async reportOperation(e){let t=re(e.result);return D(n=>U(async()=>{let r=await j(n,e.executionAttemptId);if(r===void 0||r.execution_id!==e.executionId)return{kind:`not-found`};let i=N(r),a=c({matchesExecution:!0,settled:r.settlement_kind!==null,active:await H(n,e.executionId)===e.executionAttemptId,allocated:r.allocation_ref!==null&&!await I(n,e.executionAttemptId)},i,i,{...e,result:t});if(a!==null)return a;let o=S([...i.preparationReceipts,{operationId:e.operationId,runtimeGeneration:e.runtimeGeneration,result:t}]);return()=>n.run(O`UPDATE test_execution_attempt
163
163
  SET preparation_receipts = ${JSON.stringify(o)},
164
164
  active_operation_id = NULL,
165
165
  active_operation_kind = NULL,
@@ -178,7 +178,7 @@ import{c as e,d as t,f as n,g as r,h as i,i as a,l as o,m as s,n as c,o as ee,p
178
178
  AND preparation_receipts = ${r.preparation_receipts}
179
179
  AND allocation_ref IS NOT NULL
180
180
  AND NOT ${q(e.executionAttemptId)}
181
- AND ${J()}`)},{kind:`accepted`,binding:t.binding}))},async completeOperation(e){return D(t=>U(async()=>{let n=await A(t,e.executionAttemptId);if(n===void 0)return{kind:`not-found`};if(n.settlement_kind!==null)return{kind:`resolved`};let r=l(j(n),e);return r===null?()=>t.run(O`UPDATE test_execution_attempt
181
+ AND ${J()}`)},{kind:`accepted`,binding:t.binding}))},async completeOperation(e){return D(t=>U(async()=>{let n=await j(t,e.executionAttemptId);if(n===void 0)return{kind:`not-found`};if(n.settlement_kind!==null)return{kind:`resolved`};let r=te(M(n),e);return r===null?()=>t.run(O`UPDATE test_execution_attempt
182
182
  SET active_operation_id = NULL,
183
183
  active_operation_kind = NULL,
184
184
  active_operation_key = NULL,
@@ -189,7 +189,7 @@ import{c as e,d as t,f as n,g as r,h as i,i as a,l as o,m as s,n as c,o as ee,p
189
189
  AND settlement_kind IS NULL
190
190
  AND active_operation_id = ${e.operationId}
191
191
  AND active_operation_kind IN (${`runtime-probe`}, ${`workflow-run`})
192
- AND active_operation_generation = ${e.runtimeGeneration}`):r},{kind:`completed`}))},async markRuntimeReady(e){let t=m(e.readyAt);return D(n=>U(async()=>{let r=await A(n,e.executionAttemptId);if(r===void 0||r.execution_id!==e.executionId)return{kind:`not-found`};let a=await Y(n,r);if(a!==null)return a;let o=i(j(r),e);return o===null?()=>n.run(O`UPDATE test_execution_attempt SET runtime_ready_at = ${t}
192
+ AND active_operation_generation = ${e.runtimeGeneration}`):r},{kind:`completed`}))},async markRuntimeReady(e){let t=h(e.readyAt);return D(n=>U(async()=>{let r=await j(n,e.executionAttemptId);if(r===void 0||r.execution_id!==e.executionId)return{kind:`not-found`};let a=await Y(n,r);if(a!==null)return a;let o=i(M(r),e);return o===null?()=>n.run(O`UPDATE test_execution_attempt SET runtime_ready_at = ${t}
193
193
  WHERE execution_attempt_id = ${e.executionAttemptId}
194
194
  AND execution_id = ${e.executionId}
195
195
  AND settlement_kind IS NULL
@@ -198,25 +198,25 @@ import{c as e,d as t,f as n,g as r,h as i,i as a,l as o,m as s,n as c,o as ee,p
198
198
  AND active_operation_id IS NULL
199
199
  AND allocation_ref IS NOT NULL
200
200
  AND NOT ${q(e.executionAttemptId)}
201
- AND ${J()}`):o},{kind:`ready`,acceptedAt:t}))},async getAttemptControlState(e){return D(async t=>{let n=await A(t,e);return n===void 0?null:j(n)})},async getActiveAttempt(e,t){return D(async n=>{if(await V(n,e)!==t)return null;let r=await A(n,t);return r===void 0?null:M(r)})},canonicalizeOutcome(t){return e(u,t)},decodeOutcome(e){return d(u,e)},async commitOutcome(e){let t=e.result,n=e.runtimeFence,r=n===void 0?O`1 = 1`:O`
201
+ AND ${J()}`):o},{kind:`ready`,acceptedAt:t}))},async getAttemptControlState(e){return D(async t=>{let n=await j(t,e);return n===void 0?null:M(n)})},async getActiveAttempt(e,t){return D(async n=>{if(await H(n,e)!==t)return null;let r=await j(n,t);return r===void 0?null:N(r)})},canonicalizeOutcome(e){return t(u,e)},decodeOutcome(e){return d(u,e)},async commitOutcome(e){let t=e.result,n=e.runtimeFence,r=n===void 0?O`1 = 1`:O`
202
202
  runtime_generation = ${n.runtimeGeneration}
203
203
  AND ${n.operationId===null?O`active_operation_id IS NULL`:O`active_operation_id = ${n.operationId}
204
- AND active_operation_generation = ${n.runtimeGeneration}`}`;return D(i=>U(async()=>{if(await V(i,e.executionId)!==e.executionAttemptId)return{kind:`fenced`};let a=await A(i,e.executionAttemptId);if(a===void 0)return{kind:`fenced`};let o=a.workflow_result;if(o!==null){let e=d(u,o);return te(o,t.text)?{kind:`duplicate`,outcome:e,text:o}:{kind:`conflict`}}return a.settlement_kind===null?(n!==void 0&&ee(j(a),n),async()=>{let n=await i.run(O`UPDATE test_execution_attempt SET workflow_result = ${t.text}
204
+ AND active_operation_generation = ${n.runtimeGeneration}`}`;return D(i=>U(async()=>{if(await H(i,e.executionId)!==e.executionAttemptId)return{kind:`fenced`};let a=await j(i,e.executionAttemptId);if(a===void 0)return{kind:`fenced`};let o=a.workflow_result;if(o!==null){let e=d(u,o);return p(o,t.text)?{kind:`duplicate`,outcome:e,text:o}:{kind:`conflict`}}return a.settlement_kind===null?(n!==void 0&&ee(M(a),n),async()=>{let n=await i.run(O`UPDATE test_execution_attempt SET workflow_result = ${t.text}
205
205
  WHERE execution_attempt_id = ${e.executionAttemptId}
206
206
  AND workflow_result IS NULL
207
207
  AND settlement_kind IS NULL
208
208
  AND ${r}
209
- AND ${J()}`);return n.rowsAffected===0?n:Q(i,e.executionAttemptId,`outcome`,O`workflow_result IS NOT NULL`)}):{kind:`conflict`}},{kind:`accepted`,outcome:d(u,t.text),text:t.text}))},async abandonPendingAttempt(e,t){return D(n=>U(async()=>{if(await V(n,t)!==e)return{kind:`fenced`};let r=await A(n,e);if(r===void 0)return{kind:`fenced`};let i=M(r);return i.status===`allocated`?{kind:`allocated`}:i.status===`provisioning`?{kind:`provisioning`}:i.status===`settled`?{kind:i.settlementKind===`abandoned`?`already-abandoned`:`already-settled`}:()=>n.run(O`UPDATE test_execution_attempt
209
+ AND ${J()}`);return n.rowsAffected===0?n:Q(i,e.executionAttemptId,`outcome`,O`workflow_result IS NOT NULL`)}):{kind:`conflict`}},{kind:`accepted`,outcome:d(u,t.text),text:t.text}))},async abandonPendingAttempt(e,t){return D(n=>U(async()=>{if(await H(n,t)!==e)return{kind:`fenced`};let r=await j(n,e);if(r===void 0)return{kind:`fenced`};let i=N(r);return i.status===`allocated`?{kind:`allocated`}:i.status===`provisioning`?{kind:`provisioning`}:i.status===`settled`?{kind:i.settlementKind===`abandoned`?`already-abandoned`:`already-settled`}:()=>n.run(O`UPDATE test_execution_attempt
210
210
  SET status = ${`settled`}, settlement_kind = ${`abandoned`}, claimable = ${0},
211
211
  operation_start_gate = ${`closed`}
212
212
  WHERE execution_attempt_id = ${e}
213
213
  AND execution_id = ${t}
214
214
  AND status = ${`pending`}
215
215
  AND settlement_kind IS NULL
216
- AND ${J()}`)},{kind:`abandoned`}))},recovery:{async getAttemptWithAllocation(e){return D(async t=>{let n=await A(t,e);return n===void 0?null:M(n)})},async recordDiscoveredAllocation(e){return $(e,!1)},async evolveAllocationRef(e){let{currentRef:t,nextRef:n}=h(e);return D(r=>U(async()=>{let i=await X(r,e.claim);if(i.kind===`stale`)return{kind:`stale`,storedRef:i.attempt.allocationRef};if(i.kind!==`authorized`)return{kind:i.kind};let{attempt:a,attemptRow:s}=i;return a.executionId===e.executionId?a.allocationRef===null?{kind:`not-allocated`}:o(a.allocationRef,t)?()=>r.run(O`UPDATE test_execution_attempt SET allocation_ref = ${JSON.stringify(n)}
216
+ AND ${J()}`)},{kind:`abandoned`}))},recovery:{async getAttemptWithAllocation(e){return D(async t=>{let n=await j(t,e);return n===void 0?null:N(n)})},async recordDiscoveredAllocation(e){return $(e,!1)},async evolveAllocationRef(e){let{currentRef:t,nextRef:n}=ne(e);return D(r=>U(async()=>{let i=await X(r,e.claim);if(i.kind===`stale`)return{kind:`stale`,storedRef:i.attempt.allocationRef};if(i.kind!==`authorized`)return{kind:i.kind};let{attempt:a,attemptRow:o}=i;return a.executionId===e.executionId?a.allocationRef===null?{kind:`not-allocated`}:s(a.allocationRef,t)?()=>r.run(O`UPDATE test_execution_attempt SET allocation_ref = ${JSON.stringify(n)}
217
217
  WHERE execution_attempt_id = ${a.executionAttemptId}
218
218
  AND execution_id = ${e.executionId}
219
- AND allocation_ref = ${s.allocation_ref}
219
+ AND allocation_ref = ${o.allocation_ref}
220
220
  AND ${K(e.claim)}`):{kind:`stale`,storedRef:a.allocationRef}:{kind:`not-found`}},{kind:`evolved`}))},async getRecoverableAttempts(e){return D(async t=>{let n=new Date().toISOString();return(await t.all(O`SELECT * FROM test_execution_attempt
221
221
  WHERE execution_id = ${e}
222
222
  AND status = ${`allocated`}
@@ -224,4 +224,4 @@ import{c as e,d as t,f as n,g as r,h as i,i as a,l as o,m as s,n as c,o as ee,p
224
224
  AND allocation_ref IS NOT NULL
225
225
  AND claimable = ${1}
226
226
  AND (claim_expires_at IS NULL OR claim_expires_at >= ${n})
227
- ORDER BY created_at ASC, execution_attempt_id ASC`)).map(e=>v(M(e)))})}}}}export{Y as createSqliteAttemptRepository};
227
+ ORDER BY created_at ASC, execution_attempt_id ASC`)).map(e=>v(N(e)))})}}}}export{Y as createSqliteAttemptRepository};
@@ -1,2 +1,2 @@
1
- import{resolveMakaioHome as e}from"./runtime-node/makaio-config.mjs";import{t}from"./extension-package-provenance-aYrZuS4W.mjs";import{b as n,c as r,g as i,l as a,n as o,u as s,v as c}from"./bootstrap-start-client-DrvofWwi.mjs";import{mintOrRotateWorkflowExecutionBusSecret as l}from"./runtime-node/workflow-execution-bus-access.mjs";import{execFile as u,spawn as d}from"node:child_process";import*as f from"node:fs/promises";import{access as p}from"node:fs/promises";import*as m from"node:path";import{basename as ee,isAbsolute as te,join as ne,relative as re}from"node:path";import*as h from"node:crypto";import{randomUUID as g}from"node:crypto";import{constants as ie}from"node:fs";import{BusAbortError as ae,createBusInstance as _,isRequestCancellation as oe,waitForSubscriptionPropagation as se}from"@makaio/framework/bus";import{AdapterSubjects as ce,BoundedRecoveryEvidenceSchema as le,ExecutionAttemptSchemas as v,ExecutionAttemptSubjects as y,FrameworkContractNamespaces as ue,FrameworkStorageNamespaces as b,JsonValueSchema as de,PROVIDER_ALLOCATION_REF_VERSION as fe,ProviderAllocationRefSchema as pe,RECOVERY_EVIDENCE_LIMITS as x,WorkerCapabilitiesSchema as me,WorkerSchemas as he,WorkerSubjects as S,WorkflowRunContextSchema as ge,WorkflowRunResultSchema as _e,WorkflowWorkerConfigSchema as ve,createWorkflowCancelSubject as ye}from"@makaio/framework/contracts";import{ExtensionCoordinator as be,KernelSubjects as xe,coalesceExtensionOverrides as Se,filterEligibleExtensions as Ce}from"@makaio/framework/kernel";import{BaseService as we}from"@makaio/framework/service-base";import{AdapterRuntimeSubjects as Te,registerAdapterRuntimeIdentityHandlers as Ee}from"@makaio/framework/services/adapter-runtime";import{CLIDetectionNamespace as De,CLIDetectionSubjects as Oe}from"@makaio/framework/services/cli-detection/namespace";import{SessionOrchestratorToken as ke,ToolRegistryToken as Ae,canonicalModelPackage as je,createSubagentServicePackage as Me,createToolContributionProcessor as Ne,frameworkCorePackages as C,sessionBridgePackage as Pe,sessionOrchestratorPackage as Fe,sessionPackage as Ie,sessionStoragePackage as Le,toolRegistryPackage as Re}from"@makaio/framework/services";import{AdapterSubsystemSubjects as ze}from"@makaio/framework/services/adapter-subsystem";import{createClientsCorePackage as Be}from"@makaio/framework/clients";import{AdapterSubsystemToken as w,createAdapterSubsystemContributionProcessor as Ve,createAdapterSubsystemPackage as He,orderAfterAdapterSubsystem as Ue}from"@makaio/framework/adapter-subsystem";import{execa as We}from"execa";import Ge from"piscina";import{ExecutionAttemptAuthority as Ke,WORKFLOW_WORKLOAD_KIND as qe,WORKFLOW_WORKLOAD_VERSION as Je,WorkflowStorageSubjects as Ye,buildWorkflowAttemptInstruction as Xe,parseWorkflowAttemptInstruction as T,runAuthorityDispatchedAttempt as Ze,toCommittedWorkflowRunnerResult as Qe}from"@makaio/framework/workflow-engine";import{runWorkflowOrchestrator as $e}from"@makaio/framework/workflow-engine/workflow-orchestrator";import{setTimeout as et}from"node:timers/promises";function E(e){return e.on(ce.getCapabilities,async t=>{let{adapterName:n,adapterId:r}=t.payload;if(r){await t.next();return}if(n){let r=await e.requestOptional(Te.resolveId,{adapterName:n}),i=r.handled?r.data.adapterId:void 0;i&&(t.payload.adapterId=i)}await t.next()},{priority:20})}function D(e){let{coordinator:t,configRepository:n,platformDefaults:r,prepareAuthRuntime:i,runtimeSnapshotHandlerPriority:a,runtimeDefinitionHandlerPriority:o}=e,s=He({configRepository:n,coordinator:t,platformDefaults:r,...i!==void 0&&{prepareAuthRuntime:i},...a!==void 0&&{runtimeSnapshotHandlerPriority:a},...o!==void 0&&{runtimeDefinitionHandlerPriority:o}});return t.registerContributionProcessor(Ve({getAdapterSubsystemService:()=>t.getExtensionService(w)})),{adapterSubsystemPackage:s}}function O(e){let{bus:t,currentMachineId:n}=e,r=Ee(t,{currentMachineId:n,listKnownAdapterNames:e.listKnownAdapterNames??(async()=>{let{configs:e}=await t.request(ze.listAdapterConfigs,{});return e.map(e=>e.name)}),...e.resolveLiveAdapterId!==void 0&&{resolveLiveAdapterId:e.resolveLiveAdapterId},...e.resolveLiveAdapterIdentity!==void 0&&{resolveLiveAdapterIdentity:e.resolveLiveAdapterIdentity},...e.listLiveAdapterIdentities!==void 0&&{listLiveAdapterIdentities:e.listLiveAdapterIdentities}}),i=E(t);return{cleanup:()=>{r.cleanup(),i()}}}function k(e,t){if(!(e instanceof Error))return!1;let{rootPackageName:n,subpath:r}=tt(t),i=(r===void 0?[t]:[t,n]).flatMap(e=>[`Cannot find package '${e}'`,`Cannot find module '${e}'`,`Cannot find package "${e}"`,`Cannot find module "${e}"`]),a=e;return(a.code===`ERR_MODULE_NOT_FOUND`||a.code===`MODULE_NOT_FOUND`)&&i.some(t=>e.message.includes(t))||a.code===`ERR_PACKAGE_PATH_NOT_EXPORTED`&&r!==void 0&&e.message.includes(`Package subpath '${r}' is not defined by "exports"`)&&nt(e.message,n)?!0:i.some(t=>e.message.includes(t))}async function A(e){try{return await import(e)}catch(t){if(k(t,e))return null;throw t}}function tt(e){let t=e.split(`/`);return e.startsWith(`@`)?{rootPackageName:t.slice(0,2).join(`/`),subpath:t.length>2?`./${t.slice(2).join(`/`)}`:void 0}:{rootPackageName:t[0]??e,subpath:t.length>1?`./${t.slice(1).join(`/`)}`:void 0}}function nt(e,t){let n=t,r=t.replaceAll(`/`,`\\`);return e.includes(`/${n}/package.json`)||e.includes(`\\${r}\\package.json`)}async function j(e,t=process.env,n=process.platform){let r=t[Object.keys(t).find(e=>e.toUpperCase()===`PATH`)??`PATH`]??``,i=(t.PATHEXT??`.EXE;.CMD;.BAT;.COM`).split(`;`).filter(Boolean),a=n===`win32`?m.extname(e)===``?i:[``,...i]:[``];for(let t of r.split(m.delimiter)){let n=t.replace(/^"|"$/gu,``),r=m.resolve(n||process.cwd());for(let t of a){let n=m.join(r,`${e}${t}`);try{return await p(n,ie.X_OK),n}catch{}}}}async function M(e,t=5e3,n=1e3){let{stdout:r}=await We(e,[`--version`],{forceKillAfterDelay:n,timeout:t});return r}function rt(e){return e.match(/(\d+\.\d+\.\d+)/u)?.[1]??`unknown`}async function it(e,t=j,n=M){try{let r=await t(e);if(r===void 0)return{binary:e,found:!1};let i=await n(r);return i.length===0?{binary:e,found:!1}:{binary:e,found:!0,path:r,version:rt(i)}}catch{return{binary:e,found:!1}}}async function at(e,t=j,n=M){return Promise.all(e.map(e=>it(e,t,n)))}var ot=class extends we{constructor(e){super(e)}onInit(){this.registerHandler(Oe.scan,async e=>{let t=await at(e.payload.binaries);e.setResult({results:t})})}};const N={name:`makaio.cli-detection`,displayName:`CLI Detection`,version:`0.1.0`,critical:!0,surface:`any`,namespaces:[De],create:e=>new ot(e.bus)};function P(e,t){e.push(...st(t))}function st(e){return e===void 0?[]:typeof e==`function`?[e]:[...e]}function ct(e,t=[]){let n=new Set([e]),r=new Set,i=new Map;for(let e of t)typeof e==`string`?n.add(e):(r.add(e.id),e.version!==void 0&&i.set(e.id,e.version));return{hosts:n,capabilities:r,...i.size>0?{capabilityVersions:i}:{}}}function lt(e=[]){return e.some(e=>typeof e==`string`&&e===`node`)?e:[`node`,...e]}function F(e){return Se(Ce(dt(e.packages,e.configProvider),e.surface,e.runtimeEnvironment))}function ut(e,n){let r=F(n),i=new Set(r.map(t));return e.filter(({ownerPackage:e})=>i.has(e)).map(({package:e})=>e)}function dt(e,t){return t?e.filter(e=>t.loadEnabled(e.name)!==!1):e}function I(e,t){return e.filter(e=>e.runtimeOwnership?.[t]===!0).map(e=>e.name)}function ft(e,t){let n=I(e,t);if(n.length>1)throw Error(`Multiple extensions own runtimeOwnership.${t}: ${n.join(`, `)}`)}function L(e){return ft(e,`sessionOrchestrator`),I(e,`sessionOrchestrator`).length===0}function pt(e){return e===!0||L(e)?C:C.filter(e=>e.name!==ke.name)}function R(e,t,n){let r=[];try{for(let i of e){let e=i.runtimeBoot;e&&P(r,e.configure({bus:t,registerContributionProcessor:e=>{r.push(n.registerContributionProcessor(e))},forEachActiveExtension:e=>{n.forEachActiveExtension(e)}}))}}catch(e){let t=[];for(let e of[...r].reverse())try{e()}catch(e){t.push(e)}throw t.length>0?AggregateError([e,...t],`Extension boot contribution failed and rollback cleanup reported additional errors`,{cause:e}):e}return r}function mt(){let e=process.env.MAKAIO_SKIP_EXTENSIONS;if(!e)return new Set;let t=e.split(`,`).map(e=>e.trim()).filter(Boolean);return new Set(t)}var z=class{pool;constructor(e){this.pool=new Ge({filename:e.workerEntry,maxThreads:e.maxConcurrency??4,idleTimeout:e.idleTimeoutMs??3e4})}async run(e,t,n){return this.pool.run(e,{signal:t,transferList:n})}onMessage(e){return this.pool.on(`message`,e),()=>this.pool.off(`message`,e)}async dispose(){await this.pool.destroy()}},B=class extends Error{code;constructor(e,t){super(e),this.code=t,this.name=`MaterializationError`}};function V(e,t,n){let r=m.resolve(t)+m.sep,i=m.resolve(e);if(i!==m.resolve(t)&&!i.startsWith(r))throw new B(`${n} escapes allowed root: ${e} is not within ${t}`,`containment-violation`)}async function H(e,t,n,r){let i=r??await f.realpath(t),a;try{a=await f.realpath(e)}catch{return e}let o=i+m.sep;if(a!==i&&!a.startsWith(o))throw new B(`${n} escapes allowed root via symlink: real path ${a} is not within ${i}`,`symlink-escape`);return a}function U(e){let t=e.indexOf(`-`);if(t===-1)throw new B(`Invalid SRI integrity format: ${e}`,`contribution-integrity-mismatch`);return{algorithm:e.slice(0,t),digest:e.slice(t+1)}}async function ht(e,t){let n=await f.readFile(e);return h.createHash(t).update(n).digest(`base64`)}const W=new Set([`.git`,`node_modules`]);function gt(e){return W.has(e.toLowerCase())}async function _t(e,t){let n=t.toLowerCase();if(!W.has(n))return!1;if(t===n)return!0;try{let[r,i]=await Promise.all([f.lstat(m.join(e,t)),f.lstat(m.join(e,n))]);return r.dev===i.dev&&r.ino===i.ino}catch(e){if(e.code===`ENOENT`)return!1;throw e}}const vt=W,yt=new Set([`.DS_Store`]);async function G(e,t){let n=h.createHash(t),r=[];async function i(t){let n=await f.readdir(t,{withFileTypes:!0});for(let a of n){let n=m.join(t,a.name);if(a.isSymbolicLink())throw new B(`Contribution package contains a symbolic link: ${m.relative(e,n)}`,`symlink-escape`);if(a.isDirectory()){vt.has(a.name)||await i(n);continue}if(a.isFile()){yt.has(a.name)||r.push(m.relative(e,n));continue}throw new B(`Contribution package contains an unsupported filesystem entry: ${m.relative(e,n)}`,`contribution-integrity-mismatch`)}}await i(e),r.sort();for(let t of r)n.update(t.split(m.sep).join(`/`)),n.update(`\0`),n.update(await f.readFile(m.join(e,t))),n.update(`\0`);return`${t}-${n.digest(`base64`)}`}async function K(e,t=`sha256`){let n=h.createHash(t),r=[];async function i(t){let n=await f.readdir(t,{withFileTypes:!0});for(let a of n){let n=m.join(t,a.name);if(!await _t(t,a.name)){if(a.isDirectory()){await i(n);continue}if(a.isFile()){r.push(m.relative(e,n));continue}throw a.isSymbolicLink()?new B(`Workspace root contains a symbolic link: ${m.relative(e,n)}`,`symlink-escape`):new B(`Workspace root contains an unsupported filesystem entry: ${m.relative(e,n)}`,`unsupported-filesystem-entry`)}}}await i(e),r.sort();for(let t of r){n.update(t),n.update(`\0`);let r=await f.readFile(m.join(e,t));n.update(r),n.update(`\0`)}return`${t}-${n.digest(`base64`)}`}async function bt(e,t,n){let r=m.join(t,`node_modules`,e.packageName);V(r,t,`Contribution package directory`),await H(r,t,`Contribution package directory`,n);let i=m.join(r,`package.json`),a;try{a=await f.readFile(i,`utf-8`)}catch{throw new B(`Contribution package not found: ${e.packageName} (expected at ${r})`,`contribution-missing`)}let o=JSON.parse(a);if(o.name!==e.packageName)throw new B(`Contribution identity mismatch: expected ${e.packageName}, found ${o.name??`<none>`}`,`contribution-missing`);if(o.version!==e.version)throw new B(`Contribution version mismatch for ${e.packageName}: expected ${e.version}, found ${o.version??`<none>`}`,`contribution-version-mismatch`);let s=m.join(r,e.entrypoint);V(s,r,`Contribution entrypoint`),await H(s,t,`Contribution entrypoint`,n);try{await f.access(s)}catch{throw new B(`Contribution entrypoint not found for ${e.packageName}: ${e.entrypoint}`,`contribution-entrypoint-mismatch`)}let{algorithm:c}=U(e.integrity),l;try{l=await G(r,c)}catch(t){if(t instanceof B)throw t;let n=typeof t==`object`&&t&&`code`in t&&typeof t.code==`string`?t.code:void 0;throw n!==void 0&&!n.startsWith(`ERR_`)?new B(`Contribution package cannot be read for ${e.packageName}`,`contribution-entrypoint-mismatch`):t}if(l!==e.integrity)throw new B(`Contribution integrity mismatch for ${e.packageName}: expected ${e.integrity}, computed ${l}`,`contribution-integrity-mismatch`);return s}async function xt(e,t,n){let r=await n.resolveWorkspaceRoot(e.workspaceId);if(r===void 0)throw new B(`Unknown workspace ID: ${e.workspaceId}`,`unknown-workspace`);try{if(!(await f.stat(r)).isDirectory())throw new B(`Workspace root is not a directory: ${r}`,`containment-violation`)}catch(e){throw e instanceof B?e:new B(`Workspace root does not exist: ${r}`,`containment-violation`)}let i=await f.realpath(r),a=m.resolve(r,e.sourcePath);if(V(a,r,`Source path`),m.relative(r,a).split(m.sep).some(gt))throw new B(`Workflow source path selects excluded workspace content: ${e.sourcePath}`,`source-path-mismatch`);await H(a,r,`Source path`,i);let o=await K(r);if(o!==e.rootDigest)throw new B(`Workspace root digest mismatch: expected ${e.rootDigest}, computed ${o}`,`digest-mismatch`);try{await f.access(a)}catch{throw new B(`Workflow source file not found: ${a}`,`source-missing`)}return{workspaceRoot:r,sourcePath:a,contributionEntrypoints:await Promise.all(t.map(e=>bt(e,r,i))),platform:process.platform,arch:process.arch}}var St=class{options;manifest;pool;constructor(e){this.options=e,this.manifest=e.manifest}async run(e,t,n){this.pool??=new z(this.options);let r=n??this.manifest,i=await this.materializeTask(e,r,t);return{state:`uncommitted`,result:await this.pool.run(i,t)}}runWithReadiness(e,t,r,a){this.pool??=new z(this.options);let o=this.pool,s,c=!1,l,u=new Promise((t,r)=>{l=r,s=o.onMessage(r=>{n(r)&&r.executionAttemptId===a.executionAttemptId&&(r.executionId!==e.executionId||r.cancelSubject!==e.cancelSubject||(c=!0,s?.(),t(r)))})}),d=r??this.manifest,f=i(a.bootstrapDeadlineAt,t,async(t,n)=>{let r=await this.materializeTask(e,d,n);return o.run({...r,kind:`attempt-bound`,executionAttemptId:a.executionAttemptId,bootstrapDeadlineAt:a.bootstrapDeadlineAt,bootstrapPort:t},n,[t])});return f.then(()=>{c||(c=!0,s?.(),l(Error(`Workflow worker completed before ready signal: ${e.executionId}`)))},e=>{c||(c=!0,s?.(),l(e instanceof Error?e:Error(String(e))))}),{result:f,ready:u}}async dispose(){await this.pool?.dispose()}async materializeTask(e,t,n){if(n.throwIfAborted(),!(e.source.kind===`path`||t.contributionRefs.length>0))return{kind:`unbound`,config:e,manifest:t,contributionEntrypoints:[]};let r=e.materializationSpec;if(r?.kind!==`local-directory`)throw Error(`ThinWorkflowPiscinaRunner requires a local-directory materialization spec for path-backed workflows or declared contributions.`);if(this.options.resolveWorkspaceRoot===void 0)throw Error(`ThinWorkflowPiscinaRunner requires a host workspace-root resolver for local-directory materialization.`);let i=await xt(r,t.contributionRefs,{resolveWorkspaceRoot:this.options.resolveWorkspaceRoot});if(n.throwIfAborted(),e.source.kind!==`path`)throw Error(`local-directory materialization requires a path-backed workflow source.`);return{kind:`unbound`,config:{...e,source:{kind:`path`,path:i.sourcePath}},manifest:t,contributionEntrypoints:i.contributionEntrypoints}}};function Ct(e){return e.mode===`source`?ne(e.moduleDir,`workflow-worker`,`worker-entry.ts`):ne(e.moduleDir,`workflow-worker`,`worker-entry.mjs`)}var wt=class{options;terminalAuthority=`authority`;constructor(e){this.options=e}async run(e,t,n,r){let i={...e,terminalAuthority:`authority`},a=n??this.options.manifest,o=this.options.requirements,s=r?.dispatchMetadata;t.throwIfAborted();let c=e.source.kind===`path`?await this.options.readRunContext?.(e.executionId,t):void 0;t.throwIfAborted();let l=Xe({id:g(),revision:`1`,config:e,...c==null?{}:{runContext:c},preservation:{required:[]}});return{state:`authority-committed`,result:Qe(await Ze({authority:this.options.authority,executionId:e.executionId,instruction:l,dispatch:e=>this.options.dispatch({executionAttemptId:e,config:i,...a!==void 0&&{manifest:a},...o!==void 0&&{requirements:o},...s!==void 0&&{metadata:s}},t)}),e)}}},Tt=class{#e;constructor(e){this.#e=e.bus}async run(e,t,n){let r=ve.parse(e),i=await s(r);return{state:`uncommitted`,result:await $e({config:await a(r,i,this.#e,t),loaded:i,bus:this.#e,signal:t})}}};function Et(){return{contributionRefs:[]}}function Dt(e){if(e.workflowRunner?.mode===`worker`&&!e.executionAttemptRepository)throw Error(`Worker dispatch mode requires an ExecutionAttemptRepository. Pass 'executionAttemptRepository' to createNodeWorkflowRunnerPackageOptions when workflowRunner.mode is 'worker'.`);let t;if(e.executionAttemptRepository){let n=e.executionAttemptBootstrapTimeoutMs;if(n===void 0)throw Error(`An ExecutionAttemptRepository requires executionAttemptBootstrapTimeoutMs`);t=new Ke(e.executionAttemptRepository,{bootstrapTimeoutMs:n})}let n=ee(e.runtimeModuleDir)===`src`?`source`:`dist`,r=Ot({moduleDir:e.runtimeModuleDir,defaultWorkerEntryMode:n,runner:e.workflowRunner,bus:e.bus,authority:t});return{...r!==void 0&&{workflowRunner:r},executorConfig:{busUrl:e.busUrl,busAuth:{kind:`none`},platformDefaults:e.platformDefaults,makaioHome:e.makaioHome},...e.executionAttemptRepository!==void 0&&{executionAttemptRepository:e.executionAttemptRepository},...t!==void 0&&{executionAttemptAuthority:t},...e.workflowMaterializationSpecResolvers!==void 0&&{workflowMaterializationSpecResolvers:e.workflowMaterializationSpecResolvers}}}function Ot(e){let{runner:t}=e;if(t)switch(t.mode){case void 0:case`in-process`:if(e.bus===void 0)throw Error(`InProcessWorkflowRunner requires a bus instance. Pass 'bus' to createNodeWorkflowRunner when runner.mode is 'in-process'.`);return new Tt({bus:e.bus});case`worker`:{if(e.authority===void 0)throw Error(`WorkerRunner requires an ExecutionAttemptAuthority. Pass 'authority' to createNodeWorkflowRunner when runner.mode is 'worker'.`);let n=e.bus,r=t.dispatch??(n===void 0?void 0:(e,t)=>n.request(S.dispatch,{executionAttemptId:e.executionAttemptId,config:e.config,manifest:e.manifest,requirements:e.requirements,metadata:e.metadata},{signal:t}));if(r===void 0)throw Error(`WorkerRunner requires either a dispatch function or a bus instance. Pass 'bus' to createNodeWorkflowRunner when runner.mode is 'worker'.`);return new wt({dispatch:r,authority:e.authority,...n!==void 0&&{readRunContext:async(e,t)=>(await n.request(Ye.getRunContext,{executionId:e},{signal:t})).runContext},...t.manifest!==void 0&&{manifest:t.manifest},...t.requirements!==void 0&&{requirements:t.requirements}})}case`piscina`:return new St({workerEntry:t.workerEntry??Ct({moduleDir:e.moduleDir,mode:t.workerEntryMode??e.defaultWorkerEntryMode}),manifest:t.manifest??Et(),...t.resolveWorkspaceRoot!==void 0&&{resolveWorkspaceRoot:t.resolveWorkspaceRoot},maxConcurrency:t.maxConcurrency,idleTimeoutMs:t.idleTimeoutMs})}}const kt=new Set([`accepted`,`duplicate`]);var q=class extends Error{decision;result;reason;constructor(e,t,n=`authority-rejected`){super(`Outcome delivery ${n===`deadline-exceeded`?`deadline exceeded`:`rejected by Authority`} (decision=${e}, executionId=${t.executionId}, status=${t.status})`),this.decision=e,this.result=t,this.reason=n,this.name=`OutcomeDeliveryError`}},J=class extends Error{decision;payload;reason;constructor(e,t,n=`authority-rejected`){super(`Attempt outcome delivery ${n===`deadline-exceeded`?`deadline exceeded`:`rejected by Authority`} (decision=${e}, executionAttemptId=${t.executionAttemptId}, outcome=${t.outcome.kind})`),this.decision=e,this.payload=t,this.reason=n,this.name=`AttemptOutcomeDeliveryError`}},At=class extends Error{reason;constructor(e=`deadline-exceeded`){super(`Authority request delivery deadline exceeded`),this.reason=e,this.name=`AuthorityRequestDeliveryError`}};function jt(e){let t={maxRetries:e?.maxRetries??7,baseDelayMs:e?.baseDelayMs??1e3,maxDelayMs:e?.maxDelayMs??3e4,deadlineMs:e?.deadlineMs??12e4};if(!Number.isSafeInteger(t.maxRetries)||t.maxRetries<0)throw TypeError(`Outcome submission maxRetries must be a non-negative safe integer, got ${t.maxRetries}`);for(let[e,n]of Object.entries({baseDelayMs:t.baseDelayMs,maxDelayMs:t.maxDelayMs,deadlineMs:t.deadlineMs}))if(!Number.isFinite(n)||n<=0)throw TypeError(`Outcome submission ${e} must be a positive finite number, got ${n}`);return t}async function Mt(e,t,n,r){let i=t.baseDelayMs*2**(e-1),a=n-Date.now(),o=Math.min(i,t.maxDelayMs,a);await new Promise(e=>setTimeout(e,o));let s=n-Date.now();if(s<=0)return!1;if(r!==void 0){let e;try{await Promise.race([r(),new Promise(t=>{e=setTimeout(t,s)})])}catch{}finally{e!==void 0&&clearTimeout(e)}}return Date.now()<n}async function Nt(e,t,n,r){let i=jt(n?.retry),a=n?.reconnect,o=Date.now()+i.deadlineMs,s;for(let n=0;n<=i.maxRetries;n++){if(o-Date.now()<=0||n>0&&!await Mt(n,i,o,a))throw t();try{let n=o-Date.now();if(n<=0)throw t();return await e(n)}catch(e){if(r(e))throw e;if(s=e,Date.now()>=o)throw t()}}throw s??t()}async function Pt(e,t){return await Nt(e,()=>new At,t,()=>!1)}async function Ft(e,t,n){return await Nt(async n=>{let r=await e(n);if(kt.has(r))return r;throw t(r)},()=>t(`deadline-exceeded`,`deadline-exceeded`),n,e=>e instanceof q||e instanceof J)}async function It(e,t,n){return await Ft(async n=>(await e.request(S.control.outcome.submit,{executionAttemptId:t.executionAttemptId,executionId:t.executionId,result:t.result},{timeout:n})).decision,(e,n)=>n===void 0?new q(e,t.result):new q(e,t.result,n),n)}async function Lt(e,t,n){return await Ft(async n=>(await e.request(y.outcome.submit,t,{timeout:n})).decision,(e,n)=>n===void 0?new J(e,t):new J(e,t,n),n)}const Rt={maxRetries:3,baseDelayMs:200,maxDelayMs:2e3,deadlineMs:1e4},zt={persistentStorage:!0,customCapabilities:[`workflow.local-runtime`,`workflow.thin-runner`],suspensionStrategy:`wait-in-process`,supportsRecovery:!1,materializationModes:[`local-directory`]};function Bt(e){let t=new Set,n;return{conclude:r=>{if(n!==void 0)return;n={evidence:le.parse({source:e.slice(0,x.source),summary:r.slice(0,x.summary),observedAt:new Date().toISOString()})};let i=[...t];t.clear();for(let e of i)try{e(n)}catch(e){console.error(`[PiscinaThinWorkflowProvider] Infrastructure-conclusion observer failed:`,e)}},observe:e=>n===void 0?(t.add(e),()=>t.delete(e)):(e(n),()=>void 0)}}var Vt=class{executionAttemptId;controller;detachCallerAbort;infrastructure;revokeBusIdentity;constructor(e,t,n,r,i){this.executionAttemptId=e,this.controller=t,this.detachCallerAbort=n,this.infrastructure=r,this.revokeBusIdentity=i}cancel(e){return this.controller.abort(e??`Worker cancelled`),this.detachCallerAbort(),Promise.resolve()}terminate(){return this.controller.abort(`Worker terminated`),this.detachCallerAbort(),this.revokeBusIdentity(),Promise.resolve()}release(){return this.detachCallerAbort(),this.revokeBusIdentity(),Promise.resolve()}observeInfrastructureConclusion(e){return this.infrastructure.observe(e)}},Ht=class{options;environment=`piscina`;allocationLifetime=`provisioner-process-bound`;baseCapabilities;constructor(e){this.options=e,this.baseCapabilities=me.parse({...zt,...e.baseCapabilities,suspensionStrategy:e.baseCapabilities?.suspensionStrategy??zt.suspensionStrategy,supportsRecovery:!1})}get id(){return this.options.id}get displayName(){return this.options.displayName}async provision(e,t){t.throwIfAborted();let n=new AbortController,r=Bt(this.id),i=()=>{n.abort(t.reason)};t.addEventListener(`abort`,i,{once:!0});let a=()=>t.removeEventListener(`abort`,i),o;try{let{executionAttemptId:i,executionId:s,workerConfig:c}=e;if(!c.busUrl)throw Error(`PiscinaThinWorkflowProvider requires a bus URL to provision an execution attempt (executionAttemptId=${i}, executionId=${s})`);let u=this.buildAllocationRef(i),d=l({executionAttemptId:i,executionId:s});o=d.cleanup;let f=new Vt(i,n,a,r,d.cleanup);t.throwIfAborted();let p=this.options.runner.runWithReadiness({...c,busAuth:{kind:`hmac`,secret:d.secret}},n.signal,e.workerManifest,{executionAttemptId:i,bootstrapDeadlineAt:e.bootstrapDeadlineAt});return p.ready.then(()=>this.submitOutcomeOnSettlement(p.result,s,i,c.workflowId,r.conclude),e=>{n.abort(e),p.result.catch(()=>void 0),r.conclude(`Piscina worker for attempt '${i}' was refused before its workflow run was admitted: `+(e instanceof Error?e.message:String(e)))}),{kind:`allocated`,allocationRef:u,handle:f}}catch(e){throw n.abort(e),a(),o?.(),e}}async submitOutcomeOnSettlement(e,t,n,r,i){let a;try{a=await e}catch(e){a={executionId:t,workflowId:r,status:`failed`,error:e instanceof Error?e.message:String(e)}}try{let e={...Rt,...this.options.outcomeRetry};await It(this.options.bus,{executionAttemptId:n,executionId:t,result:a},{retry:e})}catch(e){e instanceof q?console.error(`[PiscinaThinWorkflowProvider] Outcome rejected for execution '${t}' attempt '${n}' (decision=${e.decision}):`,e):console.error(`[PiscinaThinWorkflowProvider] Failed to submit outcome for execution '${t}' attempt '${n}':`,e),i(`Piscina worker for attempt '${n}' ended without an acknowledged outcome because outcome submission could not be completed`)}}buildAllocationRef(e){let t={version:fe,providerId:this.id,providerData:{executionAttemptId:e,allocatedAt:Date.now()}};return pe.parse(t)}};const Ut=[Le,Pe,Ie];function Wt(e){let t;return()=>(t??=(async()=>{let t=[];for(let n of[...e].reverse())try{await n()}catch(e){t.push(e)}if(t.length===1)throw t[0];if(t.length>1)throw AggregateError(t,`Isolated workflow runtime shutdown reported errors`)})(),t)}function Gt(e,t,n){return O({bus:e,currentMachineId:n,resolveLiveAdapterId:e=>t.getExtensionService(w)?.resolveLiveAdapterId(e),resolveLiveAdapterIdentity:e=>t.getExtensionService(w)?.resolveLiveAdapterIdentity(e),listLiveAdapterIdentities:()=>t.getExtensionService(w)?.getLiveAdapterIdentities()??[]})}async function Kt(e){let t=_();t.registerNamespaces([...ue,...b]);let{context:n}=e,r=new be(t,{surface:`headless`,extensionContextBase:{cwd:n.cwd,platform:n.platform,homedir:n.homedir,makaioHome:n.makaioHome,username:n.username,machineId:n.machineId,tryImport:A}}),i,a=[()=>t.disconnect()],o=Wt(a);try{await e.connectAuthority(t);let s=[...e.contributedPackages,...await e.loadContributedPackages?.(t)??[]],{adapterSubsystemPackage:c}=D({coordinator:r,configRepository:e.configRepository,platformDefaults:{cwd:n.cwd},runtimeSnapshotHandlerPriority:1,runtimeDefinitionHandlerPriority:1,...e.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:e.prepareAuthRuntime}}),l=Be({definitions:s.flatMap(e=>e.clients??[]),binaryResolutionPolicy:`global-only`});r.registerContributionProcessor(Ne());let u=[...Ut,c,je,...L(s)?[Fe]:[],Me(1),Re,N,l,...Ue(s)];r.load(u),a.push(...R(u,t,r)),a.push(()=>r.shutdown()),await r.startAll(),i=Gt(t,r,n.machineId),a.push(()=>{i?.cleanup(),i=void 0});let d=r.getExtensionService(Ae);if(d===void 0)throw Error(`Isolated workflow tool registry did not start.`);for(let t of e.toolsets)await d.register(t);return await t.emit(xe.ready,{machineId:n.machineId}),{bus:t,coordinator:r,machineId:n.machineId,shutdown:o}}catch(e){throw await o().catch(()=>void 0),e}}function Y(e,t){try{process.kill(-e,t)}catch(e){if(e.code!==`ESRCH`)throw e}}async function qt(e,t){try{process.kill(-e,0)}catch(e){if(e.code===`ESRCH`)return!1;throw e}let n;try{n=await Jt(t)}catch{return!0}let r=!1;for(let t of n.trim().split(`
2
- `)){let[n,i,a]=t.trim().split(/\s+/);if(n===``||i===void 0||a!==void 0||!/^\d+$/.test(n)||i===``||Number(n)===e&&(r=!0,!i.startsWith(`Z`)))return!0}return!r}function Jt(e){return new Promise((t,n)=>{u(`ps`,[`-A`,`-o`,`pgid=,stat=`],{timeout:e,maxBuffer:1024*1024},(e,r)=>{if(e!==null){n(e);return}t(r)})})}async function Yt(e){if(e===void 0)return!0;try{Y(e,`SIGKILL`);let t=Date.now()+2e3;for(;Date.now()<t;){let n=t-Date.now();if(n<=0)break;if(!await qt(e,Math.min(1e3,n)))return!0;await et(20)}}catch{}return!1}async function Xt(e){if(e.signal?.aborted)return{status:`cancelled`,exitCode:null};if(process.platform===`win32`)return{status:`spawn-failed`,exitCode:null,message:`Setup process groups require a POSIX host`};try{return await Zt(e)}catch{return{status:`spawn-failed`,exitCode:null,message:`Could not start the setup command`}}}function Zt(e){return new Promise(t=>{let n=d(e.recipe.command,e.recipe.args,{cwd:e.workspaceRoot,env:{...process.env,...e.recipe.env,...e.env},shell:!1,detached:!0,stdio:`ignore`}),r,i,a=e=>{if(r===void 0&&(r=e,n.pid!==void 0))try{Y(n.pid,`SIGTERM`),i=setTimeout(()=>{try{n.pid!==void 0&&Y(n.pid,`SIGKILL`)}catch{r=`stop-failed`}},200)}catch{r=`stop-failed`}},o=()=>a(`cancelled`),s=setTimeout(()=>a(`timed-out`),e.recipe.timeoutMs);e.signal?.addEventListener(`abort`,o,{once:!0}),e.signal?.aborted&&o(),n.once(`error`,()=>{r=`spawn-failed`}),n.once(`close`,a=>{clearTimeout(s),clearTimeout(i),e.signal?.removeEventListener(`abort`,o),Yt(n.pid).then(e=>{t({status:e?r??(a===0?`completed`:`failed`):`stop-failed`,exitCode:a})})})})}async function Qt(e,t,n){if(m.isAbsolute(t)||t.includes(`\\`)||t.split(`/`).includes(`..`))throw Error(`Source root must be workspace-relative`);let r=e;for(let i of t.split(`/`).filter(e=>e!==``&&e!==`.`))if(r=m.join(r,i),V(r,e,`Source root`),await H(r,e,`Source root`,e),n&&await f.mkdir(r).catch(e=>{if(e.code!==`EEXIST`)throw e}),!(await f.stat(r)).isDirectory())throw Error(`Source root must be a directory`);return H(r,e,`Source root`,e)}async function $t(e){let{requirement:t}=e,n=m.resolve(e.workspaceRoot);if(!m.isAbsolute(e.workspaceRoot)||n===m.parse(n).root)throw Error(`Workspace root must be an absolute, non-filesystem-root directory`);if(t.sourceRoots.length>1)throw Error(`Multiple source roots are not implemented`);if(t.sourceRoots.some(e=>e.source!==void 0))throw Error(`Source acquisition is not implemented`);if(t.provisioning===`create`&&await f.mkdir(n),!(await f.lstat(n)).isDirectory())throw Error(`Workspace root must be a directory, not a symlink`);let r=await f.realpath(n),i=[];for(let e of t.sourceRoots)i.push({id:e.id,path:await Qt(r,e.path,t.provisioning===`create`)});return en(t,{workspaceRoot:r,sourceRoots:i})}function en(e,t){let n=t.workspaceRoot,r=e.custody,i=!1,a=!0,o;return{binding:t,async runSetup(t={}){if(o!==void 0||i||!a)throw Error(`Workspace setup is unavailable`);if(t.signal?.aborted)return{status:`cancelled`,exitCode:null};i=!0;try{for(let[r,i]of e.setup.entries()){let e=await Xt({...t,recipe:i,workspaceRoot:n});if(a=e.status!==`stop-failed`,e.status!==`completed`)return{...e,commandIndex:r}}return{status:`completed`,exitCode:0}}finally{i=!1}},release(){return i||!a?Promise.reject(Error(`Workspace commands have not stopped`)):(o??=r===`external`?Promise.resolve():f.rm(n,{recursive:!0,force:!0}),o)}}}async function tn(e,t,n,r){let i=v[`instruction.get`].response.parse(await e.request(y.instruction.get,{executionAttemptId:t,runtimeGeneration:n},{signal:r}));if(i.decision===`found`)return i.instruction;throw Error(`Attempt instruction read refused: ${i.refusalReason}`)}async function nn(e,t,n,r){let{executionAttemptId:i,runtimeGeneration:a}=t,o=v[`operation.admit`].response.parse(await Pt(async t=>await e.request(y.operation.admit,{executionAttemptId:i,runtimeGeneration:a,operationKind:n,admissionKey:r},{timeout:t}),{retry:t.retry,reconnect:t.reconnect}));if(o.decision===`refused`||o.operationId===void 0)throw Error(`Attempt ${n} admission refused: ${o.refusalReason??`missing-operation-id`}`);return o.operationId}function X(e){return(e instanceof Error?e.message:String(e)).slice(0,8192)||`Local execution failed without a diagnostic message`}function rn(e,t){return e.find(e=>e.kind===t.workload.kind&&e.version===t.workload.version)}function an(e){return{signal:e??new AbortController().signal,release:()=>{}}}function Z(e,t){return e instanceof ae?oe(e,t):t?.aborted===!0&&(e===t.reason||e instanceof DOMException&&e.name===`AbortError`)}async function Q(e,t,n,r,i,a){let o=await Lt(e,{executionAttemptId:t.executionAttemptId,runtimeGeneration:t.runtimeGeneration,...i===void 0?{}:{operationId:i},outcome:r},{retry:t.retry,reconnect:t.reconnect});if(a!==void 0&&n!==void 0&&r.kind===`workload-result`&&n.preservation.required.length===0)try{await a.release()}catch{console.warn(`[makaio-worker] Acknowledged workspace cleanup failed.`)}return{outcome:r,decision:o}}async function on(e,t,n,r){let i=v[`operation.report`].response.parse(await Pt(async i=>await e.request(y.operation.report,{executionAttemptId:t.executionAttemptId,runtimeGeneration:t.runtimeGeneration,operationId:n,result:{kind:`workspace-prepared`,binding:r.binding}},{timeout:i}),{retry:t.retry,reconnect:t.reconnect}));return i.decision===`refused`?void 0:i.binding}function sn(e){if(e.status!==`completed`)return e.status===`cancelled`?{kind:`cancelled`}:e.status===`stop-failed`?{kind:`technical-failure`,stage:`workspace-preparation`,message:`Workspace setup stop-failed`}:{kind:`technical-failure`,stage:`workspace-preparation`,message:`Workspace setup ${e.status}`}}async function cn(e,t,n,r){if(r.aborted)return await Q(e,t,n,{kind:`cancelled`},void 0,void 0);let i=await nn(e,t,`workspace-preparation`,`workspace-preparation:${n.id}:${t.runtimeGeneration}`);if(r.aborted)return await Q(e,t,n,{kind:`cancelled`},i,void 0);let a,o;try{if(t.workspaceRoot===void 0)throw Error(`Workspace preparation requires an explicit local root`);let e=await(t.preparation??{prepare:$t}).prepare({requirement:n.workspace,workspaceRoot:t.workspaceRoot});a=e,o=await e.runSetup({signal:r,env:t.setupEnv})}catch(o){return await Q(e,t,n,Z(o,r)?{kind:`cancelled`}:{kind:`technical-failure`,stage:`workspace-preparation`,message:X(o)},i,a)}let s=sn(o);if(s!==void 0)return await Q(e,t,n,s,i,a);if(r.aborted)return await Q(e,t,n,{kind:`cancelled`},i,a);let c=await on(e,t,i,a);return c===void 0?await Q(e,t,n,{kind:`technical-failure`,stage:`workspace-preparation`,message:`Workspace preparation report refused by the Authority`},i,a):r.aborted?await Q(e,t,n,{kind:`cancelled`},void 0,a):{handle:a,binding:c}}async function ln(e,t,n,r,i){if(i.signal.aborted)return await Q(e,t,n,{kind:`cancelled`},void 0,void 0);let a,o;if(n.workspace!==void 0){let r=await cn(e,t,n,i.signal);if(`outcome`in r)return r;a=r.handle,o=r.binding}if(i.signal.aborted)return await Q(e,t,n,{kind:`cancelled`},void 0,a);let s=await nn(e,t,`workload-invocation`,`workload-invocation:${n.id}:${t.runtimeGeneration}`);if(i.signal.aborted)return await Q(e,t,n,{kind:`cancelled`},s,a);let c;try{c={kind:`workload-result`,result:de.parse(await r.invoke({instruction:n,...o===void 0?{}:{workspace:o},signal:i.signal}))}}catch(e){c=Z(e,i.signal)?{kind:`cancelled`}:{kind:`technical-failure`,stage:`workload-invocation`,message:X(e)}}return await Q(e,t,n,c,s,a)}async function $(e,t){let n;try{n=await tn(e,t.executionAttemptId,t.runtimeGeneration,t.signal)}catch(n){if(oe(n,t.signal))return await Q(e,t,void 0,{kind:`cancelled`},void 0,void 0);throw n}let r=rn(t.adapters,n);if(r===void 0)return await Q(e,t,n,{kind:`technical-failure`,stage:`startup`,message:`Required adapter '${n.workload.kind}' version '${n.workload.version}' is unavailable`},void 0,void 0);let i;try{i=await(r.bindControl?.({instruction:n,signal:t.signal})??an(t.signal))}catch(r){let i=Z(r,t.signal)?{kind:`cancelled`}:{kind:`technical-failure`,stage:`startup`,message:X(r)};return await Q(e,t,n,i,void 0,void 0)}try{return await ln(e,t,n,r,i)}finally{try{i.release()}catch{console.warn(`[makaio-worker] Workload control release failed.`)}}}async function un(e,t,n,r,i){let a=he[`runtime.inputs.get`].response.parse(await e.request(S.runtime.inputs.get,{executionAttemptId:t},{signal:i}));if(a.runtimeInputs===null)throw Error(`Selected Worker Runtime inputs are unavailable`);return ge.parse({...n,...a.runtimeInputs,createdAt:0,env:r})}function dn(e,t){let n=(e,t)=>{let n=re(e,t);return n===``||!te(n)&&n!==`..`&&!n.startsWith(`../`)&&!n.startsWith(`..\\`)};return n(e,t)||n(t,e)}async function fn(t,n,r,i){let a=await t.loadContributions(r,i);i.throwIfAborted();let o=e();return await Kt({connectAuthority:e=>t.connectBus(e,n,i),contributedPackages:[...a],configRepository:t.configRepository,context:{cwd:r.workspaceRoot,platform:r.platform,homedir:o,makaioHome:o,username:`workflow-worker`,machineId:`headless-worker-${t.executionAttemptId}`},toolsets:[...t.toolsets],...t.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:t.prepareAuthRuntime}})}function pn(e,t,n){let r={...e.workflowEnv},i,a=!0;return{adapter:{kind:qe,version:Je,async bindControl({instruction:t,signal:r}){let i=T(t);if(i.executionId!==e.executionId)throw Error(`Workflow instruction execution identity mismatch`);let a=new AbortController,o=n.on(ye(i.cancelSubject),()=>a.abort());try{return await se(o),{signal:AbortSignal.any([...r===void 0?[]:[r],a.signal]),release:o}}catch(e){throw o(),e}},async invoke({instruction:o,workspace:s,signal:c}){let l=T(o);a=o.preservation.required.length!==0;let u=c??new AbortController().signal,d;try{u.throwIfAborted();let a=await un(n,e.executionAttemptId,l,r,u),o=await e.materialize(a,u);(s===void 0||!dn(o.context.workspaceRoot,s.workspaceRoot))&&(i=o.cleanup);let c=mn(o.context,s);return u.throwIfAborted(),d=await fn(e,t,c,u),u.throwIfAborted(),await e.execute(d.bus,a,c,u)}finally{await d?.shutdown()}}},async releaseExecutable(e){e===void 0||a||e.outcome.kind===`workload-result`&&(e.decision!==`accepted`&&e.decision!==`duplicate`||await i?.().catch(()=>void 0))}}}function mn(e,t){return t===void 0?e:{...e,workspaceRoot:t.workspaceRoot}}async function hn(e,t){if(!(t.outcome.kind!==`workload-result`||e.onPostCommit===void 0))try{let n=_e.parse(t.outcome.result);await e.onPostCommit(n,t.decision)}catch{}}async function gn(e,t){t.throwIfAborted();let n={...e.workflowEnv},i=g(),a=await c(e.bootstrapDeadlineAt,t,t=>e.bootstrap(t)),{connection:s,endpoint:l}=await o({executionAttemptId:e.executionAttemptId,runtimeIncarnationId:i,bootstrapDeadlineAt:e.bootstrapDeadlineAt,signal:t,createConnection:()=>_n(e,a)}),u=s.bus,d=pn({...e,workflowEnv:n},a,u),f;try{let n=await r(u,{executionAttemptId:e.executionAttemptId,runtimeIncarnationId:i,signal:t});return l.bindGeneration(n),f=await $(u,{executionAttemptId:e.executionAttemptId,runtimeGeneration:n,workspaceRoot:e.workspaceRoot,setupEnv:e.setupEnv,adapters:[d.adapter],signal:t,retry:e.outcomeRetry,reconnect:()=>u.reconnect()}),await hn(e,f),f}finally{try{await d.releaseExecutable(f)}finally{l.cleanup(),await s.close()}}}function _n(e,t){let n=_();return n.registerNamespaces([...ue,...b]),{bus:n,async connect(r){try{await e.connectBus(n,t,r),r.throwIfAborted()}catch(e){throw n.disconnect(),e}},close:()=>n.disconnect()}}export{R as A,xt as C,P as D,ct as E,k as F,A as I,O as L,ut as M,pt as N,lt as O,N as P,D as R,ht as S,bt as T,B as _,J as a,G as b,q as c,Ot as d,Dt as f,St as g,Ct as h,Ht as i,F as j,mt as k,Lt as l,wt as m,$ as n,At as o,Tt as p,Kt as r,kt as s,gn as t,It as u,V as v,U as w,K as x,H as y,E as z};
1
+ import{resolveMakaioHome as e}from"./runtime-node/makaio-config.mjs";import{t}from"./extension-package-provenance-aYrZuS4W.mjs";import{b as n,c as r,g as i,l as a,n as o,u as s,v as c}from"./bootstrap-start-client-DrvofWwi.mjs";import{mintOrRotateWorkflowExecutionBusSecret as l}from"./runtime-node/workflow-execution-bus-access.mjs";import{execFile as u,spawn as d}from"node:child_process";import*as f from"node:fs/promises";import{access as p}from"node:fs/promises";import*as m from"node:path";import{basename as ee,isAbsolute as te,join as ne,relative as re}from"node:path";import*as h from"node:crypto";import{randomUUID as g}from"node:crypto";import{constants as ie}from"node:fs";import{BusAbortError as ae,createBusInstance as _,isRequestCancellation as oe,waitForSubscriptionPropagation as se}from"@makaio/framework/bus";import{AdapterSubjects as ce,BoundedRecoveryEvidenceSchema as le,ExecutionAttemptSchemas as v,ExecutionAttemptSubjects as y,FrameworkContractNamespaces as ue,FrameworkStorageNamespaces as b,JsonValueSchema as de,PROVIDER_ALLOCATION_REF_VERSION as fe,ProviderAllocationRefSchema as pe,RECOVERY_EVIDENCE_LIMITS as x,WorkerCapabilitiesSchema as me,WorkerSchemas as he,WorkerSubjects as S,WorkflowRunContextSchema as ge,WorkflowRunResultSchema as _e,WorkflowWorkerConfigSchema as ve,createWorkflowCancelSubject as ye}from"@makaio/framework/contracts";import{ExtensionCoordinator as be,KernelSubjects as xe,coalesceExtensionOverrides as Se,filterEligibleExtensions as Ce}from"@makaio/framework/kernel";import{BaseService as we}from"@makaio/framework/service-base";import{AdapterRuntimeSubjects as Te,registerAdapterRuntimeIdentityHandlers as Ee}from"@makaio/framework/services/adapter-runtime";import{CLIDetectionNamespace as De,CLIDetectionSubjects as Oe}from"@makaio/framework/services/cli-detection/namespace";import{SessionOrchestratorToken as ke,ToolRegistryToken as Ae,canonicalModelPackage as je,createSubagentServicePackage as Me,createToolContributionProcessor as Ne,frameworkCorePackages as C,sessionBridgePackage as Pe,sessionOrchestratorPackage as Fe,sessionPackage as Ie,sessionStoragePackage as Le,toolRegistryPackage as Re}from"@makaio/framework/services";import{AdapterSubsystemSubjects as ze}from"@makaio/framework/services/adapter-subsystem";import{createClientsCorePackage as Be}from"@makaio/framework/clients";import{AdapterSubsystemToken as w,createAdapterSubsystemContributionProcessor as Ve,createAdapterSubsystemPackage as He,orderAfterAdapterSubsystem as Ue}from"@makaio/framework/adapter-subsystem";import{execa as We}from"execa";import Ge from"piscina";import{ExecutionAttemptAuthority as Ke,WORKFLOW_WORKLOAD_KIND as qe,WORKFLOW_WORKLOAD_VERSION as Je,WorkflowStorageSubjects as Ye,buildWorkflowAttemptInstruction as Xe,parseWorkflowAttemptInstruction as T,runAuthorityDispatchedAttempt as Ze,toCommittedWorkflowRunnerResult as Qe}from"@makaio/framework/workflow-engine";import{runWorkflowOrchestrator as $e}from"@makaio/framework/workflow-engine/workflow-orchestrator";import{setTimeout as et}from"node:timers/promises";function E(e){return e.on(ce.getCapabilities,async t=>{let{adapterName:n,adapterId:r}=t.payload;if(r){await t.next();return}if(n){let r=await e.requestOptional(Te.resolveId,{adapterName:n}),i=r.handled?r.data.adapterId:void 0;i&&(t.payload.adapterId=i)}await t.next()},{priority:20})}function D(e){let{coordinator:t,configRepository:n,platformDefaults:r,prepareAuthRuntime:i,runtimeSnapshotHandlerPriority:a,runtimeDefinitionHandlerPriority:o}=e,s=He({configRepository:n,coordinator:t,platformDefaults:r,...i!==void 0&&{prepareAuthRuntime:i},...a!==void 0&&{runtimeSnapshotHandlerPriority:a},...o!==void 0&&{runtimeDefinitionHandlerPriority:o}});return t.registerContributionProcessor(Ve({getAdapterSubsystemService:()=>t.getExtensionService(w)})),{adapterSubsystemPackage:s}}function O(e){let{bus:t,currentMachineId:n}=e,r=Ee(t,{currentMachineId:n,listKnownAdapterNames:e.listKnownAdapterNames??(async()=>{let{configs:e}=await t.request(ze.listAdapterConfigs,{});return e.map(e=>e.name)}),...e.resolveLiveAdapterId!==void 0&&{resolveLiveAdapterId:e.resolveLiveAdapterId},...e.resolveLiveAdapterIdentity!==void 0&&{resolveLiveAdapterIdentity:e.resolveLiveAdapterIdentity},...e.listLiveAdapterIdentities!==void 0&&{listLiveAdapterIdentities:e.listLiveAdapterIdentities}}),i=E(t);return{cleanup:()=>{r.cleanup(),i()}}}function k(e,t){if(!(e instanceof Error))return!1;let{rootPackageName:n,subpath:r}=tt(t),i=(r===void 0?[t]:[t,n]).flatMap(e=>[`Cannot find package '${e}'`,`Cannot find module '${e}'`,`Cannot find package "${e}"`,`Cannot find module "${e}"`]),a=e;return(a.code===`ERR_MODULE_NOT_FOUND`||a.code===`MODULE_NOT_FOUND`)&&i.some(t=>e.message.includes(t))||a.code===`ERR_PACKAGE_PATH_NOT_EXPORTED`&&r!==void 0&&e.message.includes(`Package subpath '${r}' is not defined by "exports"`)&&nt(e.message,n)?!0:i.some(t=>e.message.includes(t))}async function A(e){try{return await import(e)}catch(t){if(k(t,e))return null;throw t}}function tt(e){let t=e.split(`/`);return e.startsWith(`@`)?{rootPackageName:t.slice(0,2).join(`/`),subpath:t.length>2?`./${t.slice(2).join(`/`)}`:void 0}:{rootPackageName:t[0]??e,subpath:t.length>1?`./${t.slice(1).join(`/`)}`:void 0}}function nt(e,t){let n=t,r=t.replaceAll(`/`,`\\`);return e.includes(`/${n}/package.json`)||e.includes(`\\${r}\\package.json`)}async function j(e,t=process.env,n=process.platform){let r=t[Object.keys(t).find(e=>e.toUpperCase()===`PATH`)??`PATH`]??``,i=(t.PATHEXT??`.EXE;.CMD;.BAT;.COM`).split(`;`).filter(Boolean),a=n===`win32`?m.extname(e)===``?i:[``,...i]:[``];for(let t of r.split(m.delimiter)){let n=t.replace(/^"|"$/gu,``),r=m.resolve(n||process.cwd());for(let t of a){let n=m.join(r,`${e}${t}`);try{return await p(n,ie.X_OK),n}catch{}}}}async function M(e,t=5e3,n=1e3){let{stdout:r}=await We(e,[`--version`],{forceKillAfterDelay:n,timeout:t});return r}function rt(e){return e.match(/(\d+\.\d+\.\d+)/u)?.[1]??`unknown`}async function it(e,t=j,n=M){try{let r=await t(e);if(r===void 0)return{binary:e,found:!1};let i=await n(r);return i.length===0?{binary:e,found:!1}:{binary:e,found:!0,path:r,version:rt(i)}}catch{return{binary:e,found:!1}}}async function at(e,t=j,n=M){return Promise.all(e.map(e=>it(e,t,n)))}var ot=class extends we{constructor(e){super(e)}onInit(){this.registerHandler(Oe.scan,async e=>{let t=await at(e.payload.binaries);e.setResult({results:t})})}};const N={name:`makaio.cli-detection`,displayName:`CLI Detection`,version:`0.1.0`,critical:!0,surface:`any`,namespaces:[De],create:e=>new ot(e.bus)};function P(e,t){e.push(...st(t))}function st(e){return e===void 0?[]:typeof e==`function`?[e]:[...e]}function ct(e,t=[]){let n=new Set([e]),r=new Set,i=new Map;for(let e of t)typeof e==`string`?n.add(e):(r.add(e.id),e.version!==void 0&&i.set(e.id,e.version));return{hosts:n,capabilities:r,...i.size>0?{capabilityVersions:i}:{}}}function lt(e=[]){return e.some(e=>typeof e==`string`&&e===`node`)?e:[`node`,...e]}function F(e){return Se(Ce(dt(e.packages,e.configProvider),e.surface,e.runtimeEnvironment))}function ut(e,n){let r=F(n),i=new Set(r.map(t));return e.filter(({ownerPackage:e})=>i.has(e)).map(({package:e})=>e)}function dt(e,t){return t?e.filter(e=>t.loadEnabled(e.name)!==!1):e}function I(e,t){return e.filter(e=>e.runtimeOwnership?.[t]===!0).map(e=>e.name)}function ft(e,t){let n=I(e,t);if(n.length>1)throw Error(`Multiple extensions own runtimeOwnership.${t}: ${n.join(`, `)}`)}function L(e){return ft(e,`sessionOrchestrator`),I(e,`sessionOrchestrator`).length===0}function pt(e){return e===!0||L(e)?C:C.filter(e=>e.name!==ke.name)}function R(e,t,n){let r=[];try{for(let i of e){let e=i.runtimeBoot;e&&P(r,e.configure({bus:t,registerContributionProcessor:e=>{r.push(n.registerContributionProcessor(e))},forEachActiveExtension:e=>{n.forEachActiveExtension(e)}}))}}catch(e){let t=[];for(let e of[...r].reverse())try{e()}catch(e){t.push(e)}throw t.length>0?AggregateError([e,...t],`Extension boot contribution failed and rollback cleanup reported additional errors`,{cause:e}):e}return r}function mt(){let e=process.env.MAKAIO_SKIP_EXTENSIONS;if(!e)return new Set;let t=e.split(`,`).map(e=>e.trim()).filter(Boolean);return new Set(t)}var z=class{pool;constructor(e){this.pool=new Ge({filename:e.workerEntry,maxThreads:e.maxConcurrency??4,idleTimeout:e.idleTimeoutMs??3e4})}async run(e,t,n){return this.pool.run(e,{signal:t,transferList:n})}onMessage(e){return this.pool.on(`message`,e),()=>this.pool.off(`message`,e)}async dispose(){await this.pool.destroy()}},B=class extends Error{code;constructor(e,t){super(e),this.code=t,this.name=`MaterializationError`}};function V(e,t,n){let r=m.resolve(t)+m.sep,i=m.resolve(e);if(i!==m.resolve(t)&&!i.startsWith(r))throw new B(`${n} escapes allowed root: ${e} is not within ${t}`,`containment-violation`)}async function H(e,t,n,r){let i=r??await f.realpath(t),a;try{a=await f.realpath(e)}catch{return e}let o=i+m.sep;if(a!==i&&!a.startsWith(o))throw new B(`${n} escapes allowed root via symlink: real path ${a} is not within ${i}`,`symlink-escape`);return a}function U(e){let t=e.indexOf(`-`);if(t===-1)throw new B(`Invalid SRI integrity format: ${e}`,`contribution-integrity-mismatch`);return{algorithm:e.slice(0,t),digest:e.slice(t+1)}}async function ht(e,t){let n=await f.readFile(e);return h.createHash(t).update(n).digest(`base64`)}const W=new Set([`.git`,`node_modules`]);function gt(e){return W.has(e.toLowerCase())}async function _t(e,t){let n=t.toLowerCase();if(!W.has(n))return!1;if(t===n)return!0;try{let[r,i]=await Promise.all([f.lstat(m.join(e,t)),f.lstat(m.join(e,n))]);return r.dev===i.dev&&r.ino===i.ino}catch(e){if(e.code===`ENOENT`)return!1;throw e}}const vt=W,yt=new Set([`.DS_Store`]);async function G(e,t){let n=h.createHash(t),r=[];async function i(t){let n=await f.readdir(t,{withFileTypes:!0});for(let a of n){let n=m.join(t,a.name);if(a.isSymbolicLink())throw new B(`Contribution package contains a symbolic link: ${m.relative(e,n)}`,`symlink-escape`);if(a.isDirectory()){vt.has(a.name)||await i(n);continue}if(a.isFile()){yt.has(a.name)||r.push(m.relative(e,n));continue}throw new B(`Contribution package contains an unsupported filesystem entry: ${m.relative(e,n)}`,`contribution-integrity-mismatch`)}}await i(e),r.sort();for(let t of r)n.update(t.split(m.sep).join(`/`)),n.update(`\0`),n.update(await f.readFile(m.join(e,t))),n.update(`\0`);return`${t}-${n.digest(`base64`)}`}async function K(e,t=`sha256`){let n=h.createHash(t),r=[];async function i(t){let n=await f.readdir(t,{withFileTypes:!0});for(let a of n){let n=m.join(t,a.name);if(!await _t(t,a.name)){if(a.isDirectory()){await i(n);continue}if(a.isFile()){r.push(m.relative(e,n));continue}throw a.isSymbolicLink()?new B(`Workspace root contains a symbolic link: ${m.relative(e,n)}`,`symlink-escape`):new B(`Workspace root contains an unsupported filesystem entry: ${m.relative(e,n)}`,`unsupported-filesystem-entry`)}}}await i(e),r.sort();for(let t of r){n.update(t),n.update(`\0`);let r=await f.readFile(m.join(e,t));n.update(r),n.update(`\0`)}return`${t}-${n.digest(`base64`)}`}async function bt(e,t,n){let r=m.join(t,`node_modules`,e.packageName);V(r,t,`Contribution package directory`),await H(r,t,`Contribution package directory`,n);let i=m.join(r,`package.json`),a;try{a=await f.readFile(i,`utf-8`)}catch{throw new B(`Contribution package not found: ${e.packageName} (expected at ${r})`,`contribution-missing`)}let o=JSON.parse(a);if(o.name!==e.packageName)throw new B(`Contribution identity mismatch: expected ${e.packageName}, found ${o.name??`<none>`}`,`contribution-missing`);if(o.version!==e.version)throw new B(`Contribution version mismatch for ${e.packageName}: expected ${e.version}, found ${o.version??`<none>`}`,`contribution-version-mismatch`);let s=m.join(r,e.entrypoint);V(s,r,`Contribution entrypoint`),await H(s,t,`Contribution entrypoint`,n);try{await f.access(s)}catch{throw new B(`Contribution entrypoint not found for ${e.packageName}: ${e.entrypoint}`,`contribution-entrypoint-mismatch`)}let{algorithm:c}=U(e.integrity),l;try{l=await G(r,c)}catch(t){if(t instanceof B)throw t;let n=typeof t==`object`&&t&&`code`in t&&typeof t.code==`string`?t.code:void 0;throw n!==void 0&&!n.startsWith(`ERR_`)?new B(`Contribution package cannot be read for ${e.packageName}`,`contribution-entrypoint-mismatch`):t}if(l!==e.integrity)throw new B(`Contribution integrity mismatch for ${e.packageName}: expected ${e.integrity}, computed ${l}`,`contribution-integrity-mismatch`);return s}async function xt(e,t,n){let r=await n.resolveWorkspaceRoot(e.workspaceId);if(r===void 0)throw new B(`Unknown workspace ID: ${e.workspaceId}`,`unknown-workspace`);try{if(!(await f.stat(r)).isDirectory())throw new B(`Workspace root is not a directory: ${r}`,`containment-violation`)}catch(e){throw e instanceof B?e:new B(`Workspace root does not exist: ${r}`,`containment-violation`)}let i=await f.realpath(r),a=m.resolve(r,e.sourcePath);if(V(a,r,`Source path`),m.relative(r,a).split(m.sep).some(gt))throw new B(`Workflow source path selects excluded workspace content: ${e.sourcePath}`,`source-path-mismatch`);await H(a,r,`Source path`,i);let o=await K(r);if(o!==e.rootDigest)throw new B(`Workspace root digest mismatch: expected ${e.rootDigest}, computed ${o}`,`digest-mismatch`);try{await f.access(a)}catch{throw new B(`Workflow source file not found: ${a}`,`source-missing`)}return{workspaceRoot:r,sourcePath:a,contributionEntrypoints:await Promise.all(t.map(e=>bt(e,r,i))),platform:process.platform,arch:process.arch}}var St=class{options;manifest;pool;constructor(e){this.options=e,this.manifest=e.manifest}async run(e,t,n){this.pool??=new z(this.options);let r=n??this.manifest,i=await this.materializeTask(e,r,t);return{state:`uncommitted`,result:await this.pool.run(i,t)}}runWithReadiness(e,t,r,a){this.pool??=new z(this.options);let o=this.pool,s,c=!1,l,u=new Promise((t,r)=>{l=r,s=o.onMessage(r=>{n(r)&&r.executionAttemptId===a.executionAttemptId&&(r.executionId!==e.executionId||r.cancelSubject!==e.cancelSubject||(c=!0,s?.(),t(r)))})}),d=r??this.manifest,f=i(a.bootstrapDeadlineAt,t,async(t,n)=>{let r=await this.materializeTask(e,d,n);return o.run({...r,kind:`attempt-bound`,executionAttemptId:a.executionAttemptId,bootstrapDeadlineAt:a.bootstrapDeadlineAt,bootstrapPort:t},n,[t])});return f.then(()=>{c||(c=!0,s?.(),l(Error(`Workflow worker completed before ready signal: ${e.executionId}`)))},e=>{c||(c=!0,s?.(),l(e instanceof Error?e:Error(String(e))))}),{result:f,ready:u}}async dispose(){await this.pool?.dispose()}async materializeTask(e,t,n){if(n.throwIfAborted(),!(e.source.kind===`path`||t.contributionRefs.length>0))return{kind:`unbound`,config:e,manifest:t,contributionEntrypoints:[]};let r=e.materializationSpec;if(r?.kind!==`local-directory`)throw Error(`ThinWorkflowPiscinaRunner requires a local-directory materialization spec for path-backed workflows or declared contributions.`);if(this.options.resolveWorkspaceRoot===void 0)throw Error(`ThinWorkflowPiscinaRunner requires a host workspace-root resolver for local-directory materialization.`);let i=await xt(r,t.contributionRefs,{resolveWorkspaceRoot:this.options.resolveWorkspaceRoot});if(n.throwIfAborted(),e.source.kind!==`path`)throw Error(`local-directory materialization requires a path-backed workflow source.`);return{kind:`unbound`,config:{...e,source:{kind:`path`,path:i.sourcePath}},manifest:t,contributionEntrypoints:i.contributionEntrypoints}}};function Ct(e){return e.mode===`source`?ne(e.moduleDir,`workflow-worker`,`worker-entry.ts`):ne(e.moduleDir,`workflow-worker`,`worker-entry.mjs`)}var wt=class{options;terminalAuthority=`authority`;constructor(e){this.options=e}async run(e,t,n,r){let i={...e,terminalAuthority:`authority`},a=n??this.options.manifest,o=this.options.requirements,s=r?.dispatchMetadata;t.throwIfAborted();let c=e.source.kind===`path`?await this.options.readRunContext?.(e.executionId,t):void 0;t.throwIfAborted();let l=Xe({id:g(),revision:`1`,config:e,...c==null?{}:{runContext:c},preservation:{required:[]}});return{state:`authority-committed`,result:Qe(await Ze({authority:this.options.authority,executionId:e.executionId,instruction:l,dispatch:e=>this.options.dispatch({executionAttemptId:e,config:i,...a!==void 0&&{manifest:a},...o!==void 0&&{requirements:o},...s!==void 0&&{metadata:s}},t)}),e)}}},Tt=class{#e;constructor(e){this.#e=e.bus}async run(e,t,n){let r=ve.parse(e),i=await s(r);return{state:`uncommitted`,result:await $e({config:await a(r,i,this.#e,t),loaded:i,bus:this.#e,signal:t})}}};function Et(){return{contributionRefs:[]}}function Dt(e){if(e.workflowRunner?.mode===`worker`&&!e.executionAttemptRepository)throw Error(`Worker dispatch mode requires an ExecutionAttemptRepository. Pass 'executionAttemptRepository' to createNodeWorkflowRunnerPackageOptions when workflowRunner.mode is 'worker'.`);let t;if(e.executionAttemptRepository){let n=e.executionAttemptBootstrapTimeoutMs;if(n===void 0)throw Error(`An ExecutionAttemptRepository requires executionAttemptBootstrapTimeoutMs`);t=new Ke(e.executionAttemptRepository,{bootstrapTimeoutMs:n})}let n=ee(e.runtimeModuleDir)===`src`?`source`:`dist`,r=Ot({moduleDir:e.runtimeModuleDir,defaultWorkerEntryMode:n,runner:e.workflowRunner,bus:e.bus,authority:t});return{...r!==void 0&&{workflowRunner:r},executorConfig:{busUrl:e.busUrl,busAuth:{kind:`none`},platformDefaults:e.platformDefaults,makaioHome:e.makaioHome},...e.executionAttemptRepository!==void 0&&{executionAttemptRepository:e.executionAttemptRepository},...t!==void 0&&{executionAttemptAuthority:t},...e.workflowMaterializationSpecResolvers!==void 0&&{workflowMaterializationSpecResolvers:e.workflowMaterializationSpecResolvers}}}function Ot(e){let{runner:t}=e;if(t)switch(t.mode){case void 0:case`in-process`:if(e.bus===void 0)throw Error(`InProcessWorkflowRunner requires a bus instance. Pass 'bus' to createNodeWorkflowRunner when runner.mode is 'in-process'.`);return new Tt({bus:e.bus});case`worker`:{if(e.authority===void 0)throw Error(`WorkerRunner requires an ExecutionAttemptAuthority. Pass 'authority' to createNodeWorkflowRunner when runner.mode is 'worker'.`);let n=e.bus,r=t.dispatch??(n===void 0?void 0:(e,t)=>n.request(S.dispatch,{executionAttemptId:e.executionAttemptId,config:e.config,manifest:e.manifest,requirements:e.requirements,metadata:e.metadata},{signal:t}));if(r===void 0)throw Error(`WorkerRunner requires either a dispatch function or a bus instance. Pass 'bus' to createNodeWorkflowRunner when runner.mode is 'worker'.`);return new wt({dispatch:r,authority:e.authority,...n!==void 0&&{readRunContext:async(e,t)=>(await n.request(Ye.getRunContext,{executionId:e},{signal:t})).runContext},...t.manifest!==void 0&&{manifest:t.manifest},...t.requirements!==void 0&&{requirements:t.requirements}})}case`piscina`:return new St({workerEntry:t.workerEntry??Ct({moduleDir:e.moduleDir,mode:t.workerEntryMode??e.defaultWorkerEntryMode}),manifest:t.manifest??Et(),...t.resolveWorkspaceRoot!==void 0&&{resolveWorkspaceRoot:t.resolveWorkspaceRoot},maxConcurrency:t.maxConcurrency,idleTimeoutMs:t.idleTimeoutMs})}}const kt=new Set([`accepted`,`duplicate`]);var q=class extends Error{decision;result;reason;constructor(e,t,n=`authority-rejected`){super(`Outcome delivery ${n===`deadline-exceeded`?`deadline exceeded`:`rejected by Authority`} (decision=${e}, executionId=${t.executionId}, status=${t.status})`),this.decision=e,this.result=t,this.reason=n,this.name=`OutcomeDeliveryError`}},J=class extends Error{decision;payload;reason;constructor(e,t,n=`authority-rejected`){super(`Attempt outcome delivery ${n===`deadline-exceeded`?`deadline exceeded`:`rejected by Authority`} (decision=${e}, executionAttemptId=${t.executionAttemptId}, outcome=${t.outcome.kind})`),this.decision=e,this.payload=t,this.reason=n,this.name=`AttemptOutcomeDeliveryError`}},At=class extends Error{reason;constructor(e=`deadline-exceeded`){super(`Authority request delivery deadline exceeded`),this.reason=e,this.name=`AuthorityRequestDeliveryError`}};function jt(e){let t={maxRetries:e?.maxRetries??7,baseDelayMs:e?.baseDelayMs??1e3,maxDelayMs:e?.maxDelayMs??3e4,deadlineMs:e?.deadlineMs??12e4};if(!Number.isSafeInteger(t.maxRetries)||t.maxRetries<0)throw TypeError(`Outcome submission maxRetries must be a non-negative safe integer, got ${t.maxRetries}`);for(let[e,n]of Object.entries({baseDelayMs:t.baseDelayMs,maxDelayMs:t.maxDelayMs,deadlineMs:t.deadlineMs}))if(!Number.isFinite(n)||n<=0)throw TypeError(`Outcome submission ${e} must be a positive finite number, got ${n}`);return t}async function Mt(e,t,n,r){let i=t.baseDelayMs*2**(e-1),a=n-Date.now(),o=Math.min(i,t.maxDelayMs,a);await new Promise(e=>setTimeout(e,o));let s=n-Date.now();if(s<=0)return!1;if(r!==void 0){let e;try{await Promise.race([r(),new Promise(t=>{e=setTimeout(t,s)})])}catch{}finally{e!==void 0&&clearTimeout(e)}}return Date.now()<n}async function Nt(e,t,n,r){let i=jt(n?.retry),a=n?.reconnect,o=Date.now()+i.deadlineMs,s;for(let n=0;n<=i.maxRetries;n++){if(o-Date.now()<=0||n>0&&!await Mt(n,i,o,a))throw t();try{let n=o-Date.now();if(n<=0)throw t();return await e(n)}catch(e){if(r(e))throw e;if(s=e,Date.now()>=o)throw t()}}throw s??t()}async function Pt(e,t){return await Nt(e,()=>new At,t,()=>!1)}async function Ft(e,t,n){return await Nt(async n=>{let r=await e(n);if(kt.has(r))return r;throw t(r)},()=>t(`deadline-exceeded`,`deadline-exceeded`),n,e=>e instanceof q||e instanceof J)}async function It(e,t,n){return await Ft(async n=>(await e.request(S.control.outcome.submit,{executionAttemptId:t.executionAttemptId,executionId:t.executionId,result:t.result},{timeout:n})).decision,(e,n)=>n===void 0?new q(e,t.result):new q(e,t.result,n),n)}async function Lt(e,t,n){return await Ft(async n=>(await e.request(y.outcome.submit,t,{timeout:n})).decision,(e,n)=>n===void 0?new J(e,t):new J(e,t,n),n)}const Rt={maxRetries:3,baseDelayMs:200,maxDelayMs:2e3,deadlineMs:1e4},zt={persistentStorage:!0,customCapabilities:[`workflow.local-runtime`,`workflow.thin-runner`],suspensionStrategy:`wait-in-process`,supportsRecovery:!1,materializationModes:[`local-directory`]};function Bt(e){let t=new Set,n;return{conclude:r=>{if(n!==void 0)return;n={evidence:le.parse({source:e.slice(0,x.source),summary:r.slice(0,x.summary),observedAt:new Date().toISOString()})};let i=[...t];t.clear();for(let e of i)try{e(n)}catch(e){console.error(`[PiscinaThinWorkflowProvider] Infrastructure-conclusion observer failed:`,e)}},observe:e=>n===void 0?(t.add(e),()=>t.delete(e)):(e(n),()=>void 0)}}var Vt=class{executionAttemptId;controller;detachCallerAbort;infrastructure;revokeBusIdentity;constructor(e,t,n,r,i){this.executionAttemptId=e,this.controller=t,this.detachCallerAbort=n,this.infrastructure=r,this.revokeBusIdentity=i}cancel(e){return this.controller.abort(e??`Worker cancelled`),this.detachCallerAbort(),Promise.resolve()}terminate(){return this.controller.abort(`Worker terminated`),this.detachCallerAbort(),this.revokeBusIdentity(),Promise.resolve()}release(){return this.detachCallerAbort(),this.revokeBusIdentity(),Promise.resolve()}observeInfrastructureConclusion(e){return this.infrastructure.observe(e)}},Ht=class{options;environment=`piscina`;allocationLifetime=`provisioner-process-bound`;baseCapabilities;constructor(e){this.options=e,this.baseCapabilities=me.parse({...zt,...e.baseCapabilities,suspensionStrategy:e.baseCapabilities?.suspensionStrategy??zt.suspensionStrategy,supportsRecovery:!1})}get id(){return this.options.id}get displayName(){return this.options.displayName}async provision(e,t){t.throwIfAborted();let n=new AbortController,r=Bt(this.id),i=()=>{n.abort(t.reason)};t.addEventListener(`abort`,i,{once:!0});let a=()=>t.removeEventListener(`abort`,i),o;try{let{executionAttemptId:i,executionId:s,workerConfig:c}=e;if(!c.busUrl)throw Error(`PiscinaThinWorkflowProvider requires a bus URL to provision an execution attempt (executionAttemptId=${i}, executionId=${s})`);let u=this.buildAllocationRef(i),d=l({executionAttemptId:i,executionId:s});o=d.cleanup;let f=new Vt(i,n,a,r,d.cleanup);t.throwIfAborted();let p=this.options.runner.runWithReadiness({...c,busAuth:{kind:`hmac`,secret:d.secret}},n.signal,e.workerManifest,{executionAttemptId:i,bootstrapDeadlineAt:e.bootstrapDeadlineAt});return p.ready.then(()=>this.submitOutcomeOnSettlement(p.result,s,i,c.workflowId,r.conclude),e=>{n.abort(e),p.result.catch(()=>void 0),r.conclude(`Piscina worker for attempt '${i}' was refused before its workflow run was admitted: `+(e instanceof Error?e.message:String(e)))}),{kind:`allocated`,allocationRef:u,handle:f}}catch(e){throw n.abort(e),a(),o?.(),e}}async submitOutcomeOnSettlement(e,t,n,r,i){let a;try{a=await e}catch(e){a={executionId:t,workflowId:r,status:`failed`,error:e instanceof Error?e.message:String(e)}}try{let e={...Rt,...this.options.outcomeRetry};await It(this.options.bus,{executionAttemptId:n,executionId:t,result:a},{retry:e})}catch(e){e instanceof q?console.error(`[PiscinaThinWorkflowProvider] Outcome rejected for execution '${t}' attempt '${n}' (decision=${e.decision}):`,e):console.error(`[PiscinaThinWorkflowProvider] Failed to submit outcome for execution '${t}' attempt '${n}':`,e),i(`Piscina worker for attempt '${n}' ended without an acknowledged outcome because outcome submission could not be completed`)}}buildAllocationRef(e){let t={version:fe,providerId:this.id,providerData:{executionAttemptId:e,allocatedAt:Date.now()}};return pe.parse(t)}};const Ut=[Le,Pe,Ie];function Wt(e){let t;return()=>(t??=(async()=>{let t=[];for(let n of[...e].reverse())try{await n()}catch(e){t.push(e)}if(t.length===1)throw t[0];if(t.length>1)throw AggregateError(t,`Isolated workflow runtime shutdown reported errors`)})(),t)}function Gt(e,t,n){return O({bus:e,currentMachineId:n,resolveLiveAdapterId:e=>t.getExtensionService(w)?.resolveLiveAdapterId(e),resolveLiveAdapterIdentity:e=>t.getExtensionService(w)?.resolveLiveAdapterIdentity(e),listLiveAdapterIdentities:()=>t.getExtensionService(w)?.getLiveAdapterIdentities()??[]})}async function Kt(e){let t=_();t.registerNamespaces([...ue,...b]);let{context:n}=e,r=new be(t,{surface:`headless`,extensionContextBase:{cwd:n.cwd,platform:n.platform,homedir:n.homedir,makaioHome:n.makaioHome,username:n.username,machineId:n.machineId,tryImport:A}}),i,a=[()=>t.disconnect()],o=Wt(a);try{await e.connectAuthority(t);let s=[...e.contributedPackages,...await e.loadContributedPackages?.(t)??[]],{adapterSubsystemPackage:c}=D({coordinator:r,configRepository:e.configRepository,platformDefaults:{cwd:n.cwd},runtimeSnapshotHandlerPriority:1,runtimeDefinitionHandlerPriority:1,...e.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:e.prepareAuthRuntime}}),l=Be({definitions:s.flatMap(e=>e.clients??[]),binaryResolutionPolicy:`global-only`});r.registerContributionProcessor(Ne());let u=[...Ut,c,je,...L(s)?[Fe]:[],Me(1),Re,N,l,...Ue(s)];r.load(u),a.push(...R(u,t,r)),a.push(()=>r.shutdown()),await r.startAll(),i=Gt(t,r,n.machineId),a.push(()=>{i?.cleanup(),i=void 0});let d=r.getExtensionService(Ae);if(d===void 0)throw Error(`Isolated workflow tool registry did not start.`);for(let t of e.toolsets)await d.register(t);return await t.emit(xe.ready,{machineId:n.machineId}),{bus:t,coordinator:r,machineId:n.machineId,shutdown:o}}catch(e){throw await o().catch(()=>void 0),e}}function qt(e){return Number.isInteger(e)&&e>=1&&e<=2147483647}function Y(e,t){try{process.kill(-e,t)}catch(e){if(e.code!==`ESRCH`)throw e}}async function Jt(e,t){try{process.kill(-e,0)}catch(e){if(e.code===`ESRCH`)return!1;throw e}let n;try{n=await Yt(t)}catch{return!0}let r=!1;for(let t of n.trim().split(`
2
+ `)){let[n,i,a]=t.trim().split(/\s+/);if(n===``||i===void 0||a!==void 0||!/^\d+$/.test(n)||i===``||Number(n)===e&&(r=!0,!i.startsWith(`Z`)))return!0}return!r}function Yt(e){return new Promise((t,n)=>{u(`ps`,[`-A`,`-o`,`pgid=,stat=`],{timeout:e,maxBuffer:1024*1024},(e,r)=>{if(e!==null){n(e);return}t(r)})})}async function Xt(e){if(e===void 0)return!0;try{Y(e,`SIGKILL`);let t=Date.now()+2e3;for(;Date.now()<t;){let n=t-Date.now();if(n<=0)break;if(!await Jt(e,Math.min(1e3,n)))return!0;await et(20)}}catch{}return!1}async function Zt(e){if(e.signal?.aborted)return{status:`cancelled`,exitCode:null};if(!qt(e.recipe.timeoutMs))return{status:`spawn-failed`,exitCode:null,message:`Setup timeout must be an integer between 1 and 2147483647 milliseconds`};if(process.platform===`win32`)return{status:`spawn-failed`,exitCode:null,message:`Setup process groups require a POSIX host`};try{return await Qt(e)}catch{return{status:`spawn-failed`,exitCode:null,message:`Could not start the setup command`}}}function Qt(e){return new Promise(t=>{let n=d(e.recipe.command,e.recipe.args,{cwd:e.workspaceRoot,env:{...process.env,...e.recipe.env,...e.env},shell:!1,detached:!0,stdio:`ignore`}),r,i,a=e=>{if(r===void 0&&(r=e,n.pid!==void 0))try{Y(n.pid,`SIGTERM`),i=setTimeout(()=>{try{n.pid!==void 0&&Y(n.pid,`SIGKILL`)}catch{r=`stop-failed`}},200)}catch{r=`stop-failed`}},o=()=>a(`cancelled`),s=setTimeout(()=>a(`timed-out`),e.recipe.timeoutMs);e.signal?.addEventListener(`abort`,o,{once:!0}),e.signal?.aborted&&o(),n.once(`error`,()=>{r=`spawn-failed`}),n.once(`close`,a=>{clearTimeout(s),clearTimeout(i),e.signal?.removeEventListener(`abort`,o),Xt(n.pid).then(e=>{t({status:e?r??(a===0?`completed`:`failed`):`stop-failed`,exitCode:a})})})})}async function $t(e,t,n){if(m.isAbsolute(t)||t.includes(`\\`)||t.split(`/`).includes(`..`))throw Error(`Source root must be workspace-relative`);let r=e;for(let i of t.split(`/`).filter(e=>e!==``&&e!==`.`))if(r=m.join(r,i),V(r,e,`Source root`),await H(r,e,`Source root`,e),n&&await f.mkdir(r).catch(e=>{if(e.code!==`EEXIST`)throw e}),!(await f.stat(r)).isDirectory())throw Error(`Source root must be a directory`);return H(r,e,`Source root`,e)}async function en(e){e.signal?.throwIfAborted();let{requirement:t}=e,n=m.resolve(e.workspaceRoot);if(!m.isAbsolute(e.workspaceRoot)||n===m.parse(n).root)throw Error(`Workspace root must be an absolute, non-filesystem-root directory`);if(t.sourceRoots.length>1)throw Error(`Multiple source roots are not implemented`);if(t.sourceRoots.some(e=>e.source!==void 0)){if(e.realizeSource===void 0)throw Error(`Source acquisition requires an installed strategy`);if(t.provisioning!==`create`||t.custody!==`disposable`)throw Error(`Source acquisition currently requires a created disposable workspace`)}if(t.provisioning===`create`&&await f.mkdir(n),!(await f.lstat(n)).isDirectory())throw Error(`Workspace root must be a directory, not a symlink`);let r=await f.realpath(n),i=[];for(let n of t.sourceRoots){let a=await $t(r,n.path,t.provisioning===`create`);n.source!==void 0&&(await e.realizeSource({source:n.source,destination:a,signal:e.signal}),e.signal?.throwIfAborted()),i.push({id:n.id,path:a})}return tn(t,{workspaceRoot:r,sourceRoots:i})}function tn(e,t){let n=t.workspaceRoot,r=e.custody,i=!1,a=!0,o;return{binding:t,async runSetup(t={}){if(o!==void 0||i||!a)throw Error(`Workspace setup is unavailable`);if(t.signal?.aborted)return{status:`cancelled`,exitCode:null};i=!0;try{for(let[r,i]of e.setup.entries()){let e=await Zt({...t,recipe:i,workspaceRoot:n});if(a=e.status!==`stop-failed`,e.status!==`completed`)return{...e,commandIndex:r}}return{status:`completed`,exitCode:0}}finally{i=!1}},release(){return i||!a?Promise.reject(Error(`Workspace commands have not stopped`)):(o??=r===`external`?Promise.resolve():f.rm(n,{recursive:!0,force:!0}),o)}}}function X(e,t){return e instanceof ae?oe(e,t):t?.aborted===!0?e===t.reason||e instanceof DOMException&&e.name===`AbortError`?!0:e instanceof Error&&e.name===`AbortError`&&`code`in e&&e.code===`ABORT_ERR`&&Object.is(e.cause,t.reason):!1}async function nn(e,t,n,r){let i=v[`instruction.get`].response.parse(await e.request(y.instruction.get,{executionAttemptId:t,runtimeGeneration:n},{signal:r}));if(i.decision===`found`)return i.instruction;throw Error(`Attempt instruction read refused: ${i.refusalReason}`)}async function rn(e,t,n,r){let{executionAttemptId:i,runtimeGeneration:a}=t,o=v[`operation.admit`].response.parse(await Pt(async t=>await e.request(y.operation.admit,{executionAttemptId:i,runtimeGeneration:a,operationKind:n,admissionKey:r},{timeout:t}),{retry:t.retry,reconnect:t.reconnect}));if(o.decision===`refused`||o.operationId===void 0)throw Error(`Attempt ${n} admission refused: ${o.refusalReason??`missing-operation-id`}`);return o.operationId}function Z(e){return(e instanceof Error?e.message:String(e)).slice(0,8192)||`Local execution failed without a diagnostic message`}function an(e,t){return e.find(e=>e.kind===t.workload.kind&&e.version===t.workload.version)}function on(e){return{signal:e??new AbortController().signal,release:()=>{}}}async function Q(e,t,n,r,i,a){let o=await Lt(e,{executionAttemptId:t.executionAttemptId,runtimeGeneration:t.runtimeGeneration,...i===void 0?{}:{operationId:i},outcome:r},{retry:t.retry,reconnect:t.reconnect});if(a!==void 0&&n!==void 0&&r.kind===`workload-result`&&n.preservation.required.length===0)try{await a.release()}catch{console.warn(`[makaio-worker] Acknowledged workspace cleanup failed.`)}return{outcome:r,decision:o}}async function sn(e,t,n,r){let i=v[`operation.report`].response.parse(await Pt(async i=>await e.request(y.operation.report,{executionAttemptId:t.executionAttemptId,runtimeGeneration:t.runtimeGeneration,operationId:n,result:{kind:`workspace-prepared`,binding:r.binding}},{timeout:i}),{retry:t.retry,reconnect:t.reconnect}));return i.decision===`refused`?void 0:i.binding}function cn(e){if(e.status!==`completed`)return e.status===`cancelled`?{kind:`cancelled`}:e.status===`stop-failed`?{kind:`technical-failure`,stage:`workspace-preparation`,message:`Workspace setup stop-failed`}:{kind:`technical-failure`,stage:`workspace-preparation`,message:`Workspace setup ${e.status}`}}async function ln(e,t,n,r){if(r.aborted)return await Q(e,t,n,{kind:`cancelled`},void 0,void 0);let i=await rn(e,t,`workspace-preparation`,`workspace-preparation:${n.id}:${t.runtimeGeneration}`);if(r.aborted)return await Q(e,t,n,{kind:`cancelled`},i,void 0);let a,o;try{if(t.workspaceRoot===void 0)throw Error(`Workspace preparation requires an explicit local root`);let e=await(t.preparation??{prepare:en}).prepare({requirement:n.workspace,workspaceRoot:t.workspaceRoot,signal:r});a=e,o=await e.runSetup({signal:r,env:t.setupEnv})}catch(o){return await Q(e,t,n,X(o,r)?{kind:`cancelled`}:{kind:`technical-failure`,stage:`workspace-preparation`,message:Z(o)},i,a)}let s=cn(o);if(s!==void 0)return await Q(e,t,n,s,i,a);if(r.aborted)return await Q(e,t,n,{kind:`cancelled`},i,a);let c=await sn(e,t,i,a);return c===void 0?await Q(e,t,n,{kind:`technical-failure`,stage:`workspace-preparation`,message:`Workspace preparation report refused by the Authority`},i,a):r.aborted?await Q(e,t,n,{kind:`cancelled`},void 0,a):{handle:a,binding:c}}async function un(e,t,n,r,i){if(i.signal.aborted)return await Q(e,t,n,{kind:`cancelled`},void 0,void 0);let a,o;if(n.workspace!==void 0){let r=await ln(e,t,n,i.signal);if(`outcome`in r)return r;a=r.handle,o=r.binding}if(i.signal.aborted)return await Q(e,t,n,{kind:`cancelled`},void 0,a);let s=await rn(e,t,`workload-invocation`,`workload-invocation:${n.id}:${t.runtimeGeneration}`);if(i.signal.aborted)return await Q(e,t,n,{kind:`cancelled`},s,a);let c;try{c={kind:`workload-result`,result:de.parse(await r.invoke({instruction:n,...o===void 0?{}:{workspace:o},signal:i.signal}))}}catch(e){c=X(e,i.signal)?{kind:`cancelled`}:{kind:`technical-failure`,stage:`workload-invocation`,message:Z(e)}}return await Q(e,t,n,c,s,a)}async function $(e,t){let n;try{n=await nn(e,t.executionAttemptId,t.runtimeGeneration,t.signal)}catch(n){if(oe(n,t.signal))return await Q(e,t,void 0,{kind:`cancelled`},void 0,void 0);throw n}let r=an(t.adapters,n);if(r===void 0)return await Q(e,t,n,{kind:`technical-failure`,stage:`startup`,message:`Required adapter '${n.workload.kind}' version '${n.workload.version}' is unavailable`},void 0,void 0);let i;try{i=await(r.bindControl?.({instruction:n,signal:t.signal})??on(t.signal))}catch(r){let i=X(r,t.signal)?{kind:`cancelled`}:{kind:`technical-failure`,stage:`startup`,message:Z(r)};return await Q(e,t,n,i,void 0,void 0)}try{return await un(e,t,n,r,i)}finally{try{i.release()}catch{console.warn(`[makaio-worker] Workload control release failed.`)}}}async function dn(e,t,n,r,i){let a=he[`runtime.inputs.get`].response.parse(await e.request(S.runtime.inputs.get,{executionAttemptId:t},{signal:i}));if(a.runtimeInputs===null)throw Error(`Selected Worker Runtime inputs are unavailable`);return ge.parse({...n,...a.runtimeInputs,createdAt:0,env:r})}function fn(e,t){let n=(e,t)=>{let n=re(e,t);return n===``||!te(n)&&n!==`..`&&!n.startsWith(`../`)&&!n.startsWith(`..\\`)};return n(e,t)||n(t,e)}async function pn(t,n,r,i){let a=await t.loadContributions(r,i);i.throwIfAborted();let o=e();return await Kt({connectAuthority:e=>t.connectBus(e,n,i),contributedPackages:[...a],configRepository:t.configRepository,context:{cwd:r.workspaceRoot,platform:r.platform,homedir:o,makaioHome:o,username:`workflow-worker`,machineId:`headless-worker-${t.executionAttemptId}`},toolsets:[...t.toolsets],...t.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:t.prepareAuthRuntime}})}function mn(e,t,n){let r={...e.workflowEnv},i,a=!0;return{adapter:{kind:qe,version:Je,async bindControl({instruction:t,signal:r}){let i=T(t);if(i.executionId!==e.executionId)throw Error(`Workflow instruction execution identity mismatch`);let a=new AbortController,o=n.on(ye(i.cancelSubject),()=>a.abort());try{return await se(o),{signal:AbortSignal.any([...r===void 0?[]:[r],a.signal]),release:o}}catch(e){throw o(),e}},async invoke({instruction:o,workspace:s,signal:c}){let l=T(o);a=o.preservation.required.length!==0;let u=c??new AbortController().signal,d;try{u.throwIfAborted();let a=await dn(n,e.executionAttemptId,l,r,u),o=await e.materialize(a,u);(s===void 0||!fn(o.context.workspaceRoot,s.workspaceRoot))&&(i=o.cleanup);let c=hn(o.context,s);return u.throwIfAborted(),d=await pn(e,t,c,u),u.throwIfAborted(),await e.execute(d.bus,a,c,u)}finally{await d?.shutdown()}}},async releaseExecutable(e){e===void 0||a||e.outcome.kind===`workload-result`&&(e.decision!==`accepted`&&e.decision!==`duplicate`||await i?.().catch(()=>void 0))}}}function hn(e,t){return t===void 0?e:{...e,workspaceRoot:t.workspaceRoot}}async function gn(e,t){if(!(t.outcome.kind!==`workload-result`||e.onPostCommit===void 0))try{let n=_e.parse(t.outcome.result);await e.onPostCommit(n,t.decision)}catch{}}async function _n(e,t){t.throwIfAborted();let n={...e.workflowEnv},i=g(),a=await c(e.bootstrapDeadlineAt,t,t=>e.bootstrap(t)),{connection:s,endpoint:l}=await o({executionAttemptId:e.executionAttemptId,runtimeIncarnationId:i,bootstrapDeadlineAt:e.bootstrapDeadlineAt,signal:t,createConnection:()=>vn(e,a)}),u=s.bus,d=mn({...e,workflowEnv:n},a,u),f;try{let n=await r(u,{executionAttemptId:e.executionAttemptId,runtimeIncarnationId:i,signal:t});return l.bindGeneration(n),f=await $(u,{executionAttemptId:e.executionAttemptId,runtimeGeneration:n,workspaceRoot:e.workspaceRoot,setupEnv:e.setupEnv,adapters:[d.adapter],signal:t,retry:e.outcomeRetry,reconnect:()=>u.reconnect()}),await gn(e,f),f}finally{try{await d.releaseExecutable(f)}finally{l.cleanup(),await s.close()}}}function vn(e,t){let n=_();return n.registerNamespaces([...ue,...b]),{bus:n,async connect(r){try{await e.connectBus(n,t,r),r.throwIfAborted()}catch(e){throw n.disconnect(),e}},close:()=>n.disconnect()}}export{R as A,xt as C,P as D,ct as E,k as F,A as I,O as L,ut as M,pt as N,lt as O,N as P,D as R,ht as S,bt as T,B as _,J as a,G as b,q as c,Ot as d,Dt as f,St as g,Ct as h,Ht as i,F as j,mt as k,Lt as l,wt as m,$ as n,At as o,Tt as p,Kt as r,kt as s,_n as t,It as u,V as v,U as w,K as x,H as y,E as z};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makaio/framework",
3
- "version": "1.0.0-dev-1788811230746",
3
+ "version": "1.0.0-dev-1788832451167",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/makaio-ai/makaio-framework.git",
@@ -1 +0,0 @@
1
- import{canonicalStringify as e}from"@makaio/framework/utils";function t(e){return e.matchesExecution?e.settled?{kind:`resolved`}:e.active?e.allocated?null:{kind:`not-allocated`}:{kind:`fenced`}:{kind:`not-found`}}function n(e,t){return e.runtimeIncarnationId===t.runtimeIncarnationId?{kind:`duplicate`,runtimeGeneration:e.runtimeGeneration,runtimeReadyAt:e.runtimeReadyAt}:e.activeOperationId!==null&&e.activeOperationKind!==`runtime-probe`?{kind:`operation-active`,operationId:e.activeOperationId}:null}function r(e,t,n,r){if(e.activeOperationId!==null)return e.activeOperationKey===t.admissionKey?{kind:`duplicate`,operationId:e.activeOperationId,runtimeGeneration:e.activeOperationGeneration??e.runtimeGeneration,admittedAt:e.activeOperationAdmittedAt??n}:{kind:`operation-active`,operationId:e.activeOperationId};if(e.operationStartGate===`closed`)return{kind:`gate-closed`};if(t.operationKind!==`runtime-probe`&&e.runtimeReadyAt===null)return{kind:`not-ready`};if(e.runtimeGeneration!==t.runtimeGeneration)return{kind:`stale-generation`,runtimeGeneration:e.runtimeGeneration};let i=r.instruction.workspace!==void 0,a=r.preparationReceipts.some(t=>t.runtimeGeneration===e.runtimeGeneration);if(t.operationKind===`workspace-preparation`){if(!i)return{kind:`preparation-not-required`};if(a)return{kind:`preparation-already-completed`}}return(t.operationKind===`workload-invocation`||t.operationKind===`workflow-run`)&&i&&!a?{kind:`preparation-required`}:null}function i(n,r,i,a){if(!n.matchesExecution)return{kind:`not-found`};let o=i.preparationReceipts.find(e=>e.operationId===a.operationId);if(o!==void 0)return o.runtimeGeneration===a.runtimeGeneration&&e(o.result)===e(a.result)?{kind:`duplicate`,binding:o.result.binding}:{kind:`conflict`};let s=t(n);if(s!==null)return s;if(r.runtimeGeneration!==a.runtimeGeneration)return{kind:`stale-generation`};if(r.activeOperationId===null)return{kind:`no-active-operation`};if(r.activeOperationId!==a.operationId||r.activeOperationKind!==`workspace-preparation`)return{kind:`operation-mismatch`};if(r.activeOperationGeneration!==a.runtimeGeneration)return{kind:`stale-generation`};let c=i.instruction.workspace;if(c===void 0)return{kind:`preparation-not-required`};let l=c.sourceRoots.map(e=>e.id).sort(),u=a.result.binding.sourceRoots.map(e=>e.id).sort();return e(l)===e(u)?null:{kind:`binding-mismatch`}}function a(e,t){return e.lastCompletedOperationId===t.operationId?{kind:`duplicate`}:e.activeOperationId===null?{kind:`not-active`}:e.activeOperationId===t.operationId?e.activeOperationGeneration===t.runtimeGeneration?e.activeOperationKind===`workspace-preparation`||e.activeOperationKind===`workload-invocation`?{kind:`result-required`}:null:{kind:`stale-generation`}:{kind:`mismatch`,activeOperationId:e.activeOperationId}}function o(e,t){return e.runtimeGeneration===t.runtimeGeneration?e.runtimeReadyAt===null?e.activeOperationId===null?null:{kind:`operation-active`,operationId:e.activeOperationId}:{kind:`duplicate`,acceptedAt:e.runtimeReadyAt}:{kind:`stale-generation`}}const s=[`pending`,`provisioning`,`allocated`,`settled`],c=[`outcome`,`abandoned`,`infrastructure-failure`],l=[`open`,`closed`];function u(t,n){return e(t)===e(n)}function d(t,n){return e(JSON.parse(t))===e(JSON.parse(n))}function f(e,t){let n=e.serialize(e.parse(t));return{text:n,outcome:p(e,n)}}function p(e,t){return e.parse(JSON.parse(t))}var m=class extends Error{executionAttemptId;constructor(e,t){super(`Execution attempt '${e}' already exists`,t),this.name=`DuplicateExecutionAttemptError`,this.executionAttemptId=e}},h=class extends Error{constructor(){super(`Runtime outcome no longer matches the current generation and operation`),this.name=`RuntimeOutcomeFenceMismatchError`}};function g(e,t){if(t!==void 0&&(e.runtimeGeneration!==t.runtimeGeneration||e.activeOperationId!==t.operationId||t.operationId!==null&&e.activeOperationGeneration!==t.runtimeGeneration))throw new h}export{h as a,f as c,t as d,r as f,n as g,o as h,s as i,u as l,i as m,m as n,g as o,a as p,c as r,p as s,l as t,d as u};
@@ -1 +0,0 @@
1
- import{n as e,o as t}from"./json-value-BBZ6uGwc.mjs";import{z as n}from"zod";const r=[`inline`,`summary`,`link`,`omit`],i=n.string().min(1),a=n.object({kinds:n.array(n.string().min(1)).optional(),hint:i.optional(),depth:n.number().int().min(1).max(20).optional(),nested:n.lazy(()=>o).optional()}),o=n.record(n.string().min(1),a),s=n.enum([`link`,`summary`,`full`]),c=n.object({artifactId:n.string().min(1).optional(),url:n.string().min(1).optional(),label:n.string().min(1)}),l=n.object({id:n.string().min(1),kind:n.string().min(1),revision:n.string().min(1),status:n.string().min(1).optional()}),u=n.object({breadcrumbs:n.array(c),related:n.array(c)}),d=n.object({dashboard:n.string().min(1).optional(),materialized:n.string().min(1).optional()}),f=n.object({type:n.literal(`summary`),title:n.string().min(1),text:n.string().min(1)}),p=n.object({type:n.literal(`properties`),title:n.string().min(1),rows:n.array(n.object({label:n.string().min(1),value:n.string()}))}),m=n.object({type:n.literal(`table`),title:n.string().min(1),columns:n.array(n.string().min(1)),rows:n.array(n.object({cells:n.array(n.string()),link:c.optional()}))}),h=n.object({type:n.literal(`relations`),title:n.string().min(1),groups:n.array(n.object({type:n.string().min(1),items:n.array(c)}))}),g=n.object({type:n.literal(`evidence`),title:n.string().min(1),items:n.array(n.object({kind:n.string().min(1),id:n.string().min(1),locator:n.string().min(1).optional()}))}),_=n.object({type:n.literal(`raw`),title:n.string().min(1),json:t}),v=n.object({type:n.literal(`code`),title:n.string().min(1),language:n.string().min(1),content:n.string()}),y=n.object({type:n.literal(`diagram`),title:n.string().min(1),notation:n.literal(`mermaid`),source:n.string().min(1)}),b=n.discriminatedUnion(`type`,[f,p,m,h,g,_,v,y]),ee=n.object({title:n.string().min(1),artifact:l,navigation:u,sections:n.array(b),links:d}),x=e,S=n.object({level:s,params:x.optional()}),C=n.object({kind:n.literal(`entry`),via:n.string().min(1).optional(),collection:n.string().min(1).optional()});function w(e){return(t,r)=>{t.via!==void 0==(t.collection!==void 0)&&r.addIssue({code:n.ZodIssueCode.custom,message:`Entry ${e} must have exactly one of via or collection`})}}const T=n.discriminatedUnion(`kind`,[n.object({kind:n.literal(`own-view`)}),n.object({kind:n.literal(`inline`),hostRelation:n.string().min(1),as:s.optional()}),C.extend({title:n.string().min(1).optional(),hostRelation:n.string().min(1).optional()}).superRefine(w(`affordance`))]),E=n.discriminatedUnion(`kind`,[n.object({kind:n.literal(`own-view`)}),n.object({kind:n.literal(`inline`),hostRelation:n.string().min(1)}),C.superRefine(w(`request`))]);function D(e){return e}const O=n.enum([`title`,`summary`]),k=n.discriminatedUnion(`kind`,[n.object({kind:n.literal(`label`),prefix:n.string().min(1).optional()}),n.object({kind:n.literal(`field`),name:n.string().min(1),fieldId:n.string().min(1).optional()}),n.object({kind:n.literal(`issue-type`),name:n.string().min(1),typeId:n.string().min(1).optional()}),n.object({kind:n.literal(`body-fragment`),slot:n.string().min(1)}),n.object({kind:n.literal(`comment`),template:n.string().min(1)})]),A=n.object({id:n.string().min(1),provider:n.string().min(1),namespace:n.string().min(1),target:k,appliesTo:n.array(n.enum([`workpiece`,`artifact`,`surface`])).min(1),valueMapping:n.record(n.string(),n.string()).optional(),description:n.string().min(1).optional(),params:e.optional()}),j=n.enum([`status`,`workflow`,`priority`]),M=n.object({path:n.string().min(1),semantic:j.optional(),fromLevel:s.optional(),viewRole:O.optional()}),N=n.object({mode:n.enum([`none`,`surface`,`comment`]),defaultRole:n.enum([`workpiece`,`artifact`]).optional(),semanticEvents:n.array(n.enum([`created`,`revised`,`status-changed`,`observation-added`])).optional(),projectedFields:n.array(M).optional(),affordances:n.array(T).optional()}).superRefine((e,t)=>{if(!e.projectedFields)return;let r=0,i=0;for(let t of e.projectedFields)t.viewRole===`title`&&r++,t.viewRole===`summary`&&i++;r>1&&t.addIssue({code:n.ZodIssueCode.custom,path:[`projectedFields`],message:`At most one projected field may declare viewRole: title`}),i>1&&t.addIssue({code:n.ZodIssueCode.custom,path:[`projectedFields`],message:`At most one projected field may declare viewRole: summary`})}),P=n.object({artifactId:n.string().min(1),provider:n.string().min(1),externalId:n.string().min(1),externalUrl:n.string().optional(),surfaceRole:n.enum([`workpiece`,`artifact`]),lastSyncedRevision:n.string().optional(),metadata:n.record(n.string(),n.unknown()).optional()}),F=n.object({kind:n.string().min(1),id:n.string().min(1),displayName:n.string().optional()}),I=n.object({level:n.string().min(1),ids:n.record(n.string().min(1),n.string().min(1)).optional()}).superRefine((e,t)=>{e.level!==`global`&&(!e.ids||Object.keys(e.ids).length===0)&&t.addIssue({code:n.ZodIssueCode.custom,path:[`ids`],message:`ids is required when scope level is not 'global'`})}),L=n.object({level:n.string().min(1),ids:n.record(n.string().min(1),n.string().min(1)).optional()}),R=n.object({refClass:n.literal(`artifact`).default(`artifact`),kind:n.string().min(1),id:n.string().min(1),revision:n.string().min(1)}),z=n.object({refClass:n.literal(`local`).default(`local`),artifact:R,localId:n.string().min(1)}),B=n.object({refClass:n.literal(`evidence`).default(`evidence`),kind:n.string().min(1),id:n.string().min(1),revision:n.string().min(1).optional(),locator:n.string().min(1).optional()}),V=n.discriminatedUnion(`refClass`,[R,z,B]);function te(e){return!e||typeof e!=`object`||Array.isArray(e)||`refClass`in e?e:`artifact`in e&&`localId`in e?{...e,refClass:`local`}:`locator`in e||!(`revision`in e)?{...e,refClass:`evidence`}:{...e,refClass:`artifact`}}const H=n.preprocess(te,V),U=n.discriminatedUnion(`refClass`,[R.extend({revision:n.string().min(1).optional()}),z,B]);function W(e){return!e||typeof e!=`object`||Array.isArray(e)||`refClass`in e?e:`artifact`in e&&`localId`in e?{...e,refClass:`local`}:`locator`in e?{...e,refClass:`evidence`}:{...e,refClass:`artifact`}}const G=n.preprocess(W,U),K=n.object({type:n.string().min(1),target:H}),q=n.enum([`assumed`,`inferred`,`stated`,`confirmed`,`verified`]),J=n.object({kind:n.string().min(1),actor:F,timestamp:n.number().int().nonnegative(),detail:n.string().optional(),evidenceRef:H.optional()}),Y=n.object({level:q,basis:n.array(J)}),X=n.object({id:n.string().min(1),kind:n.string().min(1),summary:n.string().min(1),detail:n.string().optional(),severity:n.enum([`info`,`warning`,`blocker`]).optional(),tags:n.array(n.string().min(1)).optional(),regarding:n.union([R,z]).optional(),evidence:n.union([R,B]).optional(),actor:F,timestamp:n.number().int().nonnegative()}),Z=n.object({markdown:n.string().optional(),summary:n.string().optional(),plaintext:n.string().optional()}),Q=n.object({kind:n.string().min(1),id:n.string().min(1),revision:n.string().min(1),scope:I,schemaVersion:n.string().min(1),data:e,relations:n.array(K),confidence:Y.optional(),representations:Z.optional(),actor:F,timestamp:n.number().int().nonnegative(),createdAt:n.number().int().nonnegative().optional()}),$=n.enum([`supersedes`,`manual`,`coexist`]),ne=n.object({kind:n.string().min(1),description:n.string().trim().min(1),schemaVersion:n.string().min(1),dataSchema:e,scopeSchema:e.optional(),observationSchema:e.optional(),discriminator:n.union([n.string().min(1),n.array(n.string().min(1))]).optional(),conflictPolicy:$,status:n.object({path:n.string().min(1),values:n.array(n.string().min(1)).optional()}).optional(),lifecycle:n.object({defaultRelevance:n.enum([`active`,`fading`,`retired`,`archived`]).optional(),decayPolicy:n.string().min(1).optional()}).optional(),indexedFields:n.array(n.string().min(1)).optional(),searchableFields:n.array(n.string().min(1)).optional(),projection:N.optional(),defaultContext:o.optional()}),re=n.object({type:n.string().min(1),symmetry:n.enum([`asymmetric`,`symmetric`]),implication:n.string().min(1).optional(),sourceKinds:n.array(n.string().min(1)).optional(),targetKinds:n.array(n.string().min(1)).optional(),targetRefClasses:n.array(n.enum([`artifact`,`local`,`evidence`])).optional()}),ie=n.object({kind:n.string().min(1).optional(),scope:L.optional(),ids:n.array(n.string().min(1)).optional(),currentOnly:n.boolean().optional(),search:n.string().optional(),relation:n.object({type:n.string().min(1).optional(),target:G.optional()}).optional(),confidence:n.object({maxLevel:q.optional(),minLevel:q.optional()}).optional(),indexed:n.record(n.string(),t).optional(),limit:n.number().int().min(1).optional()}),ae=n.object({base:R,target:R}),oe=n.object({base:Q,target:Q,changedPaths:n.array(n.string())});export{E as A,ee as B,N as C,A as D,O as E,y as F,b as G,p as H,g as I,m as J,f as K,l as L,S as M,D as N,k as O,v as P,o as Q,s as R,P as S,j as T,_ as U,u as V,h as W,a as X,r as Y,i as Z,q as _,ne as a,z as b,L as c,K as d,H as f,J as g,I as h,$ as i,x as j,T as k,R as l,Q as m,ae as n,X as o,Z as p,d as q,oe as r,ie as s,F as t,G as u,Y as v,M as w,re as x,B as y,c as z};