ex-workflow 0.3.0-stage → 0.4.0-stage

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 (75) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/README.md +16 -3
  3. package/dist/adapters/index.cjs +1 -1
  4. package/dist/adapters/index.mjs +1 -1
  5. package/dist/chunk-36M6OVUJ.mjs +2 -0
  6. package/dist/chunk-36M6OVUJ.mjs.map +1 -0
  7. package/dist/{chunk-4A4TD4MH.cjs → chunk-7KF5K3L7.cjs} +2 -2
  8. package/dist/{chunk-4A4TD4MH.cjs.map → chunk-7KF5K3L7.cjs.map} +1 -1
  9. package/dist/{chunk-2IKIBB73.cjs → chunk-CWBH7H52.cjs} +2 -2
  10. package/dist/{chunk-2IKIBB73.cjs.map → chunk-CWBH7H52.cjs.map} +1 -1
  11. package/dist/chunk-DXC2RSN5.cjs +3 -0
  12. package/dist/chunk-DXC2RSN5.cjs.map +1 -0
  13. package/dist/{chunk-UOGNVWVO.mjs → chunk-GATJZYTB.mjs} +2 -2
  14. package/dist/{chunk-UOGNVWVO.mjs.map → chunk-GATJZYTB.mjs.map} +1 -1
  15. package/dist/{chunk-ZX4DAMTG.mjs → chunk-GFH2FEZH.mjs} +2 -2
  16. package/dist/{chunk-ZX4DAMTG.mjs.map → chunk-GFH2FEZH.mjs.map} +1 -1
  17. package/dist/{chunk-NN3XJUHP.cjs → chunk-HHC5EZ54.cjs} +2 -2
  18. package/dist/{chunk-NN3XJUHP.cjs.map → chunk-HHC5EZ54.cjs.map} +1 -1
  19. package/dist/{chunk-TMKCALFT.cjs → chunk-KSKEFYY7.cjs} +2 -2
  20. package/dist/{chunk-TMKCALFT.cjs.map → chunk-KSKEFYY7.cjs.map} +1 -1
  21. package/dist/chunk-KUUIAKEJ.cjs +2 -0
  22. package/dist/chunk-KUUIAKEJ.cjs.map +1 -0
  23. package/dist/{chunk-R27STIER.mjs → chunk-L2ZN6HEL.mjs} +2 -2
  24. package/dist/{chunk-R27STIER.mjs.map → chunk-L2ZN6HEL.mjs.map} +1 -1
  25. package/dist/{chunk-BJEOTG6P.mjs → chunk-NDORREWR.mjs} +2 -2
  26. package/dist/{chunk-BJEOTG6P.mjs.map → chunk-NDORREWR.mjs.map} +1 -1
  27. package/dist/{chunk-WOKNWJKU.mjs → chunk-NZ2DIDOD.mjs} +2 -2
  28. package/dist/{chunk-WOKNWJKU.mjs.map → chunk-NZ2DIDOD.mjs.map} +1 -1
  29. package/dist/chunk-OHSQ52DW.mjs +6 -0
  30. package/dist/chunk-OHSQ52DW.mjs.map +1 -0
  31. package/dist/chunk-RSKZVOYC.cjs +6 -0
  32. package/dist/chunk-RSKZVOYC.cjs.map +1 -0
  33. package/dist/chunk-S22CPYXJ.mjs +3 -0
  34. package/dist/chunk-S22CPYXJ.mjs.map +1 -0
  35. package/dist/{chunk-FLCYD2QF.mjs → chunk-SHAPFMVP.mjs} +2 -2
  36. package/dist/{chunk-FLCYD2QF.mjs.map → chunk-SHAPFMVP.mjs.map} +1 -1
  37. package/dist/{chunk-23P7C25E.cjs → chunk-SJRRQZ3R.cjs} +2 -2
  38. package/dist/{chunk-23P7C25E.cjs.map → chunk-SJRRQZ3R.cjs.map} +1 -1
  39. package/dist/{chunk-7HZXZF3L.cjs → chunk-UM5X2JHB.cjs} +2 -2
  40. package/dist/{chunk-7HZXZF3L.cjs.map → chunk-UM5X2JHB.cjs.map} +1 -1
  41. package/dist/cli/bin.cjs +1 -1
  42. package/dist/cli/bin.cjs.map +1 -1
  43. package/dist/cli/bin.mjs +1 -1
  44. package/dist/cli/bin.mjs.map +1 -1
  45. package/dist/cli/index.cjs +1 -1
  46. package/dist/cli/index.mjs +1 -1
  47. package/dist/index.cjs +1 -1
  48. package/dist/index.cjs.map +1 -1
  49. package/dist/index.d.cts +5 -5
  50. package/dist/index.d.ts +5 -5
  51. package/dist/index.mjs +1 -1
  52. package/dist/index.mjs.map +1 -1
  53. package/dist/kanban/index.cjs +1 -1
  54. package/dist/kanban/index.mjs +1 -1
  55. package/dist/schema/index.cjs +2 -0
  56. package/dist/schema/index.cjs.map +1 -0
  57. package/dist/schema/index.d.cts +57 -0
  58. package/dist/schema/index.d.ts +57 -0
  59. package/dist/schema/index.mjs +2 -0
  60. package/dist/schema/index.mjs.map +1 -0
  61. package/dist/scrum/index.cjs +1 -1
  62. package/dist/scrum/index.mjs +1 -1
  63. package/dist/types.d.cts +9 -2
  64. package/dist/types.d.ts +9 -2
  65. package/dist/waterfall/index.cjs +1 -1
  66. package/dist/waterfall/index.mjs +1 -1
  67. package/package.json +18 -2
  68. package/dist/chunk-6R3YFUUV.cjs +0 -6
  69. package/dist/chunk-6R3YFUUV.cjs.map +0 -1
  70. package/dist/chunk-AUZIQPFT.cjs +0 -2
  71. package/dist/chunk-AUZIQPFT.cjs.map +0 -1
  72. package/dist/chunk-P4P4JTE5.mjs +0 -2
  73. package/dist/chunk-P4P4JTE5.mjs.map +0 -1
  74. package/dist/chunk-VGD4V5BA.mjs +0 -6
  75. package/dist/chunk-VGD4V5BA.mjs.map +0 -1
package/dist/cli/bin.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- 'use strict';var chunkAUZIQPFT_cjs=require('../chunk-AUZIQPFT.cjs');require('../chunk-NN3XJUHP.cjs'),require('../chunk-4A4TD4MH.cjs'),require('../chunk-7HZXZF3L.cjs'),require('../chunk-TMKCALFT.cjs'),require('../chunk-2IKIBB73.cjs'),require('../chunk-23P7C25E.cjs'),require('../chunk-6R3YFUUV.cjs'),require('../chunk-S3BXVHO7.cjs');chunkAUZIQPFT_cjs.c(process.argv.slice(2),process.cwd()).then(r=>{process.stdout.write(JSON.stringify(r.out,null,2)+`
2
+ 'use strict';var chunkKUUIAKEJ_cjs=require('../chunk-KUUIAKEJ.cjs');require('../chunk-HHC5EZ54.cjs'),require('../chunk-7KF5K3L7.cjs'),require('../chunk-UM5X2JHB.cjs'),require('../chunk-KSKEFYY7.cjs'),require('../chunk-CWBH7H52.cjs'),require('../chunk-SJRRQZ3R.cjs'),require('../chunk-RSKZVOYC.cjs'),require('../chunk-DXC2RSN5.cjs'),require('../chunk-S3BXVHO7.cjs');chunkKUUIAKEJ_cjs.c(process.argv.slice(2),process.cwd()).then(r=>{process.stdout.write(JSON.stringify(r.out,null,2)+`
3
3
  `),process.exitCode=r.exit;},r=>{process.stderr.write(`exwf crashed: ${r.stack??String(r)}
4
4
  `),process.exitCode=2;});//# sourceMappingURL=bin.cjs.map
5
5
  //# sourceMappingURL=bin.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/bin.ts"],"names":["runCommand","e"],"mappings":";4UAGAA,mBAAAA,CAAW,OAAA,CAAQ,KAAK,KAAA,CAAM,CAAC,EAAG,OAAA,CAAQ,GAAA,EAAK,CAAA,CAAE,IAAA,CAC9C,GAAM,CACL,OAAA,CAAQ,OAAO,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA,CAAE,GAAA,CAAK,IAAA,CAAM,CAAC,CAAA,CAAI;AAAA,CAAI,EAC1D,OAAA,CAAQ,QAAA,CAAW,CAAA,CAAE,KACvB,EACCC,CAAAA,EAAe,CACd,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,cAAA,EAAkBA,CAAAA,CAAY,KAAA,EAAS,MAAA,CAAOA,CAAC,CAAC;AAAA,CAAI,CAAA,CACzE,OAAA,CAAQ,QAAA,CAAW,EACrB,CACF,CAAA","file":"bin.cjs","sourcesContent":["#!/usr/bin/env node\nimport { runCommand } from \"./commands.ts\";\n\nrunCommand(process.argv.slice(2), process.cwd()).then(\n (r) => {\n process.stdout.write(JSON.stringify(r.out, null, 2) + \"\\n\");\n process.exitCode = r.exit;\n },\n (e: unknown) => {\n process.stderr.write(`exwf crashed: ${(e as Error).stack ?? String(e)}\\n`);\n process.exitCode = 2;\n },\n);\n"]}
1
+ {"version":3,"sources":["../../src/cli/bin.ts"],"names":["runCommand","e"],"mappings":";6WAGAA,mBAAAA,CAAW,OAAA,CAAQ,KAAK,KAAA,CAAM,CAAC,EAAG,OAAA,CAAQ,GAAA,EAAK,CAAA,CAAE,IAAA,CAC9C,GAAM,CACL,OAAA,CAAQ,OAAO,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA,CAAE,GAAA,CAAK,IAAA,CAAM,CAAC,CAAA,CAAI;AAAA,CAAI,EAC1D,OAAA,CAAQ,QAAA,CAAW,CAAA,CAAE,KACvB,EACCC,CAAAA,EAAe,CACd,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,cAAA,EAAkBA,CAAAA,CAAY,KAAA,EAAS,MAAA,CAAOA,CAAC,CAAC;AAAA,CAAI,CAAA,CACzE,OAAA,CAAQ,QAAA,CAAW,EACrB,CACF,CAAA","file":"bin.cjs","sourcesContent":["#!/usr/bin/env node\nimport { runCommand } from \"./commands.ts\";\n\nrunCommand(process.argv.slice(2), process.cwd()).then(\n (r) => {\n process.stdout.write(JSON.stringify(r.out, null, 2) + \"\\n\");\n process.exitCode = r.exit;\n },\n (e: unknown) => {\n process.stderr.write(`exwf crashed: ${(e as Error).stack ?? String(e)}\\n`);\n process.exitCode = 2;\n },\n);\n"]}
package/dist/cli/bin.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {c}from'../chunk-P4P4JTE5.mjs';import'../chunk-WOKNWJKU.mjs';import'../chunk-R27STIER.mjs';import'../chunk-UOGNVWVO.mjs';import'../chunk-BJEOTG6P.mjs';import'../chunk-ZX4DAMTG.mjs';import'../chunk-FLCYD2QF.mjs';import'../chunk-VGD4V5BA.mjs';import'../chunk-2FRRD6A3.mjs';c(process.argv.slice(2),process.cwd()).then(r=>{process.stdout.write(JSON.stringify(r.out,null,2)+`
2
+ import {c}from'../chunk-36M6OVUJ.mjs';import'../chunk-NZ2DIDOD.mjs';import'../chunk-L2ZN6HEL.mjs';import'../chunk-GATJZYTB.mjs';import'../chunk-NDORREWR.mjs';import'../chunk-GFH2FEZH.mjs';import'../chunk-SHAPFMVP.mjs';import'../chunk-OHSQ52DW.mjs';import'../chunk-S22CPYXJ.mjs';import'../chunk-2FRRD6A3.mjs';c(process.argv.slice(2),process.cwd()).then(r=>{process.stdout.write(JSON.stringify(r.out,null,2)+`
3
3
  `),process.exitCode=r.exit;},r=>{process.stderr.write(`exwf crashed: ${r.stack??String(r)}
4
4
  `),process.exitCode=2;});//# sourceMappingURL=bin.mjs.map
5
5
  //# sourceMappingURL=bin.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/bin.ts"],"names":["runCommand","e"],"mappings":";sRAGAA,CAAAA,CAAW,OAAA,CAAQ,KAAK,KAAA,CAAM,CAAC,EAAG,OAAA,CAAQ,GAAA,EAAK,CAAA,CAAE,IAAA,CAC9C,GAAM,CACL,OAAA,CAAQ,OAAO,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA,CAAE,GAAA,CAAK,IAAA,CAAM,CAAC,CAAA,CAAI;AAAA,CAAI,EAC1D,OAAA,CAAQ,QAAA,CAAW,CAAA,CAAE,KACvB,EACCC,CAAAA,EAAe,CACd,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,cAAA,EAAkBA,CAAAA,CAAY,KAAA,EAAS,MAAA,CAAOA,CAAC,CAAC;AAAA,CAAI,CAAA,CACzE,OAAA,CAAQ,QAAA,CAAW,EACrB,CACF,CAAA","file":"bin.mjs","sourcesContent":["#!/usr/bin/env node\nimport { runCommand } from \"./commands.ts\";\n\nrunCommand(process.argv.slice(2), process.cwd()).then(\n (r) => {\n process.stdout.write(JSON.stringify(r.out, null, 2) + \"\\n\");\n process.exitCode = r.exit;\n },\n (e: unknown) => {\n process.stderr.write(`exwf crashed: ${(e as Error).stack ?? String(e)}\\n`);\n process.exitCode = 2;\n },\n);\n"]}
1
+ {"version":3,"sources":["../../src/cli/bin.ts"],"names":["runCommand","e"],"mappings":";oTAGAA,CAAAA,CAAW,OAAA,CAAQ,KAAK,KAAA,CAAM,CAAC,EAAG,OAAA,CAAQ,GAAA,EAAK,CAAA,CAAE,IAAA,CAC9C,GAAM,CACL,OAAA,CAAQ,OAAO,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA,CAAE,GAAA,CAAK,IAAA,CAAM,CAAC,CAAA,CAAI;AAAA,CAAI,EAC1D,OAAA,CAAQ,QAAA,CAAW,CAAA,CAAE,KACvB,EACCC,CAAAA,EAAe,CACd,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,cAAA,EAAkBA,CAAAA,CAAY,KAAA,EAAS,MAAA,CAAOA,CAAC,CAAC;AAAA,CAAI,CAAA,CACzE,OAAA,CAAQ,QAAA,CAAW,EACrB,CACF,CAAA","file":"bin.mjs","sourcesContent":["#!/usr/bin/env node\nimport { runCommand } from \"./commands.ts\";\n\nrunCommand(process.argv.slice(2), process.cwd()).then(\n (r) => {\n process.stdout.write(JSON.stringify(r.out, null, 2) + \"\\n\");\n process.exitCode = r.exit;\n },\n (e: unknown) => {\n process.stderr.write(`exwf crashed: ${(e as Error).stack ?? String(e)}\\n`);\n process.exitCode = 2;\n },\n);\n"]}
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkAUZIQPFT_cjs=require('../chunk-AUZIQPFT.cjs');require('../chunk-NN3XJUHP.cjs'),require('../chunk-4A4TD4MH.cjs'),require('../chunk-7HZXZF3L.cjs'),require('../chunk-TMKCALFT.cjs'),require('../chunk-2IKIBB73.cjs'),require('../chunk-23P7C25E.cjs'),require('../chunk-6R3YFUUV.cjs'),require('../chunk-S3BXVHO7.cjs');Object.defineProperty(exports,"USAGE",{enumerable:true,get:function(){return chunkAUZIQPFT_cjs.a}});Object.defineProperty(exports,"parseArgs",{enumerable:true,get:function(){return chunkAUZIQPFT_cjs.b}});Object.defineProperty(exports,"runCommand",{enumerable:true,get:function(){return chunkAUZIQPFT_cjs.c}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkKUUIAKEJ_cjs=require('../chunk-KUUIAKEJ.cjs');require('../chunk-HHC5EZ54.cjs'),require('../chunk-7KF5K3L7.cjs'),require('../chunk-UM5X2JHB.cjs'),require('../chunk-KSKEFYY7.cjs'),require('../chunk-CWBH7H52.cjs'),require('../chunk-SJRRQZ3R.cjs'),require('../chunk-RSKZVOYC.cjs'),require('../chunk-DXC2RSN5.cjs'),require('../chunk-S3BXVHO7.cjs');Object.defineProperty(exports,"USAGE",{enumerable:true,get:function(){return chunkKUUIAKEJ_cjs.a}});Object.defineProperty(exports,"parseArgs",{enumerable:true,get:function(){return chunkKUUIAKEJ_cjs.b}});Object.defineProperty(exports,"runCommand",{enumerable:true,get:function(){return chunkKUUIAKEJ_cjs.c}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- export{a as USAGE,b as parseArgs,c as runCommand}from'../chunk-P4P4JTE5.mjs';import'../chunk-WOKNWJKU.mjs';import'../chunk-R27STIER.mjs';import'../chunk-UOGNVWVO.mjs';import'../chunk-BJEOTG6P.mjs';import'../chunk-ZX4DAMTG.mjs';import'../chunk-FLCYD2QF.mjs';import'../chunk-VGD4V5BA.mjs';import'../chunk-2FRRD6A3.mjs';//# sourceMappingURL=index.mjs.map
1
+ export{a as USAGE,b as parseArgs,c as runCommand}from'../chunk-36M6OVUJ.mjs';import'../chunk-NZ2DIDOD.mjs';import'../chunk-L2ZN6HEL.mjs';import'../chunk-GATJZYTB.mjs';import'../chunk-NDORREWR.mjs';import'../chunk-GFH2FEZH.mjs';import'../chunk-SHAPFMVP.mjs';import'../chunk-OHSQ52DW.mjs';import'../chunk-S22CPYXJ.mjs';import'../chunk-2FRRD6A3.mjs';//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';require('./chunk-PO2SPQJP.cjs');var chunkNN3XJUHP_cjs=require('./chunk-NN3XJUHP.cjs'),chunk2IKIBB73_cjs=require('./chunk-2IKIBB73.cjs'),chunk23P7C25E_cjs=require('./chunk-23P7C25E.cjs'),chunkS3BXVHO7_cjs=require('./chunk-S3BXVHO7.cjs');var U="0.3.0-stage";Object.defineProperty(exports,"complete",{enumerable:true,get:function(){return chunkNN3XJUHP_cjs.c}});Object.defineProperty(exports,"next",{enumerable:true,get:function(){return chunkNN3XJUHP_cjs.b}});Object.defineProperty(exports,"synthesizeBrief",{enumerable:true,get:function(){return chunkNN3XJUHP_cjs.a}});Object.defineProperty(exports,"ZERO_SPENT",{enumerable:true,get:function(){return chunk2IKIBB73_cjs.a}});Object.defineProperty(exports,"addSpent",{enumerable:true,get:function(){return chunk2IKIBB73_cjs.b}});Object.defineProperty(exports,"assignRole",{enumerable:true,get:function(){return chunk2IKIBB73_cjs.g}});Object.defineProperty(exports,"estimateTokens",{enumerable:true,get:function(){return chunk2IKIBB73_cjs.e}});Object.defineProperty(exports,"isExhausted",{enumerable:true,get:function(){return chunk2IKIBB73_cjs.d}});Object.defineProperty(exports,"openIteration",{enumerable:true,get:function(){return chunk2IKIBB73_cjs.f}});Object.defineProperty(exports,"plan",{enumerable:true,get:function(){return chunk2IKIBB73_cjs.j}});Object.defineProperty(exports,"remaining",{enumerable:true,get:function(){return chunk2IKIBB73_cjs.c}});Object.defineProperty(exports,"resourceCapsFor",{enumerable:true,get:function(){return chunk2IKIBB73_cjs.h}});Object.defineProperty(exports,"toExNodes",{enumerable:true,get:function(){return chunk2IKIBB73_cjs.i}});Object.defineProperty(exports,"addEvidence",{enumerable:true,get:function(){return chunk23P7C25E_cjs.y}});Object.defineProperty(exports,"addItem",{enumerable:true,get:function(){return chunk23P7C25E_cjs.v}});Object.defineProperty(exports,"appendEvent",{enumerable:true,get:function(){return chunk23P7C25E_cjs.c}});Object.defineProperty(exports,"applyAction",{enumerable:true,get:function(){return chunk23P7C25E_cjs.M}});Object.defineProperty(exports,"approversFor",{enumerable:true,get:function(){return chunk23P7C25E_cjs.k}});Object.defineProperty(exports,"assertPolicies",{enumerable:true,get:function(){return chunk23P7C25E_cjs.E}});Object.defineProperty(exports,"authorOf",{enumerable:true,get:function(){return chunk23P7C25E_cjs.G}});Object.defineProperty(exports,"canDo",{enumerable:true,get:function(){return chunk23P7C25E_cjs.n}});Object.defineProperty(exports,"checkGate",{enumerable:true,get:function(){return chunk23P7C25E_cjs.H}});Object.defineProperty(exports,"clearBlocker",{enumerable:true,get:function(){return chunk23P7C25E_cjs.A}});Object.defineProperty(exports,"coreRulesFor",{enumerable:true,get:function(){return chunk23P7C25E_cjs.K}});Object.defineProperty(exports,"createState",{enumerable:true,get:function(){return chunk23P7C25E_cjs.b}});Object.defineProperty(exports,"decide",{enumerable:true,get:function(){return chunk23P7C25E_cjs.J}});Object.defineProperty(exports,"editItem",{enumerable:true,get:function(){return chunk23P7C25E_cjs.w}});Object.defineProperty(exports,"evaluatePolicies",{enumerable:true,get:function(){return chunk23P7C25E_cjs.D}});Object.defineProperty(exports,"getItem",{enumerable:true,get:function(){return chunk23P7C25E_cjs.u}});Object.defineProperty(exports,"hasCapability",{enumerable:true,get:function(){return chunk23P7C25E_cjs.h}});Object.defineProperty(exports,"init",{enumerable:true,get:function(){return chunk23P7C25E_cjs.N}});Object.defineProperty(exports,"isTerminalStage",{enumerable:true,get:function(){return chunk23P7C25E_cjs.r}});Object.defineProperty(exports,"lastDispatchBefore",{enumerable:true,get:function(){return chunk23P7C25E_cjs.F}});Object.defineProperty(exports,"lastEvent",{enumerable:true,get:function(){return chunk23P7C25E_cjs.d}});Object.defineProperty(exports,"moveItem",{enumerable:true,get:function(){return chunk23P7C25E_cjs.x}});Object.defineProperty(exports,"nextStageOf",{enumerable:true,get:function(){return chunk23P7C25E_cjs.q}});Object.defineProperty(exports,"nowOf",{enumerable:true,get:function(){return chunk23P7C25E_cjs.a}});Object.defineProperty(exports,"raiseBlocker",{enumerable:true,get:function(){return chunk23P7C25E_cjs.z}});Object.defineProperty(exports,"raisePending",{enumerable:true,get:function(){return chunk23P7C25E_cjs.I}});Object.defineProperty(exports,"registerRole",{enumerable:true,get:function(){return chunk23P7C25E_cjs.f}});Object.defineProperty(exports,"requireCap",{enumerable:true,get:function(){return chunk23P7C25E_cjs.o}});Object.defineProperty(exports,"requireCapabilities",{enumerable:true,get:function(){return chunk23P7C25E_cjs.l}});Object.defineProperty(exports,"retireRole",{enumerable:true,get:function(){return chunk23P7C25E_cjs.g}});Object.defineProperty(exports,"rolesWith",{enumerable:true,get:function(){return chunk23P7C25E_cjs.i}});Object.defineProperty(exports,"separationLost",{enumerable:true,get:function(){return chunk23P7C25E_cjs.m}});Object.defineProperty(exports,"stageOf",{enumerable:true,get:function(){return chunk23P7C25E_cjs.p}});Object.defineProperty(exports,"validateAction",{enumerable:true,get:function(){return chunk23P7C25E_cjs.L}});Object.defineProperty(exports,"WorkflowError",{enumerable:true,get:function(){return chunkS3BXVHO7_cjs.a}});Object.defineProperty(exports,"assertId",{enumerable:true,get:function(){return chunkS3BXVHO7_cjs.c}});Object.defineProperty(exports,"fail",{enumerable:true,get:function(){return chunkS3BXVHO7_cjs.b}});exports.VERSION=U;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';require('./chunk-PO2SPQJP.cjs');var chunkHHC5EZ54_cjs=require('./chunk-HHC5EZ54.cjs'),chunkCWBH7H52_cjs=require('./chunk-CWBH7H52.cjs'),chunkSJRRQZ3R_cjs=require('./chunk-SJRRQZ3R.cjs'),chunkS3BXVHO7_cjs=require('./chunk-S3BXVHO7.cjs');var U="0.4.0-stage";Object.defineProperty(exports,"complete",{enumerable:true,get:function(){return chunkHHC5EZ54_cjs.c}});Object.defineProperty(exports,"next",{enumerable:true,get:function(){return chunkHHC5EZ54_cjs.b}});Object.defineProperty(exports,"synthesizeBrief",{enumerable:true,get:function(){return chunkHHC5EZ54_cjs.a}});Object.defineProperty(exports,"ZERO_SPENT",{enumerable:true,get:function(){return chunkCWBH7H52_cjs.a}});Object.defineProperty(exports,"addSpent",{enumerable:true,get:function(){return chunkCWBH7H52_cjs.b}});Object.defineProperty(exports,"assignRole",{enumerable:true,get:function(){return chunkCWBH7H52_cjs.g}});Object.defineProperty(exports,"estimateTokens",{enumerable:true,get:function(){return chunkCWBH7H52_cjs.e}});Object.defineProperty(exports,"isExhausted",{enumerable:true,get:function(){return chunkCWBH7H52_cjs.d}});Object.defineProperty(exports,"openIteration",{enumerable:true,get:function(){return chunkCWBH7H52_cjs.f}});Object.defineProperty(exports,"plan",{enumerable:true,get:function(){return chunkCWBH7H52_cjs.j}});Object.defineProperty(exports,"remaining",{enumerable:true,get:function(){return chunkCWBH7H52_cjs.c}});Object.defineProperty(exports,"resourceCapsFor",{enumerable:true,get:function(){return chunkCWBH7H52_cjs.h}});Object.defineProperty(exports,"toExNodes",{enumerable:true,get:function(){return chunkCWBH7H52_cjs.i}});Object.defineProperty(exports,"addEvidence",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.y}});Object.defineProperty(exports,"addItem",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.v}});Object.defineProperty(exports,"appendEvent",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.c}});Object.defineProperty(exports,"applyAction",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.M}});Object.defineProperty(exports,"approversFor",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.k}});Object.defineProperty(exports,"assertPolicies",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.E}});Object.defineProperty(exports,"authorOf",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.G}});Object.defineProperty(exports,"canDo",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.n}});Object.defineProperty(exports,"checkGate",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.H}});Object.defineProperty(exports,"clearBlocker",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.A}});Object.defineProperty(exports,"coreRulesFor",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.K}});Object.defineProperty(exports,"createState",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.b}});Object.defineProperty(exports,"decide",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.J}});Object.defineProperty(exports,"editItem",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.w}});Object.defineProperty(exports,"evaluatePolicies",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.D}});Object.defineProperty(exports,"getItem",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.u}});Object.defineProperty(exports,"hasCapability",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.h}});Object.defineProperty(exports,"init",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.N}});Object.defineProperty(exports,"isTerminalStage",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.r}});Object.defineProperty(exports,"lastDispatchBefore",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.F}});Object.defineProperty(exports,"lastEvent",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.d}});Object.defineProperty(exports,"moveItem",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.x}});Object.defineProperty(exports,"nextStageOf",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.q}});Object.defineProperty(exports,"nowOf",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.a}});Object.defineProperty(exports,"raiseBlocker",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.z}});Object.defineProperty(exports,"raisePending",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.I}});Object.defineProperty(exports,"registerRole",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.f}});Object.defineProperty(exports,"requireCap",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.o}});Object.defineProperty(exports,"requireCapabilities",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.l}});Object.defineProperty(exports,"retireRole",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.g}});Object.defineProperty(exports,"rolesWith",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.i}});Object.defineProperty(exports,"separationLost",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.m}});Object.defineProperty(exports,"stageOf",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.p}});Object.defineProperty(exports,"validateAction",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.L}});Object.defineProperty(exports,"WorkflowError",{enumerable:true,get:function(){return chunkS3BXVHO7_cjs.a}});Object.defineProperty(exports,"assertId",{enumerable:true,get:function(){return chunkS3BXVHO7_cjs.c}});Object.defineProperty(exports,"fail",{enumerable:true,get:function(){return chunkS3BXVHO7_cjs.b}});exports.VERSION=U;//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["VERSION"],"mappings":"yPAAO,IAAMA,CAAAA,CAAU","file":"index.cjs","sourcesContent":["export const VERSION = \"0.3.0-stage\";\nexport * from \"./types.ts\";\nexport { WorkflowError, fail } from \"./errors.ts\";\nexport { createState, appendEvent, lastEvent, nowOf } from \"./state.ts\";\nexport {\n registerRole,\n retireRole,\n hasCapability,\n rolesWith,\n approversFor,\n requireCapabilities,\n separationLost,\n canDo,\n requireCap,\n} from \"./roles.ts\";\nexport {\n assertId,\n stageOf,\n nextStageOf,\n isTerminalStage,\n getItem,\n addItem,\n editItem,\n moveItem,\n addEvidence,\n raiseBlocker,\n clearBlocker,\n} from \"./items.ts\";\nexport type { ItemPatch } from \"./items.ts\";\nexport { evaluatePolicies, assertPolicies } from \"./policies.ts\";\nexport { checkGate, authorOf, lastDispatchBefore, raisePending, decide } from \"./gates.ts\";\nexport type { GateResult } from \"./gates.ts\";\nexport { ZERO_SPENT, addSpent, remaining, isExhausted, estimateTokens } from \"./budget.ts\";\nexport { plan, toExNodes, assignRole, resourceCapsFor, openIteration } from \"./planner.ts\";\nexport type { PlanOptions, PlanReason, PlanResult, Skipped } from \"./planner.ts\";\nexport { synthesizeBrief, next } from \"./brief.ts\";\nexport type { NextResult } from \"./brief.ts\";\nexport { complete } from \"./complete.ts\";\nexport { coreRulesFor } from \"./rules.ts\";\nexport { applyAction, validateAction, init } from \"./methodology.ts\";\nexport type { InitInput } from \"./methodology.ts\";\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["VERSION"],"mappings":"yPAAO,IAAMA,CAAAA,CAAU","file":"index.cjs","sourcesContent":["export const VERSION = \"0.4.0-stage\";\nexport * from \"./types.ts\";\nexport { WorkflowError, fail } from \"./errors.ts\";\nexport { createState, appendEvent, lastEvent, nowOf } from \"./state.ts\";\nexport {\n registerRole,\n retireRole,\n hasCapability,\n rolesWith,\n approversFor,\n requireCapabilities,\n separationLost,\n canDo,\n requireCap,\n} from \"./roles.ts\";\nexport {\n assertId,\n stageOf,\n nextStageOf,\n isTerminalStage,\n getItem,\n addItem,\n editItem,\n moveItem,\n addEvidence,\n raiseBlocker,\n clearBlocker,\n} from \"./items.ts\";\nexport type { ItemPatch } from \"./items.ts\";\nexport { evaluatePolicies, assertPolicies } from \"./policies.ts\";\nexport { checkGate, authorOf, lastDispatchBefore, raisePending, decide } from \"./gates.ts\";\nexport type { GateResult } from \"./gates.ts\";\nexport { ZERO_SPENT, addSpent, remaining, isExhausted, estimateTokens } from \"./budget.ts\";\nexport { plan, toExNodes, assignRole, resourceCapsFor, openIteration } from \"./planner.ts\";\nexport type { PlanOptions, PlanReason, PlanResult, Skipped } from \"./planner.ts\";\nexport { synthesizeBrief, next } from \"./brief.ts\";\nexport type { NextResult } from \"./brief.ts\";\nexport { complete } from \"./complete.ts\";\nexport { coreRulesFor } from \"./rules.ts\";\nexport { applyAction, validateAction, init } from \"./methodology.ts\";\nexport type { InitInput } from \"./methodology.ts\";\n"]}
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { ErrorCode, WorkflowState, MethodologyName, Stage, Role, Event, WorkItem, Evidence, NewItem, ItemStatus, Policy, Violation, Gate, Methodology, Transition, PendingHuman, Budget, Accounting, Iteration, Brief, Handoff, ApplyResult, Rule, Action } from './types.cjs';
2
- export { Baseline, Blocker, Capability, Ceremony, CeremonyInput, ClassOfService, CoreTerm, GateRequirement, ImpactAnalysis, ItemType, Lesson, LessonChange, ModelTier, Phase, PlannerOptions, Produced, Verdict } from './types.cjs';
1
+ import { ErrorCode, WorkflowState, MethodologyName, Stage, Role, Event, Evidence, NewItem, ItemPatch, WorkItem, ItemStatus, Policy, Violation, Gate, Methodology, Transition, PendingHuman, Budget, Accounting, Iteration, Brief, Handoff, ApplyResult, Rule, Action } from './types.cjs';
2
+ export { Baseline, Blocker, Capability, Ceremony, CeremonyInput, ClassOfService, CoreTerm, GateRequirement, ImpactAnalysis, ItemType, Lesson, LessonChange, ModelTier, Phase, PlannerOptions, Produced, Spent, Verdict } from './types.cjs';
3
3
  export { a as approversFor, c as canDo, h as hasCapability, r as registerRole, b as requireCap, d as requireCapabilities, e as retireRole, f as rolesWith, s as separationLost } from './roles-aneKYJ3Z.cjs';
4
4
  import { ExNode } from 'ex-flow';
5
5
 
@@ -42,7 +42,7 @@ declare function nextStageOf(state: WorkflowState, stageId: string): Stage | und
42
42
  declare function isTerminalStage(state: WorkflowState, stageId: string): boolean;
43
43
  declare function getItem(state: WorkflowState, id: string): WorkItem;
44
44
  declare function addItem(state: WorkflowState, input: NewItem, by: string, now?: string): WorkflowState;
45
- type ItemPatch = Partial<Omit<WorkItem, "id" | "stage" | "status" | "transitions" | "evidence" | "blockers">>;
45
+
46
46
  declare function editItem(state: WorkflowState, id: string, patch: ItemPatch, by: string, now?: string): WorkflowState;
47
47
  declare function moveItem(state: WorkflowState, id: string, to: {
48
48
  stage?: string;
@@ -129,6 +129,6 @@ interface InitInput<C> {
129
129
  }
130
130
  declare function init<C>(input: InitInput<C>): ApplyResult;
131
131
 
132
- declare const VERSION = "0.3.0-stage";
132
+ declare const VERSION = "0.4.0-stage";
133
133
 
134
- export { Accounting, Action, ApplyResult, Brief, Budget, ErrorCode, Event, Evidence, Gate, type GateResult, Handoff, type InitInput, type ItemPatch, ItemStatus, Iteration, Methodology, MethodologyName, NewItem, type NextResult, PendingHuman, type PlanOptions, type PlanReason, type PlanResult, Policy, Role, Rule, type Skipped, Stage, Transition, VERSION, Violation, WorkItem, WorkflowError, WorkflowState, ZERO_SPENT, addEvidence, addItem, addSpent, appendEvent, applyAction, assertId, assertPolicies, assignRole, authorOf, checkGate, clearBlocker, complete, coreRulesFor, createState, decide, editItem, estimateTokens, evaluatePolicies, fail, getItem, init, isExhausted, isTerminalStage, lastDispatchBefore, lastEvent, moveItem, next, nextStageOf, nowOf, openIteration, plan, raiseBlocker, raisePending, remaining, resourceCapsFor, stageOf, synthesizeBrief, toExNodes, validateAction };
134
+ export { Accounting, Action, ApplyResult, Brief, Budget, ErrorCode, Event, Evidence, Gate, type GateResult, Handoff, type InitInput, ItemPatch, ItemStatus, Iteration, Methodology, MethodologyName, NewItem, type NextResult, PendingHuman, type PlanOptions, type PlanReason, type PlanResult, Policy, Role, Rule, type Skipped, Stage, Transition, VERSION, Violation, WorkItem, WorkflowError, WorkflowState, ZERO_SPENT, addEvidence, addItem, addSpent, appendEvent, applyAction, assertId, assertPolicies, assignRole, authorOf, checkGate, clearBlocker, complete, coreRulesFor, createState, decide, editItem, estimateTokens, evaluatePolicies, fail, getItem, init, isExhausted, isTerminalStage, lastDispatchBefore, lastEvent, moveItem, next, nextStageOf, nowOf, openIteration, plan, raiseBlocker, raisePending, remaining, resourceCapsFor, stageOf, synthesizeBrief, toExNodes, validateAction };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { ErrorCode, WorkflowState, MethodologyName, Stage, Role, Event, WorkItem, Evidence, NewItem, ItemStatus, Policy, Violation, Gate, Methodology, Transition, PendingHuman, Budget, Accounting, Iteration, Brief, Handoff, ApplyResult, Rule, Action } from './types.js';
2
- export { Baseline, Blocker, Capability, Ceremony, CeremonyInput, ClassOfService, CoreTerm, GateRequirement, ImpactAnalysis, ItemType, Lesson, LessonChange, ModelTier, Phase, PlannerOptions, Produced, Verdict } from './types.js';
1
+ import { ErrorCode, WorkflowState, MethodologyName, Stage, Role, Event, Evidence, NewItem, ItemPatch, WorkItem, ItemStatus, Policy, Violation, Gate, Methodology, Transition, PendingHuman, Budget, Accounting, Iteration, Brief, Handoff, ApplyResult, Rule, Action } from './types.js';
2
+ export { Baseline, Blocker, Capability, Ceremony, CeremonyInput, ClassOfService, CoreTerm, GateRequirement, ImpactAnalysis, ItemType, Lesson, LessonChange, ModelTier, Phase, PlannerOptions, Produced, Spent, Verdict } from './types.js';
3
3
  export { a as approversFor, c as canDo, h as hasCapability, r as registerRole, b as requireCap, d as requireCapabilities, e as retireRole, f as rolesWith, s as separationLost } from './roles-BLBRKhUZ.js';
4
4
  import { ExNode } from 'ex-flow';
5
5
 
@@ -42,7 +42,7 @@ declare function nextStageOf(state: WorkflowState, stageId: string): Stage | und
42
42
  declare function isTerminalStage(state: WorkflowState, stageId: string): boolean;
43
43
  declare function getItem(state: WorkflowState, id: string): WorkItem;
44
44
  declare function addItem(state: WorkflowState, input: NewItem, by: string, now?: string): WorkflowState;
45
- type ItemPatch = Partial<Omit<WorkItem, "id" | "stage" | "status" | "transitions" | "evidence" | "blockers">>;
45
+
46
46
  declare function editItem(state: WorkflowState, id: string, patch: ItemPatch, by: string, now?: string): WorkflowState;
47
47
  declare function moveItem(state: WorkflowState, id: string, to: {
48
48
  stage?: string;
@@ -129,6 +129,6 @@ interface InitInput<C> {
129
129
  }
130
130
  declare function init<C>(input: InitInput<C>): ApplyResult;
131
131
 
132
- declare const VERSION = "0.3.0-stage";
132
+ declare const VERSION = "0.4.0-stage";
133
133
 
134
- export { Accounting, Action, ApplyResult, Brief, Budget, ErrorCode, Event, Evidence, Gate, type GateResult, Handoff, type InitInput, type ItemPatch, ItemStatus, Iteration, Methodology, MethodologyName, NewItem, type NextResult, PendingHuman, type PlanOptions, type PlanReason, type PlanResult, Policy, Role, Rule, type Skipped, Stage, Transition, VERSION, Violation, WorkItem, WorkflowError, WorkflowState, ZERO_SPENT, addEvidence, addItem, addSpent, appendEvent, applyAction, assertId, assertPolicies, assignRole, authorOf, checkGate, clearBlocker, complete, coreRulesFor, createState, decide, editItem, estimateTokens, evaluatePolicies, fail, getItem, init, isExhausted, isTerminalStage, lastDispatchBefore, lastEvent, moveItem, next, nextStageOf, nowOf, openIteration, plan, raiseBlocker, raisePending, remaining, resourceCapsFor, stageOf, synthesizeBrief, toExNodes, validateAction };
134
+ export { Accounting, Action, ApplyResult, Brief, Budget, ErrorCode, Event, Evidence, Gate, type GateResult, Handoff, type InitInput, ItemPatch, ItemStatus, Iteration, Methodology, MethodologyName, NewItem, type NextResult, PendingHuman, type PlanOptions, type PlanReason, type PlanResult, Policy, Role, Rule, type Skipped, Stage, Transition, VERSION, Violation, WorkItem, WorkflowError, WorkflowState, ZERO_SPENT, addEvidence, addItem, addSpent, appendEvent, applyAction, assertId, assertPolicies, assignRole, authorOf, checkGate, clearBlocker, complete, coreRulesFor, createState, decide, editItem, estimateTokens, evaluatePolicies, fail, getItem, init, isExhausted, isTerminalStage, lastDispatchBefore, lastEvent, moveItem, next, nextStageOf, nowOf, openIteration, plan, raiseBlocker, raisePending, remaining, resourceCapsFor, stageOf, synthesizeBrief, toExNodes, validateAction };
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import'./chunk-KIQOUUEZ.mjs';export{c as complete,b as next,a as synthesizeBrief}from'./chunk-WOKNWJKU.mjs';export{a as ZERO_SPENT,b as addSpent,g as assignRole,e as estimateTokens,d as isExhausted,f as openIteration,j as plan,c as remaining,h as resourceCapsFor,i as toExNodes}from'./chunk-ZX4DAMTG.mjs';export{y as addEvidence,v as addItem,c as appendEvent,M as applyAction,k as approversFor,E as assertPolicies,G as authorOf,n as canDo,H as checkGate,A as clearBlocker,K as coreRulesFor,b as createState,J as decide,w as editItem,D as evaluatePolicies,u as getItem,h as hasCapability,N as init,r as isTerminalStage,F as lastDispatchBefore,d as lastEvent,x as moveItem,q as nextStageOf,a as nowOf,z as raiseBlocker,I as raisePending,f as registerRole,o as requireCap,l as requireCapabilities,g as retireRole,i as rolesWith,m as separationLost,p as stageOf,L as validateAction}from'./chunk-FLCYD2QF.mjs';export{a as WorkflowError,c as assertId,b as fail}from'./chunk-2FRRD6A3.mjs';var U="0.3.0-stage";export{U as VERSION};//# sourceMappingURL=index.mjs.map
1
+ import'./chunk-KIQOUUEZ.mjs';export{c as complete,b as next,a as synthesizeBrief}from'./chunk-NZ2DIDOD.mjs';export{a as ZERO_SPENT,b as addSpent,g as assignRole,e as estimateTokens,d as isExhausted,f as openIteration,j as plan,c as remaining,h as resourceCapsFor,i as toExNodes}from'./chunk-GFH2FEZH.mjs';export{y as addEvidence,v as addItem,c as appendEvent,M as applyAction,k as approversFor,E as assertPolicies,G as authorOf,n as canDo,H as checkGate,A as clearBlocker,K as coreRulesFor,b as createState,J as decide,w as editItem,D as evaluatePolicies,u as getItem,h as hasCapability,N as init,r as isTerminalStage,F as lastDispatchBefore,d as lastEvent,x as moveItem,q as nextStageOf,a as nowOf,z as raiseBlocker,I as raisePending,f as registerRole,o as requireCap,l as requireCapabilities,g as retireRole,i as rolesWith,m as separationLost,p as stageOf,L as validateAction}from'./chunk-SHAPFMVP.mjs';export{a as WorkflowError,c as assertId,b as fail}from'./chunk-2FRRD6A3.mjs';var U="0.4.0-stage";export{U as VERSION};//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["VERSION"],"mappings":"s9BAAO,IAAMA,CAAAA,CAAU","file":"index.mjs","sourcesContent":["export const VERSION = \"0.3.0-stage\";\nexport * from \"./types.ts\";\nexport { WorkflowError, fail } from \"./errors.ts\";\nexport { createState, appendEvent, lastEvent, nowOf } from \"./state.ts\";\nexport {\n registerRole,\n retireRole,\n hasCapability,\n rolesWith,\n approversFor,\n requireCapabilities,\n separationLost,\n canDo,\n requireCap,\n} from \"./roles.ts\";\nexport {\n assertId,\n stageOf,\n nextStageOf,\n isTerminalStage,\n getItem,\n addItem,\n editItem,\n moveItem,\n addEvidence,\n raiseBlocker,\n clearBlocker,\n} from \"./items.ts\";\nexport type { ItemPatch } from \"./items.ts\";\nexport { evaluatePolicies, assertPolicies } from \"./policies.ts\";\nexport { checkGate, authorOf, lastDispatchBefore, raisePending, decide } from \"./gates.ts\";\nexport type { GateResult } from \"./gates.ts\";\nexport { ZERO_SPENT, addSpent, remaining, isExhausted, estimateTokens } from \"./budget.ts\";\nexport { plan, toExNodes, assignRole, resourceCapsFor, openIteration } from \"./planner.ts\";\nexport type { PlanOptions, PlanReason, PlanResult, Skipped } from \"./planner.ts\";\nexport { synthesizeBrief, next } from \"./brief.ts\";\nexport type { NextResult } from \"./brief.ts\";\nexport { complete } from \"./complete.ts\";\nexport { coreRulesFor } from \"./rules.ts\";\nexport { applyAction, validateAction, init } from \"./methodology.ts\";\nexport type { InitInput } from \"./methodology.ts\";\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["VERSION"],"mappings":"s9BAAO,IAAMA,CAAAA,CAAU","file":"index.mjs","sourcesContent":["export const VERSION = \"0.4.0-stage\";\nexport * from \"./types.ts\";\nexport { WorkflowError, fail } from \"./errors.ts\";\nexport { createState, appendEvent, lastEvent, nowOf } from \"./state.ts\";\nexport {\n registerRole,\n retireRole,\n hasCapability,\n rolesWith,\n approversFor,\n requireCapabilities,\n separationLost,\n canDo,\n requireCap,\n} from \"./roles.ts\";\nexport {\n assertId,\n stageOf,\n nextStageOf,\n isTerminalStage,\n getItem,\n addItem,\n editItem,\n moveItem,\n addEvidence,\n raiseBlocker,\n clearBlocker,\n} from \"./items.ts\";\nexport type { ItemPatch } from \"./items.ts\";\nexport { evaluatePolicies, assertPolicies } from \"./policies.ts\";\nexport { checkGate, authorOf, lastDispatchBefore, raisePending, decide } from \"./gates.ts\";\nexport type { GateResult } from \"./gates.ts\";\nexport { ZERO_SPENT, addSpent, remaining, isExhausted, estimateTokens } from \"./budget.ts\";\nexport { plan, toExNodes, assignRole, resourceCapsFor, openIteration } from \"./planner.ts\";\nexport type { PlanOptions, PlanReason, PlanResult, Skipped } from \"./planner.ts\";\nexport { synthesizeBrief, next } from \"./brief.ts\";\nexport type { NextResult } from \"./brief.ts\";\nexport { complete } from \"./complete.ts\";\nexport { coreRulesFor } from \"./rules.ts\";\nexport { applyAction, validateAction, init } from \"./methodology.ts\";\nexport type { InitInput } from \"./methodology.ts\";\n"]}
@@ -1,2 +1,2 @@
1
- 'use strict';var chunk7HZXZF3L_cjs=require('../chunk-7HZXZF3L.cjs');require('../chunk-23P7C25E.cjs'),require('../chunk-S3BXVHO7.cjs');Object.defineProperty(exports,"ACTIVE",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.a}});Object.defineProperty(exports,"CADENCE_EVENT",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.s}});Object.defineProperty(exports,"CLASSES",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.k}});Object.defineProperty(exports,"DAY_MS",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.l}});Object.defineProperty(exports,"DEFAULT_COLUMNS",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.n}});Object.defineProperty(exports,"KANBAN_CADENCES",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.j}});Object.defineProperty(exports,"KANBAN_VOCABULARY",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.F}});Object.defineProperty(exports,"OPEN",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.b}});Object.defineProperty(exports,"activeExpedites",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.h}});Object.defineProperty(exports,"addedAt",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.p}});Object.defineProperty(exports,"board",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.r}});Object.defineProperty(exports,"byClassThenAge",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.H}});Object.defineProperty(exports,"cadencesDue",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.t}});Object.defineProperty(exports,"cardAge",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.q}});Object.defineProperty(exports,"columnIndex",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.f}});Object.defineProperty(exports,"columnStays",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.w}});Object.defineProperty(exports,"commitmentColumn",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.d}});Object.defineProperty(exports,"configOf",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.m}});Object.defineProperty(exports,"deliveryColumn",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.e}});Object.defineProperty(exports,"enteredStageAt",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.i}});Object.defineProperty(exports,"kanban",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.I}});Object.defineProperty(exports,"kanbanCeremonies",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.B}});Object.defineProperty(exports,"kanbanMetrics",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.x}});Object.defineProperty(exports,"kanbanRoles",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.C}});Object.defineProperty(exports,"kanbanRules",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.D}});Object.defineProperty(exports,"kanbanStages",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.E}});Object.defineProperty(exports,"onBoard",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.g}});Object.defineProperty(exports,"opsReport",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.y}});Object.defineProperty(exports,"optionsColumn",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.c}});Object.defineProperty(exports,"percentile",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.v}});Object.defineProperty(exports,"priorityByClass",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.G}});Object.defineProperty(exports,"replay",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.u}});Object.defineProperty(exports,"riskReport",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.z}});Object.defineProperty(exports,"validateKanbanConfig",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.o}});Object.defineProperty(exports,"wantItems",{enumerable:true,get:function(){return chunk7HZXZF3L_cjs.A}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkUM5X2JHB_cjs=require('../chunk-UM5X2JHB.cjs');require('../chunk-SJRRQZ3R.cjs'),require('../chunk-S3BXVHO7.cjs');Object.defineProperty(exports,"ACTIVE",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.a}});Object.defineProperty(exports,"CADENCE_EVENT",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.s}});Object.defineProperty(exports,"CLASSES",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.k}});Object.defineProperty(exports,"DAY_MS",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.l}});Object.defineProperty(exports,"DEFAULT_COLUMNS",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.n}});Object.defineProperty(exports,"KANBAN_CADENCES",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.j}});Object.defineProperty(exports,"KANBAN_VOCABULARY",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.F}});Object.defineProperty(exports,"OPEN",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.b}});Object.defineProperty(exports,"activeExpedites",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.h}});Object.defineProperty(exports,"addedAt",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.p}});Object.defineProperty(exports,"board",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.r}});Object.defineProperty(exports,"byClassThenAge",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.H}});Object.defineProperty(exports,"cadencesDue",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.t}});Object.defineProperty(exports,"cardAge",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.q}});Object.defineProperty(exports,"columnIndex",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.f}});Object.defineProperty(exports,"columnStays",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.w}});Object.defineProperty(exports,"commitmentColumn",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.d}});Object.defineProperty(exports,"configOf",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.m}});Object.defineProperty(exports,"deliveryColumn",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.e}});Object.defineProperty(exports,"enteredStageAt",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.i}});Object.defineProperty(exports,"kanban",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.I}});Object.defineProperty(exports,"kanbanCeremonies",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.B}});Object.defineProperty(exports,"kanbanMetrics",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.x}});Object.defineProperty(exports,"kanbanRoles",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.C}});Object.defineProperty(exports,"kanbanRules",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.D}});Object.defineProperty(exports,"kanbanStages",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.E}});Object.defineProperty(exports,"onBoard",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.g}});Object.defineProperty(exports,"opsReport",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.y}});Object.defineProperty(exports,"optionsColumn",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.c}});Object.defineProperty(exports,"percentile",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.v}});Object.defineProperty(exports,"priorityByClass",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.G}});Object.defineProperty(exports,"replay",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.u}});Object.defineProperty(exports,"riskReport",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.z}});Object.defineProperty(exports,"validateKanbanConfig",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.o}});Object.defineProperty(exports,"wantItems",{enumerable:true,get:function(){return chunkUM5X2JHB_cjs.A}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- export{a as ACTIVE,s as CADENCE_EVENT,k as CLASSES,l as DAY_MS,n as DEFAULT_COLUMNS,j as KANBAN_CADENCES,F as KANBAN_VOCABULARY,b as OPEN,h as activeExpedites,p as addedAt,r as board,H as byClassThenAge,t as cadencesDue,q as cardAge,f as columnIndex,w as columnStays,d as commitmentColumn,m as configOf,e as deliveryColumn,i as enteredStageAt,I as kanban,B as kanbanCeremonies,x as kanbanMetrics,C as kanbanRoles,D as kanbanRules,E as kanbanStages,g as onBoard,y as opsReport,c as optionsColumn,v as percentile,G as priorityByClass,u as replay,z as riskReport,o as validateKanbanConfig,A as wantItems}from'../chunk-UOGNVWVO.mjs';import'../chunk-FLCYD2QF.mjs';import'../chunk-2FRRD6A3.mjs';//# sourceMappingURL=index.mjs.map
1
+ export{a as ACTIVE,s as CADENCE_EVENT,k as CLASSES,l as DAY_MS,n as DEFAULT_COLUMNS,j as KANBAN_CADENCES,F as KANBAN_VOCABULARY,b as OPEN,h as activeExpedites,p as addedAt,r as board,H as byClassThenAge,t as cadencesDue,q as cardAge,f as columnIndex,w as columnStays,d as commitmentColumn,m as configOf,e as deliveryColumn,i as enteredStageAt,I as kanban,B as kanbanCeremonies,x as kanbanMetrics,C as kanbanRoles,D as kanbanRules,E as kanbanStages,g as onBoard,y as opsReport,c as optionsColumn,v as percentile,G as priorityByClass,u as replay,z as riskReport,o as validateKanbanConfig,A as wantItems}from'../chunk-GATJZYTB.mjs';import'../chunk-SHAPFMVP.mjs';import'../chunk-2FRRD6A3.mjs';//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkDXC2RSN5_cjs=require('../chunk-DXC2RSN5.cjs');require('../chunk-S3BXVHO7.cjs');Object.defineProperty(exports,"DRAFT_07",{enumerable:true,get:function(){return chunkDXC2RSN5_cjs.c}});Object.defineProperty(exports,"assertValid",{enumerable:true,get:function(){return chunkDXC2RSN5_cjs.b}});Object.defineProperty(exports,"handoffSchema",{enumerable:true,get:function(){return chunkDXC2RSN5_cjs.h}});Object.defineProperty(exports,"itemPatchSchema",{enumerable:true,get:function(){return chunkDXC2RSN5_cjs.g}});Object.defineProperty(exports,"kanbanConfigSchema",{enumerable:true,get:function(){return chunkDXC2RSN5_cjs.j}});Object.defineProperty(exports,"newItemSchema",{enumerable:true,get:function(){return chunkDXC2RSN5_cjs.f}});Object.defineProperty(exports,"roleSchema",{enumerable:true,get:function(){return chunkDXC2RSN5_cjs.e}});Object.defineProperty(exports,"scrumConfigSchema",{enumerable:true,get:function(){return chunkDXC2RSN5_cjs.i}});Object.defineProperty(exports,"validate",{enumerable:true,get:function(){return chunkDXC2RSN5_cjs.a}});Object.defineProperty(exports,"waterfallConfigSchema",{enumerable:true,get:function(){return chunkDXC2RSN5_cjs.k}});Object.defineProperty(exports,"workflowStateSchema",{enumerable:true,get:function(){return chunkDXC2RSN5_cjs.d}});//# sourceMappingURL=index.cjs.map
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -0,0 +1,57 @@
1
+ /** The JSON Schema (draft-07) subset ts-json-schema-generator emits for our types and the validator understands. */
2
+ interface JsonSchema {
3
+ $schema?: string;
4
+ $ref?: string;
5
+ definitions?: Record<string, JsonSchema>;
6
+ type?: string | string[];
7
+ const?: unknown;
8
+ enum?: unknown[];
9
+ properties?: Record<string, JsonSchema>;
10
+ required?: string[];
11
+ additionalProperties?: boolean | JsonSchema;
12
+ items?: JsonSchema;
13
+ anyOf?: JsonSchema[];
14
+ minimum?: number;
15
+ maximum?: number;
16
+ minLength?: number;
17
+ pattern?: string;
18
+ description?: string;
19
+ }
20
+ /** A self-contained document: the root points into its own definitions. */
21
+ interface JsonSchemaDocument extends JsonSchema {
22
+ $schema: string;
23
+ $ref: string;
24
+ definitions: Record<string, JsonSchema>;
25
+ }
26
+ interface SchemaError {
27
+ /** JSON pointer to the offending value ("/" for the root) */
28
+ path: string;
29
+ /** which keyword failed: type, const, enum, required, additionalProperties, minimum, maximum, minLength, pattern */
30
+ keyword: string;
31
+ message: string;
32
+ expected: string;
33
+ found: string;
34
+ }
35
+
36
+ /** Validate `value` against `schema` (a document: `$ref`s resolve against its `definitions`). Returns every error found. */
37
+ declare function validate(schema: JsonSchema, value: unknown): SchemaError[];
38
+ /** Throw WorkflowError("invalid-input") describing the first problem when `value` does not match `schema`. */
39
+ declare function assertValid(schema: JsonSchema, value: unknown, what: string): void;
40
+
41
+ declare const DRAFT_07 = "http://json-schema.org/draft-07/schema#";
42
+ /** `.workflow/state.json` */
43
+ declare const workflowStateSchema: JsonSchemaDocument;
44
+ /** a role manifest (`.workflow/roles/*.json`, `exwf role add`) */
45
+ declare const roleSchema: JsonSchemaDocument;
46
+ /** `exwf add <item.json>` */
47
+ declare const newItemSchema: JsonSchemaDocument;
48
+ /** `exwf edit <id> <patch.json>` */
49
+ declare const itemPatchSchema: JsonSchemaDocument;
50
+ /** `exwf complete <id> <handoff.json>` */
51
+ declare const handoffSchema: JsonSchemaDocument;
52
+ /** `exwf init scrum --config` / the scrum-master policy.json */
53
+ declare const scrumConfigSchema: JsonSchemaDocument;
54
+ declare const kanbanConfigSchema: JsonSchemaDocument;
55
+ declare const waterfallConfigSchema: JsonSchemaDocument;
56
+
57
+ export { DRAFT_07, type JsonSchema, type JsonSchemaDocument, type SchemaError, assertValid, handoffSchema, itemPatchSchema, kanbanConfigSchema, newItemSchema, roleSchema, scrumConfigSchema, validate, waterfallConfigSchema, workflowStateSchema };
@@ -0,0 +1,57 @@
1
+ /** The JSON Schema (draft-07) subset ts-json-schema-generator emits for our types and the validator understands. */
2
+ interface JsonSchema {
3
+ $schema?: string;
4
+ $ref?: string;
5
+ definitions?: Record<string, JsonSchema>;
6
+ type?: string | string[];
7
+ const?: unknown;
8
+ enum?: unknown[];
9
+ properties?: Record<string, JsonSchema>;
10
+ required?: string[];
11
+ additionalProperties?: boolean | JsonSchema;
12
+ items?: JsonSchema;
13
+ anyOf?: JsonSchema[];
14
+ minimum?: number;
15
+ maximum?: number;
16
+ minLength?: number;
17
+ pattern?: string;
18
+ description?: string;
19
+ }
20
+ /** A self-contained document: the root points into its own definitions. */
21
+ interface JsonSchemaDocument extends JsonSchema {
22
+ $schema: string;
23
+ $ref: string;
24
+ definitions: Record<string, JsonSchema>;
25
+ }
26
+ interface SchemaError {
27
+ /** JSON pointer to the offending value ("/" for the root) */
28
+ path: string;
29
+ /** which keyword failed: type, const, enum, required, additionalProperties, minimum, maximum, minLength, pattern */
30
+ keyword: string;
31
+ message: string;
32
+ expected: string;
33
+ found: string;
34
+ }
35
+
36
+ /** Validate `value` against `schema` (a document: `$ref`s resolve against its `definitions`). Returns every error found. */
37
+ declare function validate(schema: JsonSchema, value: unknown): SchemaError[];
38
+ /** Throw WorkflowError("invalid-input") describing the first problem when `value` does not match `schema`. */
39
+ declare function assertValid(schema: JsonSchema, value: unknown, what: string): void;
40
+
41
+ declare const DRAFT_07 = "http://json-schema.org/draft-07/schema#";
42
+ /** `.workflow/state.json` */
43
+ declare const workflowStateSchema: JsonSchemaDocument;
44
+ /** a role manifest (`.workflow/roles/*.json`, `exwf role add`) */
45
+ declare const roleSchema: JsonSchemaDocument;
46
+ /** `exwf add <item.json>` */
47
+ declare const newItemSchema: JsonSchemaDocument;
48
+ /** `exwf edit <id> <patch.json>` */
49
+ declare const itemPatchSchema: JsonSchemaDocument;
50
+ /** `exwf complete <id> <handoff.json>` */
51
+ declare const handoffSchema: JsonSchemaDocument;
52
+ /** `exwf init scrum --config` / the scrum-master policy.json */
53
+ declare const scrumConfigSchema: JsonSchemaDocument;
54
+ declare const kanbanConfigSchema: JsonSchemaDocument;
55
+ declare const waterfallConfigSchema: JsonSchemaDocument;
56
+
57
+ export { DRAFT_07, type JsonSchema, type JsonSchemaDocument, type SchemaError, assertValid, handoffSchema, itemPatchSchema, kanbanConfigSchema, newItemSchema, roleSchema, scrumConfigSchema, validate, waterfallConfigSchema, workflowStateSchema };
@@ -0,0 +1,2 @@
1
+ export{c as DRAFT_07,b as assertValid,h as handoffSchema,g as itemPatchSchema,j as kanbanConfigSchema,f as newItemSchema,e as roleSchema,i as scrumConfigSchema,a as validate,k as waterfallConfigSchema,d as workflowStateSchema}from'../chunk-S22CPYXJ.mjs';import'../chunk-2FRRD6A3.mjs';//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
@@ -1,2 +1,2 @@
1
- 'use strict';var chunk4A4TD4MH_cjs=require('../chunk-4A4TD4MH.cjs');require('../chunk-2IKIBB73.cjs');var chunk23P7C25E_cjs=require('../chunk-23P7C25E.cjs');require('../chunk-S3BXVHO7.cjs');Object.defineProperty(exports,"SCRUM_VOCABULARY",{enumerable:true,get:function(){return chunk4A4TD4MH_cjs.h}});Object.defineProperty(exports,"closeSprint",{enumerable:true,get:function(){return chunk4A4TD4MH_cjs.j}});Object.defineProperty(exports,"configOf",{enumerable:true,get:function(){return chunk4A4TD4MH_cjs.i}});Object.defineProperty(exports,"dailyReport",{enumerable:true,get:function(){return chunk4A4TD4MH_cjs.a}});Object.defineProperty(exports,"scrum",{enumerable:true,get:function(){return chunk4A4TD4MH_cjs.k}});Object.defineProperty(exports,"scrumCeremonies",{enumerable:true,get:function(){return chunk4A4TD4MH_cjs.b}});Object.defineProperty(exports,"scrumMetrics",{enumerable:true,get:function(){return chunk4A4TD4MH_cjs.d}});Object.defineProperty(exports,"scrumRoles",{enumerable:true,get:function(){return chunk4A4TD4MH_cjs.e}});Object.defineProperty(exports,"scrumRules",{enumerable:true,get:function(){return chunk4A4TD4MH_cjs.f}});Object.defineProperty(exports,"scrumStages",{enumerable:true,get:function(){return chunk4A4TD4MH_cjs.g}});Object.defineProperty(exports,"validateScrumConfig",{enumerable:true,get:function(){return chunk4A4TD4MH_cjs.c}});Object.defineProperty(exports,"canDo",{enumerable:true,get:function(){return chunk23P7C25E_cjs.n}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunk7KF5K3L7_cjs=require('../chunk-7KF5K3L7.cjs');require('../chunk-CWBH7H52.cjs');var chunkSJRRQZ3R_cjs=require('../chunk-SJRRQZ3R.cjs');require('../chunk-S3BXVHO7.cjs');Object.defineProperty(exports,"SCRUM_VOCABULARY",{enumerable:true,get:function(){return chunk7KF5K3L7_cjs.h}});Object.defineProperty(exports,"closeSprint",{enumerable:true,get:function(){return chunk7KF5K3L7_cjs.j}});Object.defineProperty(exports,"configOf",{enumerable:true,get:function(){return chunk7KF5K3L7_cjs.i}});Object.defineProperty(exports,"dailyReport",{enumerable:true,get:function(){return chunk7KF5K3L7_cjs.a}});Object.defineProperty(exports,"scrum",{enumerable:true,get:function(){return chunk7KF5K3L7_cjs.k}});Object.defineProperty(exports,"scrumCeremonies",{enumerable:true,get:function(){return chunk7KF5K3L7_cjs.b}});Object.defineProperty(exports,"scrumMetrics",{enumerable:true,get:function(){return chunk7KF5K3L7_cjs.d}});Object.defineProperty(exports,"scrumRoles",{enumerable:true,get:function(){return chunk7KF5K3L7_cjs.e}});Object.defineProperty(exports,"scrumRules",{enumerable:true,get:function(){return chunk7KF5K3L7_cjs.f}});Object.defineProperty(exports,"scrumStages",{enumerable:true,get:function(){return chunk7KF5K3L7_cjs.g}});Object.defineProperty(exports,"validateScrumConfig",{enumerable:true,get:function(){return chunk7KF5K3L7_cjs.c}});Object.defineProperty(exports,"canDo",{enumerable:true,get:function(){return chunkSJRRQZ3R_cjs.n}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- export{h as SCRUM_VOCABULARY,j as closeSprint,i as configOf,a as dailyReport,k as scrum,b as scrumCeremonies,d as scrumMetrics,e as scrumRoles,f as scrumRules,g as scrumStages,c as validateScrumConfig}from'../chunk-R27STIER.mjs';import'../chunk-ZX4DAMTG.mjs';export{n as canDo}from'../chunk-FLCYD2QF.mjs';import'../chunk-2FRRD6A3.mjs';//# sourceMappingURL=index.mjs.map
1
+ export{h as SCRUM_VOCABULARY,j as closeSprint,i as configOf,a as dailyReport,k as scrum,b as scrumCeremonies,d as scrumMetrics,e as scrumRoles,f as scrumRules,g as scrumStages,c as validateScrumConfig}from'../chunk-L2ZN6HEL.mjs';import'../chunk-GFH2FEZH.mjs';export{n as canDo}from'../chunk-SHAPFMVP.mjs';import'../chunk-2FRRD6A3.mjs';//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map
package/dist/types.d.cts CHANGED
@@ -62,6 +62,8 @@ interface WorkItem {
62
62
  /** change-request: impact analysis required before the change control board decides */
63
63
  impactAnalysis?: ImpactAnalysis;
64
64
  }
65
+ /** Fields `editItem` / `exwf edit` may change. */
66
+ type ItemPatch = Partial<Omit<WorkItem, "id" | "stage" | "status" | "transitions" | "evidence" | "blockers">>;
65
67
  /** Fields a caller supplies to addItem; the rest are defaulted. */
66
68
  type NewItem = Pick<WorkItem, "id" | "title"> & Partial<Omit<WorkItem, "id" | "title" | "stage" | "status" | "evidence" | "blockers" | "transitions">> & {
67
69
  stage?: string;
@@ -113,11 +115,16 @@ interface Budget {
113
115
  turns?: number;
114
116
  wallclockMs?: number;
115
117
  }
118
+ interface Spent {
119
+ tokens: number;
120
+ turns: number;
121
+ wallclockMs: number;
122
+ }
116
123
  interface Iteration {
117
124
  id: string;
118
125
  goal: string;
119
126
  budget: Budget;
120
- spent: Required<Budget>;
127
+ spent: Spent;
121
128
  startedAt: string;
122
129
  endedAt?: string;
123
130
  committed: string[];
@@ -356,4 +363,4 @@ interface Methodology<C = unknown> {
356
363
  }
357
364
  type ErrorCode = "unknown-item" | "duplicate-item" | "unknown-role" | "duplicate-role" | "unknown-stage" | "missing-capability" | "exclusive-capability" | "role-has-open-items" | "invalid-transition" | "policy-unmet" | "gate-unmet" | "conflict-of-interest" | "handoff-invalid" | "accounting-invalid" | "rule-violation" | "planner-error" | "no-op" | "unknown-pending" | "unknown-ceremony" | "state-version" | "config-invalid" | "budget-exhausted" | "invalid-input";
358
365
 
359
- export type { Accounting, Action, ApplyResult, Baseline, Blocker, Brief, Budget, Capability, Ceremony, CeremonyInput, ClassOfService, CoreTerm, ErrorCode, Event, Evidence, Gate, GateRequirement, Handoff, ImpactAnalysis, ItemStatus, ItemType, Iteration, Lesson, LessonChange, Methodology, MethodologyName, ModelTier, NewItem, PendingHuman, Phase, PlannerOptions, Policy, Produced, Role, Rule, Stage, Transition, Verdict, Violation, WorkItem, WorkflowState };
366
+ export type { Accounting, Action, ApplyResult, Baseline, Blocker, Brief, Budget, Capability, Ceremony, CeremonyInput, ClassOfService, CoreTerm, ErrorCode, Event, Evidence, Gate, GateRequirement, Handoff, ImpactAnalysis, ItemPatch, ItemStatus, ItemType, Iteration, Lesson, LessonChange, Methodology, MethodologyName, ModelTier, NewItem, PendingHuman, Phase, PlannerOptions, Policy, Produced, Role, Rule, Spent, Stage, Transition, Verdict, Violation, WorkItem, WorkflowState };
package/dist/types.d.ts CHANGED
@@ -62,6 +62,8 @@ interface WorkItem {
62
62
  /** change-request: impact analysis required before the change control board decides */
63
63
  impactAnalysis?: ImpactAnalysis;
64
64
  }
65
+ /** Fields `editItem` / `exwf edit` may change. */
66
+ type ItemPatch = Partial<Omit<WorkItem, "id" | "stage" | "status" | "transitions" | "evidence" | "blockers">>;
65
67
  /** Fields a caller supplies to addItem; the rest are defaulted. */
66
68
  type NewItem = Pick<WorkItem, "id" | "title"> & Partial<Omit<WorkItem, "id" | "title" | "stage" | "status" | "evidence" | "blockers" | "transitions">> & {
67
69
  stage?: string;
@@ -113,11 +115,16 @@ interface Budget {
113
115
  turns?: number;
114
116
  wallclockMs?: number;
115
117
  }
118
+ interface Spent {
119
+ tokens: number;
120
+ turns: number;
121
+ wallclockMs: number;
122
+ }
116
123
  interface Iteration {
117
124
  id: string;
118
125
  goal: string;
119
126
  budget: Budget;
120
- spent: Required<Budget>;
127
+ spent: Spent;
121
128
  startedAt: string;
122
129
  endedAt?: string;
123
130
  committed: string[];
@@ -356,4 +363,4 @@ interface Methodology<C = unknown> {
356
363
  }
357
364
  type ErrorCode = "unknown-item" | "duplicate-item" | "unknown-role" | "duplicate-role" | "unknown-stage" | "missing-capability" | "exclusive-capability" | "role-has-open-items" | "invalid-transition" | "policy-unmet" | "gate-unmet" | "conflict-of-interest" | "handoff-invalid" | "accounting-invalid" | "rule-violation" | "planner-error" | "no-op" | "unknown-pending" | "unknown-ceremony" | "state-version" | "config-invalid" | "budget-exhausted" | "invalid-input";
358
365
 
359
- export type { Accounting, Action, ApplyResult, Baseline, Blocker, Brief, Budget, Capability, Ceremony, CeremonyInput, ClassOfService, CoreTerm, ErrorCode, Event, Evidence, Gate, GateRequirement, Handoff, ImpactAnalysis, ItemStatus, ItemType, Iteration, Lesson, LessonChange, Methodology, MethodologyName, ModelTier, NewItem, PendingHuman, Phase, PlannerOptions, Policy, Produced, Role, Rule, Stage, Transition, Verdict, Violation, WorkItem, WorkflowState };
366
+ export type { Accounting, Action, ApplyResult, Baseline, Blocker, Brief, Budget, Capability, Ceremony, CeremonyInput, ClassOfService, CoreTerm, ErrorCode, Event, Evidence, Gate, GateRequirement, Handoff, ImpactAnalysis, ItemPatch, ItemStatus, ItemType, Iteration, Lesson, LessonChange, Methodology, MethodologyName, ModelTier, NewItem, PendingHuman, Phase, PlannerOptions, Policy, Produced, Role, Rule, Spent, Stage, Transition, Verdict, Violation, WorkItem, WorkflowState };
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkTMKCALFT_cjs=require('../chunk-TMKCALFT.cjs');require('../chunk-2IKIBB73.cjs'),require('../chunk-23P7C25E.cjs'),require('../chunk-S3BXVHO7.cjs');Object.defineProperty(exports,"CHANGE_GATE",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.e}});Object.defineProperty(exports,"DEFAULT_DELIVERABLES",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.b}});Object.defineProperty(exports,"DEFAULT_DELIVER_BY",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.c}});Object.defineProperty(exports,"DEFAULT_PHASE_IDS",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.a}});Object.defineProperty(exports,"DONE",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.k}});Object.defineProperty(exports,"GATE_ID",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.d}});Object.defineProperty(exports,"REVIEW",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.j}});Object.defineProperty(exports,"WATERFALL_VOCABULARY",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.K}});Object.defineProperty(exports,"WORK",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.i}});Object.defineProperty(exports,"approveChange",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.z}});Object.defineProperty(exports,"baselinePhase",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.x}});Object.defineProperty(exports,"configOf",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.g}});Object.defineProperty(exports,"currentPhase",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.s}});Object.defineProperty(exports,"defaultPhases",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.f}});Object.defineProperty(exports,"deliverRoleFor",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.L}});Object.defineProperty(exports,"getPhase",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.o}});Object.defineProperty(exports,"isFrozen",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.t}});Object.defineProperty(exports,"itemsInPhase",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.q}});Object.defineProperty(exports,"lastToPhase",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.w}});Object.defineProperty(exports,"missingDeliverables",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.v}});Object.defineProperty(exports,"missingTraces",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.C}});Object.defineProperty(exports,"openPhase",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.r}});Object.defineProperty(exports,"phaseIndex",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.n}});Object.defineProperty(exports,"phaseOf",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.p}});Object.defineProperty(exports,"phaseReport",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.M}});Object.defineProperty(exports,"phasesOf",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.l}});Object.defineProperty(exports,"producedKinds",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.u}});Object.defineProperty(exports,"rejectChange",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.A}});Object.defineProperty(exports,"reopenPhases",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.y}});Object.defineProperty(exports,"traceabilityMatrix",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.B}});Object.defineProperty(exports,"validateWaterfallConfig",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.h}});Object.defineProperty(exports,"wantPhase",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.D}});Object.defineProperty(exports,"waterfall",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.N}});Object.defineProperty(exports,"waterfallAfterDecide",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.F}});Object.defineProperty(exports,"waterfallCeremonies",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.E}});Object.defineProperty(exports,"waterfallMetrics",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.G}});Object.defineProperty(exports,"waterfallRoles",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.H}});Object.defineProperty(exports,"waterfallRules",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.I}});Object.defineProperty(exports,"waterfallStages",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.J}});Object.defineProperty(exports,"withPhases",{enumerable:true,get:function(){return chunkTMKCALFT_cjs.m}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkKSKEFYY7_cjs=require('../chunk-KSKEFYY7.cjs');require('../chunk-CWBH7H52.cjs'),require('../chunk-SJRRQZ3R.cjs'),require('../chunk-S3BXVHO7.cjs');Object.defineProperty(exports,"CHANGE_GATE",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.e}});Object.defineProperty(exports,"DEFAULT_DELIVERABLES",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.b}});Object.defineProperty(exports,"DEFAULT_DELIVER_BY",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.c}});Object.defineProperty(exports,"DEFAULT_PHASE_IDS",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.a}});Object.defineProperty(exports,"DONE",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.k}});Object.defineProperty(exports,"GATE_ID",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.d}});Object.defineProperty(exports,"REVIEW",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.j}});Object.defineProperty(exports,"WATERFALL_VOCABULARY",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.K}});Object.defineProperty(exports,"WORK",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.i}});Object.defineProperty(exports,"approveChange",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.z}});Object.defineProperty(exports,"baselinePhase",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.x}});Object.defineProperty(exports,"configOf",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.g}});Object.defineProperty(exports,"currentPhase",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.s}});Object.defineProperty(exports,"defaultPhases",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.f}});Object.defineProperty(exports,"deliverRoleFor",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.L}});Object.defineProperty(exports,"getPhase",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.o}});Object.defineProperty(exports,"isFrozen",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.t}});Object.defineProperty(exports,"itemsInPhase",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.q}});Object.defineProperty(exports,"lastToPhase",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.w}});Object.defineProperty(exports,"missingDeliverables",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.v}});Object.defineProperty(exports,"missingTraces",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.C}});Object.defineProperty(exports,"openPhase",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.r}});Object.defineProperty(exports,"phaseIndex",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.n}});Object.defineProperty(exports,"phaseOf",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.p}});Object.defineProperty(exports,"phaseReport",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.M}});Object.defineProperty(exports,"phasesOf",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.l}});Object.defineProperty(exports,"producedKinds",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.u}});Object.defineProperty(exports,"rejectChange",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.A}});Object.defineProperty(exports,"reopenPhases",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.y}});Object.defineProperty(exports,"traceabilityMatrix",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.B}});Object.defineProperty(exports,"validateWaterfallConfig",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.h}});Object.defineProperty(exports,"wantPhase",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.D}});Object.defineProperty(exports,"waterfall",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.N}});Object.defineProperty(exports,"waterfallAfterDecide",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.F}});Object.defineProperty(exports,"waterfallCeremonies",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.E}});Object.defineProperty(exports,"waterfallMetrics",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.G}});Object.defineProperty(exports,"waterfallRoles",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.H}});Object.defineProperty(exports,"waterfallRules",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.I}});Object.defineProperty(exports,"waterfallStages",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.J}});Object.defineProperty(exports,"withPhases",{enumerable:true,get:function(){return chunkKSKEFYY7_cjs.m}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- export{e as CHANGE_GATE,b as DEFAULT_DELIVERABLES,c as DEFAULT_DELIVER_BY,a as DEFAULT_PHASE_IDS,k as DONE,d as GATE_ID,j as REVIEW,K as WATERFALL_VOCABULARY,i as WORK,z as approveChange,x as baselinePhase,g as configOf,s as currentPhase,f as defaultPhases,L as deliverRoleFor,o as getPhase,t as isFrozen,q as itemsInPhase,w as lastToPhase,v as missingDeliverables,C as missingTraces,r as openPhase,n as phaseIndex,p as phaseOf,M as phaseReport,l as phasesOf,u as producedKinds,A as rejectChange,y as reopenPhases,B as traceabilityMatrix,h as validateWaterfallConfig,D as wantPhase,N as waterfall,F as waterfallAfterDecide,E as waterfallCeremonies,G as waterfallMetrics,H as waterfallRoles,I as waterfallRules,J as waterfallStages,m as withPhases}from'../chunk-BJEOTG6P.mjs';import'../chunk-ZX4DAMTG.mjs';import'../chunk-FLCYD2QF.mjs';import'../chunk-2FRRD6A3.mjs';//# sourceMappingURL=index.mjs.map
1
+ export{e as CHANGE_GATE,b as DEFAULT_DELIVERABLES,c as DEFAULT_DELIVER_BY,a as DEFAULT_PHASE_IDS,k as DONE,d as GATE_ID,j as REVIEW,K as WATERFALL_VOCABULARY,i as WORK,z as approveChange,x as baselinePhase,g as configOf,s as currentPhase,f as defaultPhases,L as deliverRoleFor,o as getPhase,t as isFrozen,q as itemsInPhase,w as lastToPhase,v as missingDeliverables,C as missingTraces,r as openPhase,n as phaseIndex,p as phaseOf,M as phaseReport,l as phasesOf,u as producedKinds,A as rejectChange,y as reopenPhases,B as traceabilityMatrix,h as validateWaterfallConfig,D as wantPhase,N as waterfall,F as waterfallAfterDecide,E as waterfallCeremonies,G as waterfallMetrics,H as waterfallRoles,I as waterfallRules,J as waterfallStages,m as withPhases}from'../chunk-NDORREWR.mjs';import'../chunk-GFH2FEZH.mjs';import'../chunk-SHAPFMVP.mjs';import'../chunk-2FRRD6A3.mjs';//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ex-workflow",
3
- "version": "0.3.0-stage",
3
+ "version": "0.4.0-stage",
4
4
  "description": "Methodology engine for AI teams: Scrum, Kanban and Waterfall as data-driven state machines on top of ex-flow",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -91,6 +91,16 @@
91
91
  "default": "./dist/cli/index.cjs"
92
92
  }
93
93
  },
94
+ "./schema": {
95
+ "import": {
96
+ "types": "./dist/schema/index.d.ts",
97
+ "default": "./dist/schema/index.mjs"
98
+ },
99
+ "require": {
100
+ "types": "./dist/schema/index.d.cts",
101
+ "default": "./dist/schema/index.cjs"
102
+ }
103
+ },
94
104
  "./types": {
95
105
  "import": {
96
106
  "types": "./dist/types.d.ts",
@@ -113,6 +123,9 @@
113
123
  "waterfall": [
114
124
  "dist/waterfall/index.d.ts"
115
125
  ],
126
+ "schema": [
127
+ "dist/schema/index.d.ts"
128
+ ],
116
129
  "adapters": [
117
130
  "dist/adapters/index.d.ts"
118
131
  ],
@@ -140,7 +153,9 @@
140
153
  "typecheck": "tsc --noEmit",
141
154
  "size": "node scripts/size.mjs",
142
155
  "check:dist": "node scripts/check-dist.mjs && node scripts/check-exports.mjs",
143
- "ci": "pnpm format:check && pnpm lint && pnpm typecheck && pnpm test && pnpm minify && pnpm check:dist && pnpm size",
156
+ "schema:gen": "node scripts/gen-schema.mjs",
157
+ "schema:check": "node scripts/gen-schema.mjs --check",
158
+ "ci": "pnpm format:check && pnpm lint && pnpm typecheck && pnpm schema:check && pnpm test && pnpm minify && pnpm check:dist && pnpm size",
144
159
  "clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
145
160
  "prepublishOnly": "pnpm run ci",
146
161
  "prepare": "husky"
@@ -154,6 +169,7 @@
154
169
  "husky": "^9.1.7",
155
170
  "oxfmt": "^0.45.0",
156
171
  "oxlint": "^1.19.0",
172
+ "ts-json-schema-generator": "^2.9.0",
157
173
  "tsup": "^8.5.1",
158
174
  "tsx": "^4.20.6",
159
175
  "typescript": "^5.9.3"
@@ -1,6 +0,0 @@
1
- 'use strict';var chunkS3BXVHO7_cjs=require('./chunk-S3BXVHO7.cjs'),promises=require('fs/promises'),crypto=require('crypto'),n=require('path');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var n__default=/*#__PURE__*/_interopDefault(n);var c=".workflow";function y(t){return n__default.default.join(t,c,"state.json")}async function g(t,e){let i=`${t}.tmp-${process.pid}-${crypto.randomBytes(4).toString("hex")}`;try{await promises.mkdir(n__default.default.dirname(t),{recursive:!0}),await promises.writeFile(i,e,"utf8"),await promises.rename(i,t);}catch(r){await promises.unlink(i).catch(()=>{}),chunkS3BXVHO7_cjs.b("invalid-input",`cannot write ${t}: ${r.message}`,"check the directory exists and is writable");}}async function E(t,e,i={}){let{retries:r=40,intervalMs:d=50,staleMs:m=6e4}=i,a=n__default.default.join(t,c,"state.lock");await promises.mkdir(n__default.default.dirname(a),{recursive:true});let u=false;for(let f=0;!u;f++)try{let s=await promises.open(a,"wx");await s.writeFile(`${process.pid} ${new Date().toISOString()}
2
- `),await s.close(),u=!0;}catch(s){if(s.code!=="EEXIST")throw s;if(await promises.stat(a).then(w=>Date.now()-w.mtimeMs,()=>0)>m){await promises.unlink(a).catch(()=>{});continue}f>=r&&chunkS3BXVHO7_cjs.b("invalid-input","another exwf command holds .workflow/state.lock","retry, or delete the file if no exwf process is running"),await new Promise(w=>setTimeout(w,d));}try{return await e()}finally{await promises.unlink(a).catch(()=>{});}}async function D(t,e){await g(y(t),JSON.stringify(e,null,2)+`
3
- `);}async function M(t){let e=y(t),i;try{i=await promises.readFile(e,"utf8");}catch{chunkS3BXVHO7_cjs.b("invalid-input",`no workflow state at ${e}`,"run `exwf init <scrum|kanban|waterfall> --config <file>` in this directory first");}let r;try{r=JSON.parse(i);}catch(f){chunkS3BXVHO7_cjs.b("invalid-input",`${e} is not valid JSON: ${f.message}`,"restore it from git or re-run exwf init");}(typeof r!="object"||r===null||Array.isArray(r))&&chunkS3BXVHO7_cjs.b("invalid-input",`${e} does not contain a workflow state object`,"restore it from git or re-run exwf init");let d=r;d.version!==1&&chunkS3BXVHO7_cjs.b("state-version",`${e} has schema version ${String(d.version)}; this ex-workflow reads version 1`,"upgrade ex-workflow, or run the migration this version documents in its changelog");let m=n__default.default.join(t,c,"roles"),a=[];try{a=(await promises.readdir(m)).filter(f=>f.endsWith(".json"));}catch{}let u={...d.roles};for(let f of a){let s=n__default.default.join(m,f),l;try{l=JSON.parse(await promises.readFile(s,"utf8"));}catch(w){chunkS3BXVHO7_cjs.b("invalid-input",`role manifest ${s} is not valid JSON: ${w.message}`,"fix or delete that manifest");}(typeof l!="object"||l===null||typeof l.id!="string")&&chunkS3BXVHO7_cjs.b("invalid-input",`role manifest ${s} is not an object with a string id`,"a role manifest needs at least an id"),u[l.id]||(u[l.id]=l);}return {...d,roles:u}}function k(t,e){return n__default.default.resolve(e).startsWith(n__default.default.resolve(t,c)+n__default.default.sep)||chunkS3BXVHO7_cjs.b("invalid-input",`${e} resolves outside ${c}/`,"use a plain item id (letters, digits, - _ .)"),e}async function R(t,e){let i=k(t,n__default.default.join(t,c,"briefs",`${e.item.id}.json`));return await g(i,JSON.stringify(e,null,2)+`
4
- `),i}async function T(t,e,i){let r=k(t,n__default.default.join(t,c,"handoffs",`${e.item}-${i}.json`));return await g(r,JSON.stringify(e,null,2)+`
5
- `),r}exports.a=c;exports.b=y;exports.c=E;exports.d=D;exports.e=M;exports.f=R;exports.g=T;//# sourceMappingURL=chunk-6R3YFUUV.cjs.map
6
- //# sourceMappingURL=chunk-6R3YFUUV.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/adapters/file.ts"],"names":["WORKFLOW_DIR","statePath","root","path","writeAtomic","file","content","tmp","randomBytes","mkdir","writeFile","rename","e","unlink","fail","withStateLock","fn","opts","retries","intervalMs","staleMs","lock","held","attempt","fh","open","stat","st","resolve","saveState","state","loadState","raw","readFile","parsed","rolesDir","manifests","readdir","roles","manifestPath","role","inWorkflowDir","saveBrief","brief","saveHandoff","handoff","seq"],"mappings":"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","file":"chunk-6R3YFUUV.cjs","sourcesContent":["import { mkdir, open, readFile, readdir, rename, stat, unlink, writeFile } from \"node:fs/promises\";\nimport { randomBytes } from \"node:crypto\";\nimport path from \"node:path\";\nimport { fail } from \"../errors.ts\";\nimport type { Brief, Handoff, Role, WorkflowState } from \"../types.ts\";\n\nexport const WORKFLOW_DIR = \".workflow\";\n\nexport function statePath(root: string): string {\n return path.join(root, WORKFLOW_DIR, \"state.json\");\n}\n\nasync function writeAtomic(file: string, content: string): Promise<void> {\n const tmp = `${file}.tmp-${process.pid}-${randomBytes(4).toString(\"hex\")}`;\n try {\n await mkdir(path.dirname(file), { recursive: true });\n await writeFile(tmp, content, \"utf8\");\n await rename(tmp, file);\n } catch (e) {\n // best effort: remove the temp file if it was created; ignore failure\n await unlink(tmp).catch(() => undefined);\n fail(\n \"invalid-input\",\n `cannot write ${file}: ${(e as Error).message}`,\n \"check the directory exists and is writable\",\n );\n }\n}\n\nexport interface LockOptions {\n retries?: number;\n intervalMs?: number;\n staleMs?: number;\n}\n\n/** Run `fn` while holding `.workflow/state.lock`, so concurrent exwf commands cannot lose each other's updates. */\nexport async function withStateLock<T>(\n root: string,\n fn: () => Promise<T>,\n opts: LockOptions = {},\n): Promise<T> {\n const { retries = 40, intervalMs = 50, staleMs = 60_000 } = opts;\n const lock = path.join(root, WORKFLOW_DIR, \"state.lock\");\n await mkdir(path.dirname(lock), { recursive: true });\n let held = false;\n for (let attempt = 0; !held; attempt++) {\n try {\n const fh = await open(lock, \"wx\");\n await fh.writeFile(`${process.pid} ${new Date().toISOString()}\\n`);\n await fh.close();\n held = true;\n } catch (e) {\n if ((e as NodeJS.ErrnoException).code !== \"EEXIST\") throw e;\n const age = await stat(lock).then(\n (st) => Date.now() - st.mtimeMs,\n () => 0,\n );\n if (age > staleMs) {\n await unlink(lock).catch(() => undefined);\n continue;\n }\n if (attempt >= retries)\n fail(\n \"invalid-input\",\n \"another exwf command holds .workflow/state.lock\",\n \"retry, or delete the file if no exwf process is running\",\n );\n await new Promise((resolve) => setTimeout(resolve, intervalMs));\n }\n }\n try {\n return await fn();\n } finally {\n await unlink(lock).catch(() => undefined);\n }\n}\n\nexport async function saveState(root: string, state: WorkflowState): Promise<void> {\n await writeAtomic(statePath(root), JSON.stringify(state, null, 2) + \"\\n\");\n}\n\nexport async function loadState(root: string): Promise<WorkflowState> {\n const file = statePath(root);\n let raw: string;\n try {\n raw = await readFile(file, \"utf8\");\n } catch {\n fail(\n \"invalid-input\",\n `no workflow state at ${file}`,\n \"run `exwf init <scrum|kanban|waterfall> --config <file>` in this directory first\",\n );\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch (e) {\n fail(\n \"invalid-input\",\n `${file} is not valid JSON: ${(e as Error).message}`,\n \"restore it from git or re-run exwf init\",\n );\n }\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n fail(\n \"invalid-input\",\n `${file} does not contain a workflow state object`,\n \"restore it from git or re-run exwf init\",\n );\n }\n const state = parsed as WorkflowState;\n if (state.version !== 1)\n fail(\n \"state-version\",\n `${file} has schema version ${String(state.version)}; this ex-workflow reads version 1`,\n \"upgrade ex-workflow, or run the migration this version documents in its changelog\",\n );\n const rolesDir = path.join(root, WORKFLOW_DIR, \"roles\");\n let manifests: string[] = [];\n try {\n manifests = (await readdir(rolesDir)).filter((f) => f.endsWith(\".json\"));\n } catch {\n /* no extra roles */\n }\n const roles = { ...state.roles };\n for (const f of manifests) {\n const manifestPath = path.join(rolesDir, f);\n let role: Role;\n try {\n role = JSON.parse(await readFile(manifestPath, \"utf8\")) as Role;\n } catch (e) {\n fail(\n \"invalid-input\",\n `role manifest ${manifestPath} is not valid JSON: ${(e as Error).message}`,\n \"fix or delete that manifest\",\n );\n }\n if (typeof role !== \"object\" || role === null || typeof role.id !== \"string\") {\n fail(\n \"invalid-input\",\n `role manifest ${manifestPath} is not an object with a string id`,\n \"a role manifest needs at least an id\",\n );\n }\n if (!roles[role.id]) roles[role.id] = role;\n }\n return { ...state, roles };\n}\n\nfunction inWorkflowDir(root: string, file: string): string {\n if (!path.resolve(file).startsWith(path.resolve(root, WORKFLOW_DIR) + path.sep))\n fail(\n \"invalid-input\",\n `${file} resolves outside ${WORKFLOW_DIR}/`,\n \"use a plain item id (letters, digits, - _ .)\",\n );\n return file;\n}\n\nexport async function saveBrief(root: string, brief: Brief): Promise<string> {\n const file = inWorkflowDir(\n root,\n path.join(root, WORKFLOW_DIR, \"briefs\", `${brief.item.id}.json`),\n );\n await writeAtomic(file, JSON.stringify(brief, null, 2) + \"\\n\");\n return file;\n}\n\nexport async function saveHandoff(root: string, handoff: Handoff, seq: number): Promise<string> {\n const file = inWorkflowDir(\n root,\n path.join(root, WORKFLOW_DIR, \"handoffs\", `${handoff.item}-${seq}.json`),\n );\n await writeAtomic(file, JSON.stringify(handoff, null, 2) + \"\\n\");\n return file;\n}\n"]}
@@ -1,2 +0,0 @@
1
- 'use strict';var chunkNN3XJUHP_cjs=require('./chunk-NN3XJUHP.cjs'),chunk4A4TD4MH_cjs=require('./chunk-4A4TD4MH.cjs'),chunk7HZXZF3L_cjs=require('./chunk-7HZXZF3L.cjs'),chunkTMKCALFT_cjs=require('./chunk-TMKCALFT.cjs'),chunk2IKIBB73_cjs=require('./chunk-2IKIBB73.cjs'),chunk23P7C25E_cjs=require('./chunk-23P7C25E.cjs'),chunk6R3YFUUV_cjs=require('./chunk-6R3YFUUV.cjs'),chunkS3BXVHO7_cjs=require('./chunk-S3BXVHO7.cjs'),promises=require('fs/promises'),w=require('path');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var w__default=/*#__PURE__*/_interopDefault(w);var v={scrum:chunk4A4TD4MH_cjs.k,kanban:chunk7HZXZF3L_cjs.I,waterfall:chunkTMKCALFT_cjs.N},g=["exwf init <scrum|kanban|waterfall> --config <file> [--roles <file>]","exwf add <item.json> [--by who] exwf edit <id> <patch.json> [--by who]","exwf next [--max n] exwf complete <id> <handoff.json> --tokens-in n --tokens-out n --duration-ms n --model m","exwf ceremony <name> [input.json] [--by who]","exwf decide <pendingId> approve|reject [--by who] [--note text]","exwf status | board | metrics | pending | lessons","exwf validate <action.json> exwf role add <manifest.json> | role list"];function B(r){let t=[],f={};for(let i=0;i<r.length;i++){let k=r[i];if(k.startsWith("--")){let o=k.slice(2),u=r[i+1];u!==void 0&&!u.startsWith("--")?(f[o]=u,i++):f[o]="true";}else t.push(k);}return {positional:t,flags:f}}async function x(r){try{return JSON.parse(await promises.readFile(r,"utf8"))}catch(t){return chunkS3BXVHO7_cjs.b("invalid-input",`cannot read JSON from ${r}: ${t.message}`,"check the path and that the file is valid JSON")}}function h(r){let t=Object.hasOwn(v,r.methodology)?v[r.methodology]:void 0;return t||chunkS3BXVHO7_cjs.b("config-invalid",`methodology "${r.methodology}" is not available in this build`,`available: ${Object.keys(v).join(", ")}`),t()}function O(r,t){let f=Number(r[t]);return Number.isFinite(f)||chunkS3BXVHO7_cjs.b("invalid-input",`--${t} must be a number (got ${JSON.stringify(r[t])})`,`pass --${t} <n>`),f}var z=new Set(["init","add","edit","next","complete","ceremony","decide"]);async function ut(r,t){let[f,i]=B(r).positional,k=f!==void 0&&(z.has(f)||f==="role"&&i==="add");try{return k?await chunk6R3YFUUV_cjs.c(t,()=>_(r,t)):await _(r,t)}catch(o){if(o instanceof chunkS3BXVHO7_cjs.a)return {exit:1,out:{ok:false,error:o.toJSON()}};throw o}}async function _(r,t){let{positional:f,flags:i}=B(r),[k,...o]=f,u=i.by??"human",m=new Date().toISOString();switch(k){case "init":{let[e]=o,n=e&&Object.hasOwn(v,e)?v[e]:void 0;if(!n||!i.config)return {exit:2,out:{ok:false,usage:g}};try{await promises.stat(chunk6R3YFUUV_cjs.b(t)),chunkS3BXVHO7_cjs.b("invalid-input",`${chunk6R3YFUUV_cjs.b(t)} already exists`,"delete .workflow/state.json to start over");}catch(d){if(d instanceof chunkS3BXVHO7_cjs.a||d.code!=="ENOENT")throw d}let s=await x(w__default.default.resolve(t,i.config)),a=i.roles?await x(w__default.default.resolve(t,i.roles)):void 0,c=chunk23P7C25E_cjs.N(a?{methodology:n(),config:s,roles:a,by:u,now:m}:{methodology:n(),config:s,by:u,now:m});return await chunk6R3YFUUV_cjs.d(t,c.state),{exit:0,out:{ok:true,warnings:c.warnings,state:{methodology:c.state.methodology,stages:c.state.stages.map(d=>d.id),roles:Object.keys(c.state.roles)}}}}case "add":{if(!o[0])return {exit:2,out:{ok:false,usage:g}};let e=await chunk6R3YFUUV_cjs.e(t),n=await x(w__default.default.resolve(t,o[0])),s=chunk23P7C25E_cjs.M(e,h(e),{type:"item.add",by:u,payload:{item:n}},a=>chunk23P7C25E_cjs.v(a,n,u,m));return await chunk6R3YFUUV_cjs.d(t,s.state),{exit:0,out:{ok:true,warnings:s.warnings,item:chunk23P7C25E_cjs.u(s.state,n.id)}}}case "edit":{if(!o[0]||!o[1])return {exit:2,out:{ok:false,usage:g}};let e=await chunk6R3YFUUV_cjs.e(t),n=o[0],s=await x(w__default.default.resolve(t,o[1])),a=chunk23P7C25E_cjs.M(e,h(e),{type:"item.edit",by:u,payload:{id:n,patch:s}},c=>chunk23P7C25E_cjs.w(c,n,s,u,m));return await chunk6R3YFUUV_cjs.d(t,a.state),{exit:0,out:{ok:true,warnings:a.warnings,item:chunk23P7C25E_cjs.u(a.state,n)}}}case "next":{let e=await chunk6R3YFUUV_cjs.e(t),n=i.max?{max:O(i,"max"),now:m}:{now:m},s=chunkNN3XJUHP_cjs.b(e,h(e),n);await chunk6R3YFUUV_cjs.d(t,s.state);for(let a of s.briefs)await chunk6R3YFUUV_cjs.f(t,a);return {exit:0,out:{ok:true,reason:s.reason??null,skipped:s.skipped,briefs:s.briefs}}}case "complete":{if(!o[0]||!o[1])return {exit:2,out:{ok:false,usage:g}};let e=await chunk6R3YFUUV_cjs.e(t),n=await x(w__default.default.resolve(t,o[1]));n.item!==o[0]&&chunkS3BXVHO7_cjs.b("handoff-invalid",`handoff.item "${n.item}" differs from the command's item "${o[0]}"`,"make them match");let s=i.role??n.role,a=O(i,"duration-ms"),c={item:o[0],role:s,model:i.model??"",tokensIn:O(i,"tokens-in"),tokensOut:O(i,"tokens-out"),durationMs:a,startedAt:new Date(Date.parse(m)-a).toISOString(),endedAt:m},d=chunkNN3XJUHP_cjs.c(e,h(e),{...n,role:s},c,m);return await chunk6R3YFUUV_cjs.d(t,d.state),await chunk6R3YFUUV_cjs.g(t,n,d.state.events.length),{exit:0,out:{ok:true,warnings:d.warnings,item:chunk23P7C25E_cjs.u(d.state,o[0])}}}case "ceremony":{if(!o[0])return {exit:2,out:{ok:false,usage:g}};let e=await chunk6R3YFUUV_cjs.e(t),n=h(e),s=Object.hasOwn(n.ceremonies,o[0])?n.ceremonies[o[0]]:void 0;s||chunkS3BXVHO7_cjs.b("unknown-ceremony",`"${o[0]}" is not a ${n.name} ceremony`,`available: ${Object.keys(n.ceremonies).join(", ")}`);let a=o[1]?await x(w__default.default.resolve(t,o[1])):{},c=s(e,{...a,by:u,now:m});return await chunk6R3YFUUV_cjs.d(t,c.state),{exit:0,out:{ok:true,warnings:c.warnings,lastEvent:chunk23P7C25E_cjs.d(c.state)}}}case "decide":{if(!o[0]||o[1]!=="approve"&&o[1]!=="reject")return {exit:2,out:{ok:false,usage:g}};let e=await chunk6R3YFUUV_cjs.e(t),n=e.pending.find(a=>a.id===o[0]),s=chunk23P7C25E_cjs.J(e,o[0],o[1],u,i.note??"",m,h(e));return await chunk6R3YFUUV_cjs.d(t,s),{exit:0,out:{ok:true,item:n?.item?chunk23P7C25E_cjs.u(s,n.item):null}}}case "status":{let e=await chunk6R3YFUUV_cjs.e(t),n=h(e),s={todo:0,in_progress:0,blocked:0,review:0,awaiting_human:0,done:0,dropped:0};for(let a of Object.values(e.items))s[a.status]+=1;return {exit:0,out:{ok:true,methodology:e.methodology,openIteration:chunk2IKIBB73_cjs.f(e)??null,counts:s,pending:e.pending,lastEvent:chunk23P7C25E_cjs.d(e),report:n.report?n.report(e):null}}}case "board":{let e=await chunk6R3YFUUV_cjs.e(t);return {exit:0,out:{ok:true,columns:e.stages.map(s=>({stage:s.id,wipLimit:s.wipLimit??null,items:Object.values(e.items).filter(a=>a.stage===s.id&&a.status!=="dropped").map(a=>({id:a.id,title:a.title,status:a.status,role:a.role??null,age:a.transitions.length?Date.parse(m)-Date.parse(a.transitions[a.transitions.length-1].at):null}))}))}}}case "metrics":{let e=await chunk6R3YFUUV_cjs.e(t);return {exit:0,out:{ok:true,metrics:h(e).metrics(e)}}}case "pending":return {exit:0,out:{ok:true,pending:(await chunk6R3YFUUV_cjs.e(t)).pending}};case "lessons":return {exit:0,out:{ok:true,lessons:(await chunk6R3YFUUV_cjs.e(t)).lessons}};case "validate":{if(!o[0])return {exit:2,out:{ok:false,usage:g}};let e=await chunk6R3YFUUV_cjs.e(t),n=await x(w__default.default.resolve(t,o[0]));return {exit:0,out:{ok:true,violations:chunk23P7C25E_cjs.L(e,h(e),n)}}}case "role":{let e=await chunk6R3YFUUV_cjs.e(t);if(o[0]==="list")return {exit:0,out:{ok:true,roles:Object.keys(e.roles),detail:e.roles}};if(o[0]==="add"&&o[1]){let n=chunk23P7C25E_cjs.f(e,await x(w__default.default.resolve(t,o[1])),u,m);return await chunk6R3YFUUV_cjs.d(t,n),{exit:0,out:{ok:true,roles:Object.keys(n.roles)}}}return {exit:2,out:{ok:false,usage:g}}}default:return {exit:2,out:{ok:false,usage:g}}}}exports.a=g;exports.b=B;exports.c=ut;//# sourceMappingURL=chunk-AUZIQPFT.cjs.map
2
- //# sourceMappingURL=chunk-AUZIQPFT.cjs.map